diff --git a/VERSION.txt b/VERSION.txt index ca280fefc96f..d3c5b687ad22 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -5.8.34 \ No newline at end of file +5.8.35 \ No newline at end of file diff --git a/app/Export/CSV/ClientExport.php b/app/Export/CSV/ClientExport.php index 87171a8dc8e2..37928d44f351 100644 --- a/app/Export/CSV/ClientExport.php +++ b/app/Export/CSV/ClientExport.php @@ -127,7 +127,7 @@ class ClientExport extends BaseExport $query = Client::query()->with('contacts') ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/CreditExport.php b/app/Export/CSV/CreditExport.php index 9d2885c7d107..dc402741bd0e 100644 --- a/app/Export/CSV/CreditExport.php +++ b/app/Export/CSV/CreditExport.php @@ -103,7 +103,7 @@ class CreditExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/ExpenseExport.php b/app/Export/CSV/ExpenseExport.php index 8713a4b2db69..07ba62c88a90 100644 --- a/app/Export/CSV/ExpenseExport.php +++ b/app/Export/CSV/ExpenseExport.php @@ -83,7 +83,7 @@ class ExpenseExport extends BaseExport ->with('client') ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/InvoiceExport.php b/app/Export/CSV/InvoiceExport.php index e7b08a7ec3ac..267ae158a14a 100644 --- a/app/Export/CSV/InvoiceExport.php +++ b/app/Export/CSV/InvoiceExport.php @@ -58,7 +58,7 @@ class InvoiceExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/InvoiceItemExport.php b/app/Export/CSV/InvoiceItemExport.php index 791bfeddad17..19a976e828c5 100644 --- a/app/Export/CSV/InvoiceItemExport.php +++ b/app/Export/CSV/InvoiceItemExport.php @@ -71,7 +71,7 @@ class InvoiceItemExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/PurchaseOrderExport.php b/app/Export/CSV/PurchaseOrderExport.php index 2a1a77956e44..3451bb7be88e 100644 --- a/app/Export/CSV/PurchaseOrderExport.php +++ b/app/Export/CSV/PurchaseOrderExport.php @@ -59,7 +59,7 @@ class PurchaseOrderExport extends BaseExport ->withTrashed() ->with('vendor') ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/PurchaseOrderItemExport.php b/app/Export/CSV/PurchaseOrderItemExport.php index 358af941509f..76107e04158c 100644 --- a/app/Export/CSV/PurchaseOrderItemExport.php +++ b/app/Export/CSV/PurchaseOrderItemExport.php @@ -63,7 +63,7 @@ class PurchaseOrderItemExport extends BaseExport $query = PurchaseOrder::query() ->withTrashed() ->with('vendor')->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/QuoteExport.php b/app/Export/CSV/QuoteExport.php index 195354419c67..a279d5a67b40 100644 --- a/app/Export/CSV/QuoteExport.php +++ b/app/Export/CSV/QuoteExport.php @@ -65,7 +65,7 @@ class QuoteExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/QuoteItemExport.php b/app/Export/CSV/QuoteItemExport.php index e4be3a330bdd..566b811029d5 100644 --- a/app/Export/CSV/QuoteItemExport.php +++ b/app/Export/CSV/QuoteItemExport.php @@ -66,7 +66,7 @@ class QuoteItemExport extends BaseExport $query = Quote::query() ->withTrashed() ->with('client')->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/RecurringInvoiceExport.php b/app/Export/CSV/RecurringInvoiceExport.php index c56338c6b3e1..87afe6e7d90e 100644 --- a/app/Export/CSV/RecurringInvoiceExport.php +++ b/app/Export/CSV/RecurringInvoiceExport.php @@ -57,7 +57,7 @@ class RecurringInvoiceExport extends BaseExport ->withTrashed() ->with('client') ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/TaskExport.php b/app/Export/CSV/TaskExport.php index 861ea68bb6df..33685b5092c2 100644 --- a/app/Export/CSV/TaskExport.php +++ b/app/Export/CSV/TaskExport.php @@ -68,7 +68,7 @@ class TaskExport extends BaseExport $query = Task::query() ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Export/CSV/VendorExport.php b/app/Export/CSV/VendorExport.php index 86fef19f7336..5b328da387f3 100644 --- a/app/Export/CSV/VendorExport.php +++ b/app/Export/CSV/VendorExport.php @@ -62,7 +62,7 @@ class VendorExport extends BaseExport $query = Vendor::query()->with('contacts') ->withTrashed() ->where('company_id', $this->company->id) - ->where('is_deleted', $this->input['include_deleted']); + ->where('is_deleted', $this->input['include_deleted'] ?? false); $query = $this->addDateRange($query); diff --git a/app/Helpers/Bank/Nordigen/Nordigen.php b/app/Helpers/Bank/Nordigen/Nordigen.php index 33c62d076c8d..a07daf857bdf 100644 --- a/app/Helpers/Bank/Nordigen/Nordigen.php +++ b/app/Helpers/Bank/Nordigen/Nordigen.php @@ -97,11 +97,11 @@ class Nordigen return $it->transform($out); } catch (\Exception $e) { - if (strpos($e->getMessage(), "Invalid Account ID") !== false) { - return false; - } - throw $e; + nlog("Nordigen getAccount() failed => {$account_id} => " . $e->getMessage()); + + return false; + } } diff --git a/app/Http/Requests/Project/StoreProjectRequest.php b/app/Http/Requests/Project/StoreProjectRequest.php index 8f8e4760df0c..3bc1bca1bc52 100644 --- a/app/Http/Requests/Project/StoreProjectRequest.php +++ b/app/Http/Requests/Project/StoreProjectRequest.php @@ -44,6 +44,7 @@ class StoreProjectRequest extends Request $rules['name'] = 'required'; $rules['client_id'] = 'required|exists:clients,id,company_id,'.$user->company()->id; + $rules['budgeted_hours'] = 'sometimes|numeric'; if (isset($this->number)) { $rules['number'] = Rule::unique('projects')->where('company_id', $user->company()->id); @@ -74,6 +75,9 @@ class StoreProjectRequest extends Request $input['color'] = ''; } + if(array_key_exists('budgeted_hours', $input) && empty($input['budgeted_hours'])) + $input['budgeted_hours'] = 0; + $this->replace($input); } diff --git a/app/Http/Requests/Project/UpdateProjectRequest.php b/app/Http/Requests/Project/UpdateProjectRequest.php index e68c90383790..cbcf6882cf89 100644 --- a/app/Http/Requests/Project/UpdateProjectRequest.php +++ b/app/Http/Requests/Project/UpdateProjectRequest.php @@ -45,6 +45,8 @@ class UpdateProjectRequest extends Request $rules['number'] = Rule::unique('projects')->where('company_id', $user->company()->id)->ignore($this->project->id); } + $rules['budgeted_hours'] = 'sometimes|numeric'; + if ($this->file('documents') && is_array($this->file('documents'))) { $rules['documents.*'] = $this->file_validation; } elseif ($this->file('documents')) { @@ -73,6 +75,10 @@ class UpdateProjectRequest extends Request if (array_key_exists('color', $input) && is_null($input['color'])) { $input['color'] = ''; } + + if(array_key_exists('budgeted_hours', $input) && empty($input['budgeted_hours'])) { + $input['budgeted_hours'] = 0; + } $this->replace($input); } diff --git a/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php b/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php index 158a9d37cf4e..579474c116a6 100644 --- a/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php +++ b/app/Http/Requests/TaskScheduler/StoreSchedulerRequest.php @@ -66,7 +66,7 @@ class StoreSchedulerRequest extends Request 'parameters.end_date' => ['bail', 'sometimes', 'date:Y-m-d', 'required_if:parameters.date_rate,custom', 'after_or_equal:parameters.start_date'], 'parameters.entity' => ['bail', 'sometimes', 'string', 'in:invoice,credit,quote,purchase_order'], 'parameters.entity_id' => ['bail', 'sometimes', 'string'], - 'parameters.report_name' => ['bail','sometimes', 'string', 'required_if:template,email_report','in:vendor,purchase_order_item,purchase_order,ar_detailed,ar_summary,client_balance,tax_summary,profitloss,client_sales,user_sales,product_sales,activity,client,contact,client_contact,credit,document,expense,invoice,invoice_item,quote,quote_item,recurring_invoice,payment,product,task'], + 'parameters.report_name' => ['bail','sometimes', 'string', 'required_if:template,email_report','in:vendor,purchase_order_item,purchase_order,ar_detailed,ar_summary,client_balance,tax_summary,profitloss,client_sales,user_sales,product_sales,activity,activities,client,clients,client_contact,client_contacts,credit,credits,document,documents,expense,expenses,invoice,invoices,invoice_item,invoice_items,quote,quotes,quote_item,quote_items,recurring_invoice,recurring_invoices,payment,payments,product,products,task,tasks'], 'parameters.date_key' => ['bail','sometimes', 'string'], 'parameters.status' => ['bail','sometimes', 'nullable', 'string'], ]; diff --git a/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php b/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php index 9a21d7183003..ef3843008fc2 100644 --- a/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php +++ b/app/Http/Requests/TaskScheduler/UpdateSchedulerRequest.php @@ -66,9 +66,9 @@ class UpdateSchedulerRequest extends Request 'parameters.end_date' => ['bail', 'sometimes', 'date:Y-m-d', 'required_if:parameters.date_rate,custom', 'after_or_equal:parameters.start_date'], 'parameters.entity' => ['bail', 'sometimes', 'string', 'in:invoice,credit,quote,purchase_order'], 'parameters.entity_id' => ['bail', 'sometimes', 'string'], - 'parameters.report_name' => ['bail','sometimes', 'string', 'required_if:template,email_report','in:vendor,purchase_order_item,purchase_order,ar_detailed,ar_summary,client_balance,tax_summary,profitloss,client_sales,user_sales,product_sales,activity,client,contact,client_contact,credit,document,expense,invoice,invoice_item,quote,quote_item,recurring_invoice,payment,product,task'], + 'parameters.report_name' => ['bail','sometimes', 'string', 'required_if:template,email_report','in:vendor,purchase_order_item,purchase_order,ar_detailed,ar_summary,client_balance,tax_summary,profitloss,client_sales,user_sales,product_sales,activity,activities,client,clients,client_contact,client_contacts,credit,credits,document,documents,expense,expenses,invoice,invoices,invoice_item,invoice_items,quote,quotes,quote_item,quote_items,recurring_invoice,recurring_invoices,payment,payments,product,products,task,tasks'], 'parameters.date_key' => ['bail','sometimes', 'string'], - 'parameters.status' => ['bail','sometimes', 'string'], + 'parameters.status' => ['bail','sometimes', 'nullable', 'string'], ]; return $rules; diff --git a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php index d23e78659cec..dd7c6c657b9e 100644 --- a/app/Jobs/Bank/ProcessBankTransactionsNordigen.php +++ b/app/Jobs/Bank/ProcessBankTransactionsNordigen.php @@ -114,23 +114,26 @@ class ProcessBankTransactionsNordigen implements ShouldQueue private function updateAccount() { - if (!$this->nordigen->isAccountActive($this->bank_integration->nordigen_account_id)) { + $is_account_active = $this->nordigen->isAccountActive($this->bank_integration->nordigen_account_id); + $account = $this->nordigen->getAccount($this->bank_integration->nordigen_account_id); + + if (!$is_account_active || !$account) { $this->bank_integration->disabled_upstream = true; $this->bank_integration->save(); $this->stop_loop = false; + nlog("Nordigen: account inactive: " . $this->bank_integration->nordigen_account_id); - // @turbo124 @todo send email for expired account $this->nordigen->disabledAccountEmail($this->bank_integration); return; } - $this->nordigen_account = $this->nordigen->getAccount($this->bank_integration->nordigen_account_id); + $this->nordigen_account = $account; $this->bank_integration->disabled_upstream = false; - $this->bank_integration->bank_account_status = $this->nordigen_account['account_status']; - $this->bank_integration->balance = $this->nordigen_account['current_balance']; + $this->bank_integration->bank_account_status = $account['account_status']; + $this->bank_integration->balance = $account['current_balance']; $this->bank_integration->save(); } diff --git a/app/Jobs/Ninja/TaskScheduler.php b/app/Jobs/Ninja/TaskScheduler.php index ff200ba0f2ba..84189f98f04e 100644 --- a/app/Jobs/Ninja/TaskScheduler.php +++ b/app/Jobs/Ninja/TaskScheduler.php @@ -60,6 +60,7 @@ class TaskScheduler implements ShouldQueue nlog("Doing job {$scheduler->name}"); try { + //@var \App\Models\Schedule $scheduler $scheduler->service()->runTask(); } catch(\Exception $e) { nlog($e->getMessage()); diff --git a/app/Services/Scheduler/EmailReport.php b/app/Services/Scheduler/EmailReport.php index 2351153bfff1..b4d5b0809321 100644 --- a/app/Services/Scheduler/EmailReport.php +++ b/app/Services/Scheduler/EmailReport.php @@ -11,34 +11,35 @@ namespace App\Services\Scheduler; -use App\Export\CSV\ClientExport; -use App\Export\CSV\ContactExport; -use App\Export\CSV\CreditExport; -use App\Export\CSV\DocumentExport; -use App\Export\CSV\ExpenseExport; -use App\Export\CSV\InvoiceExport; -use App\Export\CSV\InvoiceItemExport; -use App\Export\CSV\PaymentExport; -use App\Export\CSV\ProductExport; -use App\Export\CSV\ProductSalesExport; -use App\Export\CSV\QuoteExport; -use App\Export\CSV\QuoteItemExport; -use App\Export\CSV\RecurringInvoiceExport; -use App\Export\CSV\TaskExport; -use App\Jobs\Mail\NinjaMailerJob; -use App\Jobs\Mail\NinjaMailerObject; -use App\Mail\DownloadReport; use App\Models\Client; use App\Models\Scheduler; +use App\Mail\DownloadReport; +use App\Export\CSV\TaskExport; +use App\Export\CSV\QuoteExport; +use App\Utils\Traits\MakesHash; +use App\Export\CSV\ClientExport; +use App\Export\CSV\CreditExport; +use App\Utils\Traits\MakesDates; +use App\Export\CSV\ContactExport; +use App\Export\CSV\ExpenseExport; +use App\Export\CSV\InvoiceExport; +use App\Export\CSV\PaymentExport; +use App\Export\CSV\ProductExport; +use App\Jobs\Mail\NinjaMailerJob; +use App\Export\CSV\ActivityExport; +use App\Export\CSV\DocumentExport; +use App\Export\CSV\QuoteItemExport; +use App\Services\Report\ProfitLoss; +use App\Jobs\Mail\NinjaMailerObject; +use App\Export\CSV\InvoiceItemExport; +use App\Export\CSV\ProductSalesExport; use App\Services\Report\ARDetailReport; use App\Services\Report\ARSummaryReport; -use App\Services\Report\ClientBalanceReport; -use App\Services\Report\ClientSalesReport; -use App\Services\Report\ProfitLoss; -use App\Services\Report\TaxSummaryReport; use App\Services\Report\UserSalesReport; -use App\Utils\Traits\MakesDates; -use App\Utils\Traits\MakesHash; +use App\Services\Report\TaxSummaryReport; +use App\Export\CSV\RecurringInvoiceExport; +use App\Services\Report\ClientSalesReport; +use App\Services\Report\ClientBalanceReport; class EmailReport { @@ -77,19 +78,33 @@ class EmailReport 'client_sales' => $export = (new ClientSalesReport($this->scheduler->company, $data)), 'user_sales' => $export = (new UserSalesReport($this->scheduler->company, $data)), 'profitloss' => $export = (new ProfitLoss($this->scheduler->company, $data)), + 'activity' => $export = (new ActivityExport($this->scheduler->company, $data)), + 'activities' => $export = (new ActivityExport($this->scheduler->company, $data)), 'client' => $export = (new ClientExport($this->scheduler->company, $data)), + 'clients' => $export = (new ClientExport($this->scheduler->company, $data)), 'client_contact' => $export = (new ContactExport($this->scheduler->company, $data)), + 'client_contacts' => $export = (new ContactExport($this->scheduler->company, $data)), 'credit' => $export = (new CreditExport($this->scheduler->company, $data)), + 'credits' => $export = (new CreditExport($this->scheduler->company, $data)), 'document' => $export = (new DocumentExport($this->scheduler->company, $data)), + 'documents' => $export = (new DocumentExport($this->scheduler->company, $data)), 'expense' => $export = (new ExpenseExport($this->scheduler->company, $data)), + 'expenses' => $export = (new ExpenseExport($this->scheduler->company, $data)), 'invoice' => $export = (new InvoiceExport($this->scheduler->company, $data)), + 'invoices' => $export = (new InvoiceExport($this->scheduler->company, $data)), 'invoice_item' => $export = (new InvoiceItemExport($this->scheduler->company, $data)), + 'invoice_items' => $export = (new InvoiceItemExport($this->scheduler->company, $data)), 'quote' => $export = (new QuoteExport($this->scheduler->company, $data)), + 'quotes' => $export = (new QuoteExport($this->scheduler->company, $data)), 'quote_item' => $export = (new QuoteItemExport($this->scheduler->company, $data)), + 'quote_items' => $export = (new QuoteItemExport($this->scheduler->company, $data)), 'recurring_invoice' => $export = (new RecurringInvoiceExport($this->scheduler->company, $data)), + 'recurring_invoices' => $export = (new RecurringInvoiceExport($this->scheduler->company, $data)), 'payment' => $export = (new PaymentExport($this->scheduler->company, $data)), + 'payments' => $export = (new PaymentExport($this->scheduler->company, $data)), 'product' => $export = (new ProductExport($this->scheduler->company, $data)), - 'task' => $export = (new TaskExport($this->scheduler->company, $data)), + 'products' => $export = (new ProductExport($this->scheduler->company, $data)), + 'tasks' => $export = (new TaskExport($this->scheduler->company, $data)), default => $export = false, }; diff --git a/app/Transformers/ProjectTransformer.php b/app/Transformers/ProjectTransformer.php index 6f66dd23f15c..227e26571e85 100644 --- a/app/Transformers/ProjectTransformer.php +++ b/app/Transformers/ProjectTransformer.php @@ -49,6 +49,12 @@ class ProjectTransformer extends EntityTransformer public function includeClient(Project $project): \League\Fractal\Resource\Item { + + if (!$project->client) { + nlog("Project {$project->hashed_id} does not have a client attached - this project is in a bad state"); + return null; + } + $transformer = new ClientTransformer($this->serializer); return $this->includeItem($project->client, $transformer, Client::class); diff --git a/config/ninja.php b/config/ninja.php index c381de3b6b2b..18a32359d864 100644 --- a/config/ninja.php +++ b/config/ninja.php @@ -17,8 +17,8 @@ return [ 'require_https' => env('REQUIRE_HTTPS', true), 'app_url' => rtrim(env('APP_URL', ''), '/'), 'app_domain' => env('APP_DOMAIN', 'invoicing.co'), - 'app_version' => env('APP_VERSION', '5.8.34'), - 'app_tag' => env('APP_TAG', '5.8.34'), + 'app_version' => env('APP_VERSION', '5.8.35'), + 'app_tag' => env('APP_TAG', '5.8.35'), 'minimum_client_version' => '5.0.16', 'terms_version' => '1.0.1', 'api_secret' => env('API_SECRET', false), diff --git a/lang/en/texts.php b/lang/en/texts.php index 50da2e50344d..2d7982a8d62e 100644 --- a/lang/en/texts.php +++ b/lang/en/texts.php @@ -460,7 +460,7 @@ $lang = array( 'edit_token' => 'Edit Token', 'delete_token' => 'Delete Token', 'token' => 'Token', - 'add_gateway' => 'Add Gateway', + 'add_gateway' => 'Add Payment Gateway', 'delete_gateway' => 'Delete Gateway', 'edit_gateway' => 'Edit Gateway', 'updated_gateway' => 'Successfully updated gateway', @@ -5251,6 +5251,9 @@ $lang = array( 'payment_type_help' => 'The default payment type to be used for payments', 'quote_valid_until_help' => 'The number of days that the quote is valid for', 'expense_payment_type_help' => 'The default expense payment type to be used', + 'paylater' => 'Pay in 4', + 'payment_provider' => 'Payment Provider', + ); return $lang; diff --git a/public/build/assets/app-01291e40.js b/public/build/assets/app-01291e40.js deleted file mode 100644 index 9dc720821003..000000000000 --- a/public/build/assets/app-01291e40.js +++ /dev/null @@ -1,109 +0,0 @@ -import{A as ll}from"./index-08e160a7.js";import{c as Ut,g as ul}from"./_commonjsHelpers-725317a4.js";var cl={visa:{niceType:"Visa",type:"visa",patterns:[4],gaps:[4,8,12],lengths:[16,18,19],code:{name:"CVV",size:3}},mastercard:{niceType:"Mastercard",type:"mastercard",patterns:[[51,55],[2221,2229],[223,229],[23,26],[270,271],2720],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},"american-express":{niceType:"American Express",type:"american-express",patterns:[34,37],gaps:[4,10],lengths:[15],code:{name:"CID",size:4}},"diners-club":{niceType:"Diners Club",type:"diners-club",patterns:[[300,305],36,38,39],gaps:[4,10],lengths:[14,16,19],code:{name:"CVV",size:3}},discover:{niceType:"Discover",type:"discover",patterns:[6011,[644,649],65],gaps:[4,8,12],lengths:[16,19],code:{name:"CID",size:3}},jcb:{niceType:"JCB",type:"jcb",patterns:[2131,1800,[3528,3589]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVV",size:3}},unionpay:{niceType:"UnionPay",type:"unionpay",patterns:[620,[624,626],[62100,62182],[62184,62187],[62185,62197],[62200,62205],[622010,622999],622018,[622019,622999],[62207,62209],[622126,622925],[623,626],6270,6272,6276,[627700,627779],[627781,627799],[6282,6289],6291,6292,810,[8110,8131],[8132,8151],[8152,8163],[8164,8171]],gaps:[4,8,12],lengths:[14,15,16,17,18,19],code:{name:"CVN",size:3}},maestro:{niceType:"Maestro",type:"maestro",patterns:[493698,[5e5,504174],[504176,506698],[506779,508999],[56,59],63,67,6],gaps:[4,8,12],lengths:[12,13,14,15,16,17,18,19],code:{name:"CVC",size:3}},elo:{niceType:"Elo",type:"elo",patterns:[401178,401179,438935,457631,457632,431274,451416,457393,504175,[506699,506778],[509e3,509999],627780,636297,636368,[650031,650033],[650035,650051],[650405,650439],[650485,650538],[650541,650598],[650700,650718],[650720,650727],[650901,650978],[651652,651679],[655e3,655019],[655021,655058]],gaps:[4,8,12],lengths:[16],code:{name:"CVE",size:3}},mir:{niceType:"Mir",type:"mir",patterns:[[2200,2204]],gaps:[4,8,12],lengths:[16,17,18,19],code:{name:"CVP2",size:3}},hiper:{niceType:"Hiper",type:"hiper",patterns:[637095,63737423,63743358,637568,637599,637609,637612],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}},hipercard:{niceType:"Hipercard",type:"hipercard",patterns:[606282],gaps:[4,8,12],lengths:[16],code:{name:"CVC",size:3}}},fl=cl,Qn={},mn={};Object.defineProperty(mn,"__esModule",{value:!0});mn.clone=void 0;function dl(e){return e?JSON.parse(JSON.stringify(e)):null}mn.clone=dl;var Zn={};Object.defineProperty(Zn,"__esModule",{value:!0});Zn.matches=void 0;function pl(e,r,n){var a=String(r).length,s=e.substr(0,a),u=parseInt(s,10);return r=parseInt(String(r).substr(0,s.length),10),n=parseInt(String(n).substr(0,s.length),10),u>=r&&u<=n}function hl(e,r){return r=String(r),r.substring(0,e.length)===e.substring(0,r.length)}function gl(e,r){return Array.isArray(r)?pl(e,r[0],r[1]):hl(e,r)}Zn.matches=gl;Object.defineProperty(Qn,"__esModule",{value:!0});Qn.addMatchingCardsToResults=void 0;var ml=mn,vl=Zn;function yl(e,r,n){var a,s;for(a=0;a=s&&(b.matchStrength=s),n.push(b);break}}}Qn.addMatchingCardsToResults=yl;var ei={};Object.defineProperty(ei,"__esModule",{value:!0});ei.isValidInputType=void 0;function bl(e){return typeof e=="string"||e instanceof String}ei.isValidInputType=bl;var ti={};Object.defineProperty(ti,"__esModule",{value:!0});ti.findBestMatch=void 0;function _l(e){var r=e.filter(function(n){return n.matchStrength}).length;return r>0&&r===e.length}function wl(e){return _l(e)?e.reduce(function(r,n){return!r||Number(r.matchStrength)Al?fn(!1,!1):Cl.test(e)?fn(!1,!0):fn(!0,!0)}ri.cardholderName=Tl;var ni={};function Pl(e){for(var r=0,n=!1,a=e.length-1,s;a>=0;)s=parseInt(e.charAt(a),10),n&&(s*=2,s>9&&(s=s%10+1)),n=!n,r+=s,a--;return r%10===0}var Rl=Pl;Object.defineProperty(ni,"__esModule",{value:!0});ni.cardNumber=void 0;var Nl=Rl,qa=Oo;function hr(e,r,n){return{card:e,isPotentiallyValid:r,isValid:n}}function Ml(e,r){r===void 0&&(r={});var n,a,s;if(typeof e!="string"&&typeof e!="number")return hr(null,!1,!1);var u=String(e).replace(/-|\s/g,"");if(!/^\d*$/.test(u))return hr(null,!1,!1);var b=qa(u);if(b.length===0)return hr(null,!1,!1);if(b.length!==1)return hr(null,!0,!1);var m=b[0];if(r.maxLength&&u.length>r.maxLength)return hr(m,!1,!1);m.type===qa.types.UNIONPAY&&r.luhnValidateUnionPay!==!0?a=!0:a=Nl(u),s=Math.max.apply(null,m.lengths),r.maxLength&&(s=Math.min(r.maxLength,s));for(var I=0;I4)return er(!1,!1);var m=parseInt(e,10),I=Number(String(s).substr(2,2)),U=!1;if(a===2){if(String(s).substr(0,2)===e)return er(!1,!0);n=I===m,U=m>=I&&m<=I+r}else a===4&&(n=s===m,U=m>=s&&m<=s+r);return er(U,U,n)}Vr.expirationYear=Ll;var oi={};Object.defineProperty(oi,"__esModule",{value:!0});oi.isArray=void 0;oi.isArray=Array.isArray||function(e){return Object.prototype.toString.call(e)==="[object Array]"};Object.defineProperty(ai,"__esModule",{value:!0});ai.parseDate=void 0;var jl=Vr,Il=oi;function Dl(e){var r=Number(e[0]),n;return r===0?2:r>1||r===1&&Number(e[1])>2?1:r===1?(n=e.substr(1),jl.expirationYear(n).isPotentiallyValid?1:2):e.length===5?1:e.length>5?2:1}function $l(e){var r;if(/^\d{4}-\d{1,2}$/.test(e)?r=e.split("-").reverse():/\//.test(e)?r=e.split(/\s*\/\s*/g):/\s/.test(e)&&(r=e.split(/ +/g)),Il.isArray(r))return{month:r[0]||"",year:r.slice(1).join()};var n=Dl(e),a=e.substr(0,n);return{month:a,year:e.substr(a.length)}}ai.parseDate=$l;var yn={};Object.defineProperty(yn,"__esModule",{value:!0});yn.expirationMonth=void 0;function dn(e,r,n){return{isValid:e,isPotentiallyValid:r,isValidForThisYear:n||!1}}function Fl(e){var r=new Date().getMonth()+1;if(typeof e!="string")return dn(!1,!1);if(e.replace(/\s/g,"")===""||e==="0")return dn(!1,!0);if(!/^\d*$/.test(e))return dn(!1,!1);var n=parseInt(e,10);if(isNaN(Number(e)))return dn(!1,!1);var a=n>0&&n<13;return dn(a,a,a&&n>=r)}yn.expirationMonth=Fl;var Xi=Ut&&Ut.__assign||function(){return Xi=Object.assign||function(e){for(var r,n=1,a=arguments.length;nr?e[n]:r;return r}function jr(e,r){return{isValid:e,isPotentiallyValid:r}}function Wl(e,r){return r===void 0&&(r=Co),r=r instanceof Array?r:[r],typeof e!="string"||!/^\d*$/.test(e)?jr(!1,!1):ql(r,e.length)?jr(!0,!0):e.lengthzl(r)?jr(!1,!1):jr(!0,!0)}si.cvv=Wl;var li={};Object.defineProperty(li,"__esModule",{value:!0});li.postalCode=void 0;var Kl=3;function qi(e,r){return{isValid:e,isPotentiallyValid:r}}function Jl(e,r){r===void 0&&(r={});var n=r.minLength||Kl;return typeof e!="string"?qi(!1,!1):e.lengthfunction(){return r||(0,e[To(e)[0]])((r={exports:{}}).exports,r),r.exports},pu=(e,r,n,a)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of To(r))!du.call(e,s)&&s!==n&&Ao(e,s,{get:()=>r[s],enumerable:!(a=cu(r,s))||a.enumerable});return e},Je=(e,r,n)=>(n=e!=null?uu(fu(e)):{},pu(r||!e||!e.__esModule?Ao(n,"default",{value:e,enumerable:!0}):n,e)),ft=Yt({"../alpine/packages/alpinejs/dist/module.cjs.js"(e,r){var n=Object.create,a=Object.defineProperty,s=Object.getOwnPropertyDescriptor,u=Object.getOwnPropertyNames,b=Object.getPrototypeOf,m=Object.prototype.hasOwnProperty,I=(t,i)=>function(){return i||(0,t[u(t)[0]])((i={exports:{}}).exports,i),i.exports},U=(t,i)=>{for(var o in i)a(t,o,{get:i[o],enumerable:!0})},se=(t,i,o,c)=>{if(i&&typeof i=="object"||typeof i=="function")for(let p of u(i))!m.call(t,p)&&p!==o&&a(t,p,{get:()=>i[p],enumerable:!(c=s(i,p))||c.enumerable});return t},V=(t,i,o)=>(o=t!=null?n(b(t)):{},se(i||!t||!t.__esModule?a(o,"default",{value:t,enumerable:!0}):o,t)),ce=t=>se(a({},"__esModule",{value:!0}),t),re=I({"node_modules/@vue/shared/dist/shared.cjs.js"(t){Object.defineProperty(t,"__esModule",{value:!0});function i(y,K){const Z=Object.create(null),ue=y.split(",");for(let Ue=0;Ue!!Z[Ue.toLowerCase()]:Ue=>!!Z[Ue]}var o={1:"TEXT",2:"CLASS",4:"STYLE",8:"PROPS",16:"FULL_PROPS",32:"HYDRATE_EVENTS",64:"STABLE_FRAGMENT",128:"KEYED_FRAGMENT",256:"UNKEYED_FRAGMENT",512:"NEED_PATCH",1024:"DYNAMIC_SLOTS",2048:"DEV_ROOT_FRAGMENT",[-1]:"HOISTED",[-2]:"BAIL"},c={1:"STABLE",2:"DYNAMIC",3:"FORWARDED"},p="Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt",d=i(p),g=2;function x(y,K=0,Z=y.length){let ue=y.split(/(\r?\n)/);const Ue=ue.filter((bt,ct)=>ct%2===1);ue=ue.filter((bt,ct)=>ct%2===0);let rt=0;const yt=[];for(let bt=0;bt=K){for(let ct=bt-g;ct<=bt+g||Z>rt;ct++){if(ct<0||ct>=ue.length)continue;const un=ct+1;yt.push(`${un}${" ".repeat(Math.max(3-String(un).length,0))}| ${ue[ct]}`);const kr=ue[ct].length,Wn=Ue[ct]&&Ue[ct].length||0;if(ct===bt){const Lr=K-(rt-(kr+Wn)),Ui=Math.max(1,Z>rt?kr-Lr:Z-K);yt.push(" | "+" ".repeat(Lr)+"^".repeat(Ui))}else if(ct>bt){if(Z>rt){const Lr=Math.max(Math.min(Z-rt,kr),1);yt.push(" | "+"^".repeat(Lr))}rt+=kr+Wn}}break}return yt.join(` -`)}var k="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",Q=i(k),Ie=i(k+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected"),Ze=/[>/="'\u0009\u000a\u000c\u0020]/,$e={};function Ke(y){if($e.hasOwnProperty(y))return $e[y];const K=Ze.test(y);return K&&console.error(`unsafe attribute name: ${y}`),$e[y]=!K}var At={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv"},$t=i("animation-iteration-count,border-image-outset,border-image-slice,border-image-width,box-flex,box-flex-group,box-ordinal-group,column-count,columns,flex,flex-grow,flex-positive,flex-shrink,flex-negative,flex-order,grid-row,grid-row-end,grid-row-span,grid-row-start,grid-column,grid-column-end,grid-column-span,grid-column-start,font-weight,line-clamp,line-height,opacity,order,orphans,tab-size,widows,z-index,zoom,fill-opacity,flood-opacity,stop-opacity,stroke-dasharray,stroke-dashoffset,stroke-miterlimit,stroke-opacity,stroke-width"),Se=i("accept,accept-charset,accesskey,action,align,allow,alt,async,autocapitalize,autocomplete,autofocus,autoplay,background,bgcolor,border,buffered,capture,challenge,charset,checked,cite,class,code,codebase,color,cols,colspan,content,contenteditable,contextmenu,controls,coords,crossorigin,csp,data,datetime,decoding,default,defer,dir,dirname,disabled,download,draggable,dropzone,enctype,enterkeyhint,for,form,formaction,formenctype,formmethod,formnovalidate,formtarget,headers,height,hidden,high,href,hreflang,http-equiv,icon,id,importance,integrity,ismap,itemprop,keytype,kind,label,lang,language,loading,list,loop,low,manifest,max,maxlength,minlength,media,min,multiple,muted,name,novalidate,open,optimum,pattern,ping,placeholder,poster,preload,radiogroup,readonly,referrerpolicy,rel,required,reversed,rows,rowspan,sandbox,scope,scoped,selected,shape,size,sizes,slot,span,spellcheck,src,srcdoc,srclang,srcset,start,step,style,summary,tabindex,target,title,translate,type,usemap,value,width,wrap");function He(y){if(Rt(y)){const K={};for(let Z=0;Z{if(Z){const ue=Z.split(qe);ue.length>1&&(K[ue[0].trim()]=ue[1].trim())}}),K}function Pt(y){let K="";if(!y)return K;for(const Z in y){const ue=y[Z],Ue=Z.startsWith("--")?Z:qn(Z);(cr(ue)||typeof ue=="number"&&$t(Ue))&&(K+=`${Ue}:${ue};`)}return K}function Ft(y){let K="";if(cr(y))K=y;else if(Rt(y))for(let Z=0;Z]/;function Mi(y){const K=""+y,Z=Ni.exec(K);if(!Z)return K;let ue="",Ue,rt,yt=0;for(rt=Z.index;rt||--!>|Er(Z,K))}var kn=y=>y==null?"":Bt(y)?JSON.stringify(y,ji,2):String(y),ji=(y,K)=>ur(K)?{[`Map(${K.size})`]:[...K.entries()].reduce((Z,[ue,Ue])=>(Z[`${ue} =>`]=Ue,Z),{})}:Nt(K)?{[`Set(${K.size})`]:[...K.values()]}:Bt(K)&&!Rt(K)&&!Fn(K)?String(K):K,Ii=["bigInt","optionalChaining","nullishCoalescingOperator"],rn=Object.freeze({}),nn=Object.freeze([]),an=()=>{},Or=()=>!1,Cr=/^on[^a-z]/,Ar=y=>Cr.test(y),Tr=y=>y.startsWith("onUpdate:"),Ln=Object.assign,jn=(y,K)=>{const Z=y.indexOf(K);Z>-1&&y.splice(Z,1)},In=Object.prototype.hasOwnProperty,Dn=(y,K)=>In.call(y,K),Rt=Array.isArray,ur=y=>fr(y)==="[object Map]",Nt=y=>fr(y)==="[object Set]",on=y=>y instanceof Date,sn=y=>typeof y=="function",cr=y=>typeof y=="string",Di=y=>typeof y=="symbol",Bt=y=>y!==null&&typeof y=="object",Pr=y=>Bt(y)&&sn(y.then)&&sn(y.catch),$n=Object.prototype.toString,fr=y=>$n.call(y),$i=y=>fr(y).slice(8,-1),Fn=y=>fr(y)==="[object Object]",Bn=y=>cr(y)&&y!=="NaN"&&y[0]!=="-"&&""+parseInt(y,10)===y,Hn=i(",key,ref,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),dr=y=>{const K=Object.create(null);return Z=>K[Z]||(K[Z]=y(Z))},Un=/-(\w)/g,Vn=dr(y=>y.replace(Un,(K,Z)=>Z?Z.toUpperCase():"")),Fi=/\B([A-Z])/g,qn=dr(y=>y.replace(Fi,"-$1").toLowerCase()),pr=dr(y=>y.charAt(0).toUpperCase()+y.slice(1)),Bi=dr(y=>y?`on${pr(y)}`:""),ln=(y,K)=>y!==K&&(y===y||K===K),Hi=(y,K)=>{for(let Z=0;Z{Object.defineProperty(y,K,{configurable:!0,enumerable:!1,value:Z})},Nr=y=>{const K=parseFloat(y);return isNaN(K)?y:K},Mr,zn=()=>Mr||(Mr=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});t.EMPTY_ARR=nn,t.EMPTY_OBJ=rn,t.NO=Or,t.NOOP=an,t.PatchFlagNames=o,t.babelParserDefaultPlugins=Ii,t.camelize=Vn,t.capitalize=pr,t.def=Rr,t.escapeHtml=Mi,t.escapeHtmlComment=ki,t.extend=Ln,t.generateCodeFrame=x,t.getGlobalThis=zn,t.hasChanged=ln,t.hasOwn=Dn,t.hyphenate=qn,t.invokeArrayFns=Hi,t.isArray=Rt,t.isBooleanAttr=Ie,t.isDate=on,t.isFunction=sn,t.isGloballyWhitelisted=d,t.isHTMLTag=xr,t.isIntegerKey=Bn,t.isKnownAttr=Se,t.isMap=ur,t.isModelListener=Tr,t.isNoUnitNumericStyleProp=$t,t.isObject=Bt,t.isOn=Ar,t.isPlainObject=Fn,t.isPromise=Pr,t.isReservedProp=Hn,t.isSSRSafeAttrName=Ke,t.isSVGTag=Ri,t.isSet=Nt,t.isSpecialBooleanAttr=Q,t.isString=cr,t.isSymbol=Di,t.isVoidTag=Sr,t.looseEqual=Er,t.looseIndexOf=Mn,t.makeMap=i,t.normalizeClass=Ft,t.normalizeStyle=He,t.objectToString=$n,t.parseStringStyle=vt,t.propsToAttrMap=At,t.remove=jn,t.slotFlagsText=c,t.stringifyStyle=Pt,t.toDisplayString=kn,t.toHandlerKey=Bi,t.toNumber=Nr,t.toRawType=$i,t.toTypeString=fr}}),E=I({"node_modules/@vue/shared/index.js"(t,i){i.exports=re()}}),v=I({"node_modules/@vue/reactivity/dist/reactivity.cjs.js"(t){Object.defineProperty(t,"__esModule",{value:!0});var i=E(),o=new WeakMap,c=[],p,d=Symbol("iterate"),g=Symbol("Map key iterate");function x(l){return l&&l._isEffect===!0}function k(l,T=i.EMPTY_OBJ){x(l)&&(l=l.raw);const R=Ze(l,T);return T.lazy||R(),R}function Q(l){l.active&&($e(l),l.options.onStop&&l.options.onStop(),l.active=!1)}var Ie=0;function Ze(l,T){const R=function(){if(!R.active)return l();if(!c.includes(R)){$e(R);try{return Se(),c.push(R),p=R,l()}finally{c.pop(),He(),p=c[c.length-1]}}};return R.id=Ie++,R.allowRecurse=!!T.allowRecurse,R._isEffect=!0,R.active=!0,R.raw=l,R.deps=[],R.options=T,R}function $e(l){const{deps:T}=l;if(T.length){for(let R=0;R{gt&>.forEach(Mt=>{(Mt!==p||Mt.allowRecurse)&&it.add(Mt)})};if(T==="clear")ke.forEach(_t);else if(R==="length"&&i.isArray(l))ke.forEach((gt,Mt)=>{(Mt==="length"||Mt>=ne)&&_t(gt)});else switch(R!==void 0&&_t(ke.get(R)),T){case"add":i.isArray(l)?i.isIntegerKey(R)&&_t(ke.get("length")):(_t(ke.get(d)),i.isMap(l)&&_t(ke.get(g)));break;case"delete":i.isArray(l)||(_t(ke.get(d)),i.isMap(l)&&_t(ke.get(g)));break;case"set":i.isMap(l)&&_t(ke.get(d));break}const cn=gt=>{gt.options.onTrigger&>.options.onTrigger({effect:gt,target:l,key:R,type:T,newValue:ne,oldValue:J,oldTarget:ge}),gt.options.scheduler?gt.options.scheduler(gt):gt()};it.forEach(cn)}var vt=i.makeMap("__proto__,__v_isRef,__isVue"),Pt=new Set(Object.getOwnPropertyNames(Symbol).map(l=>Symbol[l]).filter(i.isSymbol)),Ft=Sr(),wr=Sr(!1,!0),en=Sr(!0),tn=Sr(!0,!0),xr=Ri();function Ri(){const l={};return["includes","indexOf","lastIndexOf"].forEach(T=>{l[T]=function(...R){const ne=y(this);for(let ge=0,ke=this.length;ge{l[T]=function(...R){$t();const ne=y(this)[T].apply(this,R);return He(),ne}}),l}function Sr(l=!1,T=!1){return function(ne,J,ge){if(J==="__v_isReactive")return!l;if(J==="__v_isReadonly")return l;if(J==="__v_raw"&&ge===(l?T?Vn:Un:T?dr:Hn).get(ne))return ne;const ke=i.isArray(ne);if(!l&&ke&&i.hasOwn(xr,J))return Reflect.get(xr,J,ge);const it=Reflect.get(ne,J,ge);return(i.isSymbol(J)?Pt.has(J):vt(J))||(l||Le(ne,"get",J),T)?it:ue(it)?!ke||!i.isIntegerKey(J)?it.value:it:i.isObject(it)?l?ln(it):pr(it):it}}var Ni=Nn(),Mi=Nn(!0);function Nn(l=!1){return function(R,ne,J,ge){let ke=R[ne];if(!l&&(J=y(J),ke=y(ke),!i.isArray(R)&&ue(ke)&&!ue(J)))return ke.value=J,!0;const it=i.isArray(R)&&i.isIntegerKey(ne)?Number(ne)i.isObject(l)?pr(l):l,nn=l=>i.isObject(l)?ln(l):l,an=l=>l,Or=l=>Reflect.getPrototypeOf(l);function Cr(l,T,R=!1,ne=!1){l=l.__v_raw;const J=y(l),ge=y(T);T!==ge&&!R&&Le(J,"get",T),!R&&Le(J,"get",ge);const{has:ke}=Or(J),it=ne?an:R?nn:rn;if(ke.call(J,T))return it(l.get(T));if(ke.call(J,ge))return it(l.get(ge));l!==J&&l.get(T)}function Ar(l,T=!1){const R=this.__v_raw,ne=y(R),J=y(l);return l!==J&&!T&&Le(ne,"has",l),!T&&Le(ne,"has",J),l===J?R.has(l):R.has(l)||R.has(J)}function Tr(l,T=!1){return l=l.__v_raw,!T&&Le(y(l),"iterate",d),Reflect.get(l,"size",l)}function Ln(l){l=y(l);const T=y(this);return Or(T).has.call(T,l)||(T.add(l),qe(T,"add",l,l)),this}function jn(l,T){T=y(T);const R=y(this),{has:ne,get:J}=Or(R);let ge=ne.call(R,l);ge?Bn(R,ne,l):(l=y(l),ge=ne.call(R,l));const ke=J.call(R,l);return R.set(l,T),ge?i.hasChanged(T,ke)&&qe(R,"set",l,T,ke):qe(R,"add",l,T),this}function In(l){const T=y(this),{has:R,get:ne}=Or(T);let J=R.call(T,l);J?Bn(T,R,l):(l=y(l),J=R.call(T,l));const ge=ne?ne.call(T,l):void 0,ke=T.delete(l);return J&&qe(T,"delete",l,void 0,ge),ke}function Dn(){const l=y(this),T=l.size!==0,R=i.isMap(l)?new Map(l):new Set(l),ne=l.clear();return T&&qe(l,"clear",void 0,void 0,R),ne}function Rt(l,T){return function(ne,J){const ge=this,ke=ge.__v_raw,it=y(ke),_t=T?an:l?nn:rn;return!l&&Le(it,"iterate",d),ke.forEach((cn,gt)=>ne.call(J,_t(cn),_t(gt),ge))}}function ur(l,T,R){return function(...ne){const J=this.__v_raw,ge=y(J),ke=i.isMap(ge),it=l==="entries"||l===Symbol.iterator&&ke,_t=l==="keys"&&ke,cn=J[l](...ne),gt=R?an:T?nn:rn;return!T&&Le(ge,"iterate",_t?g:d),{next(){const{value:Mt,done:Vi}=cn.next();return Vi?{value:Mt,done:Vi}:{value:it?[gt(Mt[0]),gt(Mt[1])]:gt(Mt),done:Vi}},[Symbol.iterator](){return this}}}}function Nt(l){return function(...T){{const R=T[0]?`on key "${T[0]}" `:"";console.warn(`${i.capitalize(l)} operation ${R}failed: target is readonly.`,y(this))}return l==="delete"?!1:this}}function on(){const l={get(ge){return Cr(this,ge)},get size(){return Tr(this)},has:Ar,add:Ln,set:jn,delete:In,clear:Dn,forEach:Rt(!1,!1)},T={get(ge){return Cr(this,ge,!1,!0)},get size(){return Tr(this)},has:Ar,add:Ln,set:jn,delete:In,clear:Dn,forEach:Rt(!1,!0)},R={get(ge){return Cr(this,ge,!0)},get size(){return Tr(this,!0)},has(ge){return Ar.call(this,ge,!0)},add:Nt("add"),set:Nt("set"),delete:Nt("delete"),clear:Nt("clear"),forEach:Rt(!0,!1)},ne={get(ge){return Cr(this,ge,!0,!0)},get size(){return Tr(this,!0)},has(ge){return Ar.call(this,ge,!0)},add:Nt("add"),set:Nt("set"),delete:Nt("delete"),clear:Nt("clear"),forEach:Rt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(ge=>{l[ge]=ur(ge,!1,!1),R[ge]=ur(ge,!0,!1),T[ge]=ur(ge,!1,!0),ne[ge]=ur(ge,!0,!0)}),[l,R,T,ne]}var[sn,cr,Di,Bt]=on();function Pr(l,T){const R=T?l?Bt:Di:l?cr:sn;return(ne,J,ge)=>J==="__v_isReactive"?!l:J==="__v_isReadonly"?l:J==="__v_raw"?ne:Reflect.get(i.hasOwn(R,J)&&J in ne?R:ne,J,ge)}var $n={get:Pr(!1,!1)},fr={get:Pr(!1,!0)},$i={get:Pr(!0,!1)},Fn={get:Pr(!0,!0)};function Bn(l,T,R){const ne=y(R);if(ne!==R&&T.call(l,ne)){const J=i.toRawType(l);console.warn(`Reactive ${J} contains both the raw and reactive versions of the same object${J==="Map"?" as keys":""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`)}}var Hn=new WeakMap,dr=new WeakMap,Un=new WeakMap,Vn=new WeakMap;function Fi(l){switch(l){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function qn(l){return l.__v_skip||!Object.isExtensible(l)?0:Fi(i.toRawType(l))}function pr(l){return l&&l.__v_isReadonly?l:Rr(l,!1,Mn,$n,Hn)}function Bi(l){return Rr(l,!1,ji,fr,dr)}function ln(l){return Rr(l,!0,kn,$i,Un)}function Hi(l){return Rr(l,!0,Ii,Fn,Vn)}function Rr(l,T,R,ne,J){if(!i.isObject(l))return console.warn(`value cannot be made reactive: ${String(l)}`),l;if(l.__v_raw&&!(T&&l.__v_isReactive))return l;const ge=J.get(l);if(ge)return ge;const ke=qn(l);if(ke===0)return l;const it=new Proxy(l,ke===2?ne:R);return J.set(l,it),it}function Nr(l){return Mr(l)?Nr(l.__v_raw):!!(l&&l.__v_isReactive)}function Mr(l){return!!(l&&l.__v_isReadonly)}function zn(l){return Nr(l)||Mr(l)}function y(l){return l&&y(l.__v_raw)||l}function K(l){return i.def(l,"__v_skip",!0),l}var Z=l=>i.isObject(l)?pr(l):l;function ue(l){return!!(l&&l.__v_isRef===!0)}function Ue(l){return bt(l)}function rt(l){return bt(l,!0)}var yt=class{constructor(l,T=!1){this._shallow=T,this.__v_isRef=!0,this._rawValue=T?l:y(l),this._value=T?l:Z(l)}get value(){return Le(y(this),"get","value"),this._value}set value(l){l=this._shallow?l:y(l),i.hasChanged(l,this._rawValue)&&(this._rawValue=l,this._value=this._shallow?l:Z(l),qe(y(this),"set","value",l))}};function bt(l,T=!1){return ue(l)?l:new yt(l,T)}function ct(l){qe(y(l),"set","value",l.value)}function un(l){return ue(l)?l.value:l}var kr={get:(l,T,R)=>un(Reflect.get(l,T,R)),set:(l,T,R,ne)=>{const J=l[T];return ue(J)&&!ue(R)?(J.value=R,!0):Reflect.set(l,T,R,ne)}};function Wn(l){return Nr(l)?l:new Proxy(l,kr)}var Lr=class{constructor(l){this.__v_isRef=!0;const{get:T,set:R}=l(()=>Le(this,"get","value"),()=>qe(this,"set","value"));this._get=T,this._set=R}get value(){return this._get()}set value(l){this._set(l)}};function Ui(l){return new Lr(l)}function il(l){zn(l)||console.warn("toRefs() expects a reactive object but received a plain one.");const T=i.isArray(l)?new Array(l.length):{};for(const R in l)T[R]=Va(l,R);return T}var al=class{constructor(l,T){this._object=l,this._key=T,this.__v_isRef=!0}get value(){return this._object[this._key]}set value(l){this._object[this._key]=l}};function Va(l,T){return ue(l[T])?l[T]:new al(l,T)}var ol=class{constructor(l,T,R){this._setter=T,this._dirty=!0,this.__v_isRef=!0,this.effect=k(l,{lazy:!0,scheduler:()=>{this._dirty||(this._dirty=!0,qe(y(this),"set","value"))}}),this.__v_isReadonly=R}get value(){const l=y(this);return l._dirty&&(l._value=this.effect(),l._dirty=!1),Le(l,"get","value"),l._value}set value(l){this._setter(l)}};function sl(l){let T,R;return i.isFunction(l)?(T=l,R=()=>{console.warn("Write operation failed: computed value is readonly")}):(T=l.get,R=l.set),new ol(T,R,i.isFunction(l)||!l.set)}t.ITERATE_KEY=d,t.computed=sl,t.customRef=Ui,t.effect=k,t.enableTracking=Se,t.isProxy=zn,t.isReactive=Nr,t.isReadonly=Mr,t.isRef=ue,t.markRaw=K,t.pauseTracking=$t,t.proxyRefs=Wn,t.reactive=pr,t.readonly=ln,t.ref=Ue,t.resetTracking=He,t.shallowReactive=Bi,t.shallowReadonly=Hi,t.shallowRef=rt,t.stop=Q,t.toRaw=y,t.toRef=Va,t.toRefs=il,t.track=Le,t.trigger=qe,t.triggerRef=ct,t.unref=un}}),_=I({"node_modules/@vue/reactivity/index.js"(t,i){i.exports=v()}}),O={};U(O,{default:()=>nl}),r.exports=ce(O);var M=!1,j=!1,H=[],Te=-1;function D(t){C(t)}function C(t){H.includes(t)||H.push(t),ee()}function N(t){let i=H.indexOf(t);i!==-1&&i>Te&&H.splice(i,1)}function ee(){!j&&!M&&(M=!0,queueMicrotask(be))}function be(){M=!1,j=!0;for(let t=0;tt.effect(i,{scheduler:o=>{Ye?D(o):o()}}),Ge=t.raw}function ht(t){X=t}function xt(t){let i=()=>{};return[c=>{let p=X(c);return t._x_effects||(t._x_effects=new Set,t._x_runEffects=()=>{t._x_effects.forEach(d=>d())}),t._x_effects.add(p),i=()=>{p!==void 0&&(t._x_effects.delete(p),Re(p))},p},()=>{i()}]}function Et(t,i){let o=!0,c,p=X(()=>{let d=t();JSON.stringify(d),o?c=d:queueMicrotask(()=>{i(d,c),c=d}),o=!1});return()=>Re(p)}function we(t,i,o={}){t.dispatchEvent(new CustomEvent(i,{detail:o,bubbles:!0,composed:!0,cancelable:!0}))}function le(t,i){if(typeof ShadowRoot=="function"&&t instanceof ShadowRoot){Array.from(t.children).forEach(p=>le(p,i));return}let o=!1;if(i(t,()=>o=!0),o)return;let c=t.firstElementChild;for(;c;)le(c,i),c=c.nextElementSibling}function Ee(t,...i){console.warn(`Alpine Warning: ${t}`,...i)}var me=!1;function ve(){me&&Ee("Alpine has already been initialized on this page. Calling Alpine.start() more than once can cause problems."),me=!0,document.body||Ee("Unable to initialize. Trying to load Alpine before `` is available. Did you forget to add `defer` in Alpine's `