diff --git a/app/Console/Commands/CheckData.php b/app/Console/Commands/CheckData.php
index 90c26bf07238..65f74b2e49b8 100644
--- a/app/Console/Commands/CheckData.php
+++ b/app/Console/Commands/CheckData.php
@@ -1169,10 +1169,10 @@ class CheckData extends Command
->whereNull('exchange_rate')
->orWhere('exchange_rate', 0)
->cursor()
- ->each(function ($expense){
+ ->each(function ($expense) {
$expense->exchange_rate = 1;
$expense->saveQuietly();
-
+
$this->logMessage("Fixing - exchange rate for expense :: {$expense->id}");
});
diff --git a/app/Console/Commands/CreateSingleAccount.php b/app/Console/Commands/CreateSingleAccount.php
index 4a2146a334f3..08057380766f 100644
--- a/app/Console/Commands/CreateSingleAccount.php
+++ b/app/Console/Commands/CreateSingleAccount.php
@@ -1116,7 +1116,7 @@ class CreateSingleAccount extends Command
private function countryClients($company, $user)
{
-
+
Client::unguard();
Client::create([
diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php
index 382a577102d7..1f4ee4bf6aae 100644
--- a/app/Console/Kernel.php
+++ b/app/Console/Kernel.php
@@ -67,7 +67,7 @@ class Kernel extends ConsoleKernel
/* Checks Rotessa Transactions */
$schedule->job(new TransactionReport())->dailyAt('01:48')->withoutOverlapping()->name('rotessa-transaction-report')->onOneServer();
-
+
/* Stale Invoice Cleanup*/
$schedule->job(new CleanStaleInvoiceOrder())->hourlyAt(30)->withoutOverlapping()->name('stale-invoice-job')->onOneServer();
diff --git a/app/DataMapper/CompanySettings.php b/app/DataMapper/CompanySettings.php
index bbe92d1e7be0..9fde1fee410b 100644
--- a/app/DataMapper/CompanySettings.php
+++ b/app/DataMapper/CompanySettings.php
@@ -515,7 +515,7 @@ class CompanySettings extends BaseSettings
public $quote_schedule_reminder1 = ''; //before_valid_until_date,after_valid_until_date,after_quote_date
public $quote_late_fee_amount1 = 0;
public $quote_late_fee_percent1 = 0;
-
+
public string $payment_flow = 'default'; //smooth
public static $casts = [
diff --git a/app/DataMapper/EmailTemplateDefaults.php b/app/DataMapper/EmailTemplateDefaults.php
index ff24f0d2f1f2..7633b7edd073 100644
--- a/app/DataMapper/EmailTemplateDefaults.php
+++ b/app/DataMapper/EmailTemplateDefaults.php
@@ -120,7 +120,7 @@ class EmailTemplateDefaults
case 'email_quote_subject_reminder1':
return self::emailQuoteReminder1Subject();
-
+
default:
return self::emailInvoiceTemplate();
@@ -131,7 +131,7 @@ class EmailTemplateDefaults
{
return ctrans('texts.quote_reminder_subject', ['quote' => '$number', 'company' => '$company.name']);
}
-
+
public static function emailQuoteReminder1Body()
{
@@ -140,7 +140,7 @@ class EmailTemplateDefaults
return $invoice_message;
}
-
+
public static function emailVendorNotificationSubject()
{
return self::transformText('vendor_notification_subject');
diff --git a/app/DataMapper/Tax/BaseRule.php b/app/DataMapper/Tax/BaseRule.php
index cecf5fd3a83a..1e8de4773eda 100644
--- a/app/DataMapper/Tax/BaseRule.php
+++ b/app/DataMapper/Tax/BaseRule.php
@@ -131,7 +131,8 @@ class BaseRule implements RuleInterface
return $this;
}
- public function shouldCalcTax(): bool {
+ public function shouldCalcTax(): bool
+ {
return $this->should_calc_tax && $this->checkIfInvoiceLocked();
}
/**
@@ -404,9 +405,10 @@ class BaseRule implements RuleInterface
{
$lock_invoices = $this->client->getSetting('lock_invoices');
- if($this->invoice instanceof RecurringInvoice)
+ if($this->invoice instanceof RecurringInvoice) {
return true;
-
+ }
+
switch ($lock_invoices) {
case 'off':
return true;
diff --git a/app/DataMapper/Tax/DE/Rule.php b/app/DataMapper/Tax/DE/Rule.php
index a1b4cb356640..d03306fced24 100644
--- a/app/DataMapper/Tax/DE/Rule.php
+++ b/app/DataMapper/Tax/DE/Rule.php
@@ -107,7 +107,7 @@ class Rule extends BaseRule implements RuleInterface
*/
public function taxReduced($item): self
{
-
+
$this->tax_name1 = $this->tax_name;
$this->tax_rate1 = $this->reduced_tax_rate;
@@ -121,7 +121,7 @@ class Rule extends BaseRule implements RuleInterface
*/
public function zeroRated($item): self
{
-
+
$this->tax_name1 = $this->tax_name;
$this->tax_rate1 = 0;
@@ -242,7 +242,7 @@ class Rule extends BaseRule implements RuleInterface
$this->tax_rate = 0;
$this->reduced_tax_rate = 0;
} elseif($this->client_subregion != $this->client->company->tax_data->seller_subregion && in_array($this->client_subregion, $this->eu_country_codes) && $this->client->vat_number && $this->client->has_valid_vat_number && $this->eu_business_tax_exempt) {
- // nlog("euro zone and tax exempt");
+ // nlog("euro zone and tax exempt");
$this->tax_rate = 0;
$this->reduced_tax_rate = 0;
} elseif(!in_array($this->client_subregion, $this->eu_country_codes) && ($this->foreign_consumer_tax_exempt || $this->foreign_business_tax_exempt)) { //foreign + tax exempt
@@ -251,8 +251,7 @@ class Rule extends BaseRule implements RuleInterface
$this->reduced_tax_rate = 0;
} elseif(!in_array($this->client_subregion, $this->eu_country_codes)) {
$this->defaultForeign();
- } elseif(in_array($this->client_subregion, $this->eu_country_codes) && ((strlen($this->client->vat_number ?? '') == 1) || $this->client->has_valid_vat_number)) { //eu country / no valid vat
- // if(($this->client->company->tax_data->seller_subregion != $this->client_subregion) && $this->client->company->tax_data->regions->EU->has_sales_above_threshold) {
+ } elseif(in_array($this->client_subregion, $this->eu_country_codes) && ((strlen($this->client->vat_number ?? '') == 1) || !$this->client->has_valid_vat_number)) { //eu country / no valid vat
if($this->client->company->tax_data->seller_subregion != $this->client_subregion) {
// nlog("eu zone with sales above threshold");
$this->tax_rate = $this->client->company->tax_data->regions->EU->subregions->{$this->client->country->iso_3166_2}->tax_rate ?? 0;
diff --git a/app/DataMapper/Tax/TaxModel.php b/app/DataMapper/Tax/TaxModel.php
index c5d4afd185bc..ca84290f58a5 100644
--- a/app/DataMapper/Tax/TaxModel.php
+++ b/app/DataMapper/Tax/TaxModel.php
@@ -34,10 +34,10 @@ class TaxModel
if(!$model) {
$this->regions = $this->init();
} else {
-
+
//@phpstan-ignore-next-line
foreach($model as $key => $value) {
- $this->{$key} = $value;
+ $this->{$key} = $value;
}
}
@@ -48,8 +48,7 @@ class TaxModel
public function migrate(): self
{
- if($this->version == 'alpha')
- {
+ if($this->version == 'alpha') {
$this->regions->EU->subregions->PL = new \stdClass();
$this->regions->EU->subregions->PL->tax_rate = 23;
$this->regions->EU->subregions->PL->tax_name = 'VAT';
diff --git a/app/DataProviders/CAProvinces.php b/app/DataProviders/CAProvinces.php
index 6e19b1d74fa1..477ce4ff93ae 100644
--- a/app/DataProviders/CAProvinces.php
+++ b/app/DataProviders/CAProvinces.php
@@ -11,7 +11,8 @@
namespace App\DataProviders;
-final class CAProvinces {
+final class CAProvinces
+{
/**
* The provinces and territories of Canada
*
@@ -39,7 +40,8 @@ final class CAProvinces {
* @param string $abbreviation
* @return string
*/
- public static function getName($abbreviation) {
+ public static function getName($abbreviation)
+ {
return self::$provinces[$abbreviation];
}
@@ -48,7 +50,8 @@ final class CAProvinces {
*
* @return array
*/
- public static function get() {
+ public static function get()
+ {
return self::$provinces;
}
@@ -58,7 +61,8 @@ final class CAProvinces {
* @param string $name
* @return string
*/
- public static function getAbbreviation($name) {
+ public static function getAbbreviation($name)
+ {
return array_search(ucwords($name), self::$provinces);
}
}
diff --git a/app/Events/Client/ClientWasArchived.php b/app/Events/Client/ClientWasArchived.php
index 35699606ad2b..a98241879ebb 100644
--- a/app/Events/Client/ClientWasArchived.php
+++ b/app/Events/Client/ClientWasArchived.php
@@ -58,7 +58,7 @@ class ClientWasArchived implements ShouldBroadcast
public function broadcastWith()
{
-
+
$manager = new Manager();
$manager->setSerializer(new ArraySerializer());
$class = sprintf('App\\Transformers\\%sTransformer', class_basename($this->client));
@@ -79,7 +79,7 @@ class ClientWasArchived implements ShouldBroadcast
*/
public function broadcastOn()
{
-
+
return [
new PrivateChannel("company-{$this->company->company_key}"),
];
diff --git a/app/Exceptions/DuplicatePaymentException.php b/app/Exceptions/DuplicatePaymentException.php
index ba4f33ab2bdf..998b9b31456a 100644
--- a/app/Exceptions/DuplicatePaymentException.php
+++ b/app/Exceptions/DuplicatePaymentException.php
@@ -39,6 +39,6 @@ class DuplicatePaymentException extends Exception
return response()->json([
'message' => 'Duplicate request',
], 400);
-
+
}
}
diff --git a/app/Export/CSV/ActivityExport.php b/app/Export/CSV/ActivityExport.php
index b148c9806daf..bdbc232f6e4c 100644
--- a/app/Export/CSV/ActivityExport.php
+++ b/app/Export/CSV/ActivityExport.php
@@ -129,8 +129,8 @@ class ActivityExport extends BaseExport
$query->cursor()
->each(function ($entity) {
-
- /** @var \App\Models\Activity $entity */
+
+ /** @var \App\Models\Activity $entity */
$this->buildRow($entity);
});
diff --git a/app/Export/CSV/BaseExport.php b/app/Export/CSV/BaseExport.php
index 0fdee8ad6394..9d4bcd2bd4ec 100644
--- a/app/Export/CSV/BaseExport.php
+++ b/app/Export/CSV/BaseExport.php
@@ -1041,7 +1041,7 @@ class BaseExport
$recurring_filters = [];
- if($this->company->getSetting('report_include_drafts')){
+ if($this->company->getSetting('report_include_drafts')) {
$recurring_filters[] = RecurringInvoice::STATUS_DRAFT;
}
@@ -1189,7 +1189,7 @@ class BaseExport
*/
protected function addInvoiceStatusFilter(Builder $query, string $status): Builder
{
-
+
/** @var array $status_parameters */
$status_parameters = explode(',', $status);
@@ -1270,7 +1270,7 @@ class BaseExport
$custom_start_date = now()->startOfYear();
$custom_end_date = now();
}
-
+
switch ($date_range) {
case 'all':
$this->start_date = 'All available data';
@@ -1616,10 +1616,10 @@ class BaseExport
ZipDocuments::dispatch($documents, $this->company, $user);
}
}
-
+
/**
* Tests that the column exists
- * on the table prior to adding it to
+ * on the table prior to adding it to
* the query builder
*
* @param string $table
diff --git a/app/Export/CSV/ClientExport.php b/app/Export/CSV/ClientExport.php
index ec4374948cd8..a3b77eed9f95 100644
--- a/app/Export/CSV/ClientExport.php
+++ b/app/Export/CSV/ClientExport.php
@@ -102,7 +102,7 @@ class ClientExport extends BaseExport
$report = $query->cursor()
->map(function ($client) {
-
+
/** @var \App\Models\Client $client */
$row = $this->buildRow($client);
return $this->processMetaData($row, $client);
@@ -133,7 +133,7 @@ class ClientExport extends BaseExport
$query->where('is_deleted', 0);
}
- $query = $this->addDateRange($query,' clients');
+ $query = $this->addDateRange($query, ' clients');
if($this->input['document_email_attachment'] ?? false) {
$this->queueDocuments($query);
@@ -156,8 +156,8 @@ class ClientExport extends BaseExport
$query->cursor()
->each(function ($client) {
-
- /** @var \App\Models\Client $client */
+
+ /** @var \App\Models\Client $client */
$this->csv->insertOne($this->buildRow($client));
});
diff --git a/app/Export/CSV/CreditExport.php b/app/Export/CSV/CreditExport.php
index 7450b4114611..4c82e62d6fca 100644
--- a/app/Export/CSV/CreditExport.php
+++ b/app/Export/CSV/CreditExport.php
@@ -52,7 +52,7 @@ class CreditExport extends BaseExport
$report = $query->cursor()
->map(function ($credit) {
-
+
/** @var \App\Models\Credit $credit */
$row = $this->buildRow($credit);
return $this->processMetaData($row, $credit);
diff --git a/app/Export/CSV/DocumentExport.php b/app/Export/CSV/DocumentExport.php
index cfcebbc062a6..37e97cd3449d 100644
--- a/app/Export/CSV/DocumentExport.php
+++ b/app/Export/CSV/DocumentExport.php
@@ -54,7 +54,7 @@ class DocumentExport extends BaseExport
$report = $query->cursor()
->map(function ($document) {
-
+
/** @var \App\Models\Document $document */
$row = $this->buildRow($document);
return $this->processMetaData($row, $document);
@@ -101,7 +101,7 @@ class DocumentExport extends BaseExport
$query->cursor()
->each(function ($entity) {
- /** @var mixed $entity */
+ /** @var mixed $entity */
$this->csv->insertOne($this->buildRow($entity));
});
diff --git a/app/Export/CSV/ExpenseExport.php b/app/Export/CSV/ExpenseExport.php
index 67894954638b..e18c598d2297 100644
--- a/app/Export/CSV/ExpenseExport.php
+++ b/app/Export/CSV/ExpenseExport.php
@@ -52,7 +52,7 @@ class ExpenseExport extends BaseExport
$report = $query->cursor()
->map(function ($resource) {
-
+
/** @var \App\Models\Expense $resource */
$row = $this->buildRow($resource);
return $this->processMetaData($row, $resource);
@@ -134,7 +134,7 @@ class ExpenseExport extends BaseExport
$query->cursor()
->each(function ($expense) {
-
+
/** @var \App\Models\Expense $expense */
$this->csv->insertOne($this->buildRow($expense));
});
@@ -266,11 +266,10 @@ class ExpenseExport extends BaseExport
if($expense->calculate_tax_by_amount) {
$total_tax_amount = round($expense->tax_amount1 + $expense->tax_amount2 + $expense->tax_amount3, $precision);
-
+
if($expense->uses_inclusive_taxes) {
$entity['expense.net_amount'] = round($expense->amount, $precision) - $total_tax_amount;
- }
- else {
+ } else {
$entity['expense.net_amount'] = round($expense->amount, $precision);
}
diff --git a/app/Export/CSV/InvoiceExport.php b/app/Export/CSV/InvoiceExport.php
index 39ece67a28a9..73a0d47a447c 100644
--- a/app/Export/CSV/InvoiceExport.php
+++ b/app/Export/CSV/InvoiceExport.php
@@ -99,7 +99,7 @@ class InvoiceExport extends BaseExport
$report = $query->cursor()
->map(function ($resource) {
-
+
/** @var \App\Models\Invoice $resource */
$row = $this->buildRow($resource);
return $this->processMetaData($row, $resource);
@@ -121,7 +121,7 @@ class InvoiceExport extends BaseExport
$query->cursor()
->each(function ($invoice) {
-
+
/** @var \App\Models\Invoice $invoice */
$this->csv->insertOne($this->buildRow($invoice));
});
diff --git a/app/Export/CSV/InvoiceItemExport.php b/app/Export/CSV/InvoiceItemExport.php
index ef372c83752f..8657baed6ccf 100644
--- a/app/Export/CSV/InvoiceItemExport.php
+++ b/app/Export/CSV/InvoiceItemExport.php
@@ -113,7 +113,7 @@ class InvoiceItemExport extends BaseExport
$query->cursor()
->each(function ($resource) {
-
+
/** @var \App\Models\Invoice $resource */
$this->iterateItems($resource);
@@ -143,7 +143,7 @@ class InvoiceItemExport extends BaseExport
$query->cursor()
->each(function ($invoice) {
-
+
/** @var \App\Models\Invoice $invoice */
$this->iterateItems($invoice);
});
@@ -262,9 +262,9 @@ class InvoiceItemExport extends BaseExport
}
if (in_array('invoice.project', $this->input['report_keys'])) {
- $entity['invoice.project'] = $invoice->project ? $invoice->project->name : '';// @phpstan-ignore-line
+ $entity['invoice.project'] = $invoice->project ? $invoice->project->name : '';// @phpstan-ignore-line
}
-
+
return $entity;
}
diff --git a/app/Export/CSV/PaymentExport.php b/app/Export/CSV/PaymentExport.php
index 167514781277..a646bfc31a32 100644
--- a/app/Export/CSV/PaymentExport.php
+++ b/app/Export/CSV/PaymentExport.php
@@ -92,7 +92,7 @@ class PaymentExport extends BaseExport
$report = $query->cursor()
->map(function ($resource) {
-
+
/** @var \App\Models\Payment $resource */
$row = $this->buildRow($resource);
return $this->processMetaData($row, $resource);
@@ -114,8 +114,8 @@ class PaymentExport extends BaseExport
$query->cursor()
->each(function ($entity) {
-
- /** @var \App\Models\Payment $entity */
+
+ /** @var \App\Models\Payment $entity */
$this->csv->insertOne($this->buildRow($entity));
});
diff --git a/app/Export/CSV/ProductExport.php b/app/Export/CSV/ProductExport.php
index dba1b8622833..e377a3023332 100644
--- a/app/Export/CSV/ProductExport.php
+++ b/app/Export/CSV/ProductExport.php
@@ -51,7 +51,7 @@ class ProductExport extends BaseExport
$report = $query->cursor()
->map(function ($resource) {
-
+
/** @var \App\Models\Product $resource */
$row = $this->buildRow($resource);
return $this->processMetaData($row, $resource);
@@ -106,8 +106,8 @@ class ProductExport extends BaseExport
$query->cursor()
->each(function ($entity) {
- /** @var \App\Models\Product $entity */
- $this->csv->insertOne($this->buildRow($entity));
+ /** @var \App\Models\Product $entity */
+ $this->csv->insertOne($this->buildRow($entity));
});
return $this->csv->toString();
diff --git a/app/Export/CSV/PurchaseOrderExport.php b/app/Export/CSV/PurchaseOrderExport.php
index 1e60e26424c6..a80f05c0e151 100644
--- a/app/Export/CSV/PurchaseOrderExport.php
+++ b/app/Export/CSV/PurchaseOrderExport.php
@@ -98,7 +98,7 @@ class PurchaseOrderExport extends BaseExport
$report = $query->cursor()
->map(function ($resource) {
-
+
/** @var \App\Models\PurchaseOrder $resource */
$row = $this->buildRow($resource);
return $this->processMetaData($row, $resource);
@@ -121,9 +121,9 @@ class PurchaseOrderExport extends BaseExport
$query->cursor()
->each(function ($purchase_order) {
-
- /** @var \App\Models\PurchaseOrder $purchase_order */
- $this->csv->insertOne($this->buildRow($purchase_order));
+
+ /** @var \App\Models\PurchaseOrder $purchase_order */
+ $this->csv->insertOne($this->buildRow($purchase_order));
});
return $this->csv->toString();
diff --git a/app/Export/CSV/PurchaseOrderItemExport.php b/app/Export/CSV/PurchaseOrderItemExport.php
index bbbcc62dc52c..ea7e82d0bb1a 100644
--- a/app/Export/CSV/PurchaseOrderItemExport.php
+++ b/app/Export/CSV/PurchaseOrderItemExport.php
@@ -101,15 +101,15 @@ class PurchaseOrderItemExport extends BaseExport
$query->cursor()
->each(function ($resource) {
-
- /** @var \App\Models\PurchaseOrder $resource */
- $this->iterateItems($resource);
- foreach($this->storage_array as $row) {
- $this->storage_item_array[] = $this->processItemMetaData($row, $resource);
- }
+ /** @var \App\Models\PurchaseOrder $resource */
+ $this->iterateItems($resource);
- $this->storage_array = [];
+ foreach($this->storage_array as $row) {
+ $this->storage_item_array[] = $this->processItemMetaData($row, $resource);
+ }
+
+ $this->storage_array = [];
});
@@ -129,9 +129,9 @@ class PurchaseOrderItemExport extends BaseExport
$query->cursor()
->each(function ($purchase_order) {
-
- /** @var \App\Models\PurchaseOrder $purchase_order */
- $this->iterateItems($purchase_order);
+
+ /** @var \App\Models\PurchaseOrder $purchase_order */
+ $this->iterateItems($purchase_order);
});
$this->csv->insertAll($this->storage_array);
diff --git a/app/Export/CSV/QuoteExport.php b/app/Export/CSV/QuoteExport.php
index 4d404d4ca3e8..4b2881fe7bc9 100644
--- a/app/Export/CSV/QuoteExport.php
+++ b/app/Export/CSV/QuoteExport.php
@@ -127,7 +127,7 @@ class QuoteExport extends BaseExport
$query->cursor()
->each(function ($quote) {
-
+
/** @var \App\Models\Quote $quote */
$this->csv->insertOne($this->buildRow($quote));
});
diff --git a/app/Export/CSV/QuoteItemExport.php b/app/Export/CSV/QuoteItemExport.php
index 2e8e5a008939..62e4931338a1 100644
--- a/app/Export/CSV/QuoteItemExport.php
+++ b/app/Export/CSV/QuoteItemExport.php
@@ -104,7 +104,7 @@ class QuoteItemExport extends BaseExport
$query->cursor()
->each(function ($resource) {
-
+
/** @var \App\Models\Quote $resource */
$this->iterateItems($resource);
@@ -136,7 +136,7 @@ class QuoteItemExport extends BaseExport
$query->cursor()
->each(function ($quote) {
-
+
/** @var \App\Models\Quote $quote */
$this->iterateItems($quote);
});
diff --git a/app/Export/CSV/RecurringInvoiceExport.php b/app/Export/CSV/RecurringInvoiceExport.php
index 62a2c78364ca..01ba57eb5a5e 100644
--- a/app/Export/CSV/RecurringInvoiceExport.php
+++ b/app/Export/CSV/RecurringInvoiceExport.php
@@ -93,7 +93,7 @@ class RecurringInvoiceExport extends BaseExport
$query->cursor()
->each(function ($invoice) {
-
+
/** @var \App\Models\RecurringInvoice $invoice */
$this->csv->insertOne($this->buildRow($invoice));
});
@@ -114,7 +114,7 @@ class RecurringInvoiceExport extends BaseExport
$report = $query->cursor()
->map(function ($resource) {
-
+
/** @var \App\Models\RecurringInvoice $resource */
$row = $this->buildRow($resource);
return $this->processMetaData($row, $resource);
diff --git a/app/Export/CSV/TaskExport.php b/app/Export/CSV/TaskExport.php
index 3d48b845a240..3a7d6f99cdf0 100644
--- a/app/Export/CSV/TaskExport.php
+++ b/app/Export/CSV/TaskExport.php
@@ -106,9 +106,9 @@ class TaskExport extends BaseExport
$query->cursor()
->each(function ($entity) {
-
- /** @var \App\Models\Task $entity*/
- $this->buildRow($entity);
+
+ /** @var \App\Models\Task $entity*/
+ $this->buildRow($entity);
});
$this->csv->insertAll($this->storage_array);
@@ -209,7 +209,7 @@ class TaskExport extends BaseExport
$entity['task.duration_words'] = $seconds > 86400 ? CarbonInterval::seconds($seconds)->locale($this->company->locale())->cascade()->forHumans() : now()->startOfDay()->addSeconds($seconds)->format('H:i:s');
$entity['task.time_log'] = (isset($item[1]) && $item[1] != 0) ? $item[1] - $item[0] : ctrans('texts.is_running');
-
+
}
if (in_array('task.billable', $this->input['report_keys']) || in_array('billable', $this->input['report_keys'])) {
diff --git a/app/Export/CSV/VendorExport.php b/app/Export/CSV/VendorExport.php
index 799fca7a075f..c6f0d32c5a1a 100644
--- a/app/Export/CSV/VendorExport.php
+++ b/app/Export/CSV/VendorExport.php
@@ -90,7 +90,7 @@ class VendorExport extends BaseExport
$report = $query->cursor()
->map(function ($resource) {
-
+
/** @var \App\Models\Vendor $resource */
$row = $this->buildRow($resource);
return $this->processMetaData($row, $resource);
@@ -109,9 +109,9 @@ class VendorExport extends BaseExport
$query->cursor()
->each(function ($vendor) {
-
- /** @var \App\Models\Vendor $vendor */
- $this->csv->insertOne($this->buildRow($vendor));
+
+ /** @var \App\Models\Vendor $vendor */
+ $this->csv->insertOne($this->buildRow($vendor));
});
return $this->csv->toString();
diff --git a/app/Export/Decorators/TaskDecorator.php b/app/Export/Decorators/TaskDecorator.php
index d8d908a34c00..277a7a422637 100644
--- a/app/Export/Decorators/TaskDecorator.php
+++ b/app/Export/Decorators/TaskDecorator.php
@@ -96,7 +96,7 @@ class TaskDecorator extends Decorator implements DecoratorInterface
return '';
}
-
+
/**
* billable
*
@@ -106,7 +106,7 @@ class TaskDecorator extends Decorator implements DecoratorInterface
{
return '';
}
-
+
/**
* items_notes
* @todo
@@ -115,7 +115,7 @@ class TaskDecorator extends Decorator implements DecoratorInterface
{
return '';
}
-
+
public function duration(Task $task)
{
return $task->calcDuration();
diff --git a/app/Factory/RecurringExpenseToExpenseFactory.php b/app/Factory/RecurringExpenseToExpenseFactory.php
index e6699e1fb77c..d36fba7a3a09 100644
--- a/app/Factory/RecurringExpenseToExpenseFactory.php
+++ b/app/Factory/RecurringExpenseToExpenseFactory.php
@@ -149,43 +149,43 @@ class RecurringExpenseToExpenseFactory
}
// if (Str::contains($match, '|')) {
- $parts = explode('|', $match); // [ '[MONTH', 'MONTH+2]' ]
+ $parts = explode('|', $match); // [ '[MONTH', 'MONTH+2]' ]
- $left = substr($parts[0], 1); // 'MONTH'
- $right = substr($parts[1], 0, -1); // MONTH+2
+ $left = substr($parts[0], 1); // 'MONTH'
+ $right = substr($parts[1], 0, -1); // MONTH+2
- // If left side is not part of replacements, skip.
- if (! array_key_exists($left, $replacements['ranges'])) {
- continue;
- }
+ // If left side is not part of replacements, skip.
+ if (! array_key_exists($left, $replacements['ranges'])) {
+ continue;
+ }
- $_left = Carbon::createFromDate(now()->year, now()->month)->translatedFormat('F Y');
- $_right = '';
+ $_left = Carbon::createFromDate(now()->year, now()->month)->translatedFormat('F Y');
+ $_right = '';
- // If right side doesn't have any calculations, replace with raw ranges keyword.
- if (! Str::contains($right, ['-', '+', '/', '*'])) {
- $_right = Carbon::createFromDate(now()->year, now()->month)->translatedFormat('F Y');
- }
+ // If right side doesn't have any calculations, replace with raw ranges keyword.
+ if (! Str::contains($right, ['-', '+', '/', '*'])) {
+ $_right = Carbon::createFromDate(now()->year, now()->month)->translatedFormat('F Y');
+ }
- // If right side contains one of math operations, calculate.
- if (Str::contains($right, ['+'])) {
- $operation = preg_match_all('/(?!^-)[+*\/-](\s?-)?/', $right, $_matches);
+ // If right side contains one of math operations, calculate.
+ if (Str::contains($right, ['+'])) {
+ $operation = preg_match_all('/(?!^-)[+*\/-](\s?-)?/', $right, $_matches);
- $_operation = array_shift($_matches)[0]; // + -
+ $_operation = array_shift($_matches)[0]; // + -
- $_value = explode($_operation, $right); // [MONTHYEAR, 4]
+ $_value = explode($_operation, $right); // [MONTHYEAR, 4]
- $_right = Carbon::createFromDate(now()->year, now()->month)->addMonths($_value[1])->translatedFormat('F Y'); //@phpstan-ignore-line
- }
+ $_right = Carbon::createFromDate(now()->year, now()->month)->addMonths($_value[1])->translatedFormat('F Y'); //@phpstan-ignore-line
+ }
- $replacement = sprintf('%s to %s', $_left, $_right);
+ $replacement = sprintf('%s to %s', $_left, $_right);
- $value = preg_replace(
- sprintf('/%s/', preg_quote($match)),
- $replacement,
- $value,
- 1
- );
+ $value = preg_replace(
+ sprintf('/%s/', preg_quote($match)),
+ $replacement,
+ $value,
+ 1
+ );
// }
}
diff --git a/app/Filters/CreditFilters.php b/app/Filters/CreditFilters.php
index 578a83ddcff0..81d3c2dec09f 100644
--- a/app/Filters/CreditFilters.php
+++ b/app/Filters/CreditFilters.php
@@ -105,7 +105,7 @@ class CreditFilters extends QueryFilters
JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].product_key'))
), '$[*]')
) LIKE ?", ['%'.$filter.'%']);
- // ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
+ // ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
});
}
diff --git a/app/Filters/ExpenseFilters.php b/app/Filters/ExpenseFilters.php
index 2fa80a1eb799..c86a848d0b0b 100644
--- a/app/Filters/ExpenseFilters.php
+++ b/app/Filters/ExpenseFilters.php
@@ -162,8 +162,9 @@ class ExpenseFilters extends QueryFilters
{
$categories_exploded = explode(",", $categories);
- if(empty($categories) || count(array_filter($categories_exploded)) == 0)
+ if(empty($categories) || count(array_filter($categories_exploded)) == 0) {
return $this->builder;
+ }
$categories_keys = $this->transformKeys($categories_exploded);
diff --git a/app/Filters/InvoiceFilters.php b/app/Filters/InvoiceFilters.php
index 4685590b1cfa..e31cfd0dec91 100644
--- a/app/Filters/InvoiceFilters.php
+++ b/app/Filters/InvoiceFilters.php
@@ -132,7 +132,7 @@ class InvoiceFilters extends QueryFilters
JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].product_key'))
), '$[*]')
) LIKE ?", ['%'.$filter.'%']);
- // ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
+ // ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
});
}
diff --git a/app/Filters/QuoteFilters.php b/app/Filters/QuoteFilters.php
index d2c5763187dc..5e9776c9a0e3 100644
--- a/app/Filters/QuoteFilters.php
+++ b/app/Filters/QuoteFilters.php
@@ -53,7 +53,7 @@ class QuoteFilters extends QueryFilters
JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].product_key'))
), '$[*]')
) LIKE ?", ['%'.$filter.'%']);
- // ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
+ // ->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
});
}
diff --git a/app/Filters/RecurringInvoiceFilters.php b/app/Filters/RecurringInvoiceFilters.php
index 976739912b59..b2f5a8cbce39 100644
--- a/app/Filters/RecurringInvoiceFilters.php
+++ b/app/Filters/RecurringInvoiceFilters.php
@@ -56,7 +56,7 @@ class RecurringInvoiceFilters extends QueryFilters
JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].product_key'))
), '$[*]')
) LIKE ?", ['%'.$filter.'%']);
- //->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
+ //->orWhereRaw("JSON_UNQUOTE(JSON_EXTRACT(line_items, '$[*].notes')) LIKE ?", ['%'.$filter.'%']);
});
}
@@ -141,7 +141,7 @@ class RecurringInvoiceFilters extends QueryFilters
return $this->builder->orderByRaw("REGEXP_REPLACE(number,'[^0-9]+','')+0 " . $dir);
}
- if($sort_col[0] == 'status_id'){
+ if($sort_col[0] == 'status_id') {
return $this->builder->orderBy('status_id', $dir)->orderBy('last_sent_date', $dir);
}
diff --git a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php
index 7d3d604a6897..662b833e48f7 100644
--- a/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php
+++ b/app/Helpers/Bank/Nordigen/Transformer/TransactionTransformer.php
@@ -165,7 +165,7 @@ class TransactionTransformer implements BankRevenueInterface
/** @var \App\Models\Currency $currency */
return $currency ? $currency->id : 1; //@phpstan-ignore-line
-
+
}
private function formatDate(string $input)
diff --git a/app/Helpers/Epc/EpcQrGenerator.php b/app/Helpers/Epc/EpcQrGenerator.php
index ccdee6e65efe..256e2d734181 100644
--- a/app/Helpers/Epc/EpcQrGenerator.php
+++ b/app/Helpers/Epc/EpcQrGenerator.php
@@ -61,7 +61,7 @@ class EpcQrGenerator
} catch(\Throwable $e) {
nlog("EPC QR failure => ".$e->getMessage());
return '';
- }
+ }
}
diff --git a/app/Helpers/Invoice/InvoiceSumInclusive.php b/app/Helpers/Invoice/InvoiceSumInclusive.php
index 07fdf3e86894..1ce79aba0a3e 100644
--- a/app/Helpers/Invoice/InvoiceSumInclusive.php
+++ b/app/Helpers/Invoice/InvoiceSumInclusive.php
@@ -64,7 +64,7 @@ class InvoiceSumInclusive
{
$this->invoice = $invoice;
$this->client = $invoice->client ?? $invoice->vendor;
-
+
$this->precision = $this->client->currency()->precision;
$this->rappen_rounding = $this->client->getSetting('enable_rappen_rounding');
diff --git a/app/Helpers/Mail/GmailTransport.php b/app/Helpers/Mail/GmailTransport.php
index 5dd8492191b2..f957a1445ff2 100644
--- a/app/Helpers/Mail/GmailTransport.php
+++ b/app/Helpers/Mail/GmailTransport.php
@@ -53,7 +53,7 @@ class GmailTransport extends AbstractTransport
if ($bccs) {
$bcc_list = 'Bcc: ';
- foreach ($bccs->getAddresses() as $address) {
+ foreach ($bccs->getAddresses() as $address) {
$bcc_list .= $address->getAddress() .',';
}
diff --git a/app/Http/Controllers/ActivityController.php b/app/Http/Controllers/ActivityController.php
index dac6478f326b..fe47969c5aba 100644
--- a/app/Http/Controllers/ActivityController.php
+++ b/app/Http/Controllers/ActivityController.php
@@ -117,7 +117,7 @@ class ActivityController extends BaseController
}
-
+
/**
* downloadHistoricalEntity
*
@@ -204,7 +204,7 @@ class ActivityController extends BaseController
$activity->user_id = $user->id;
$activity->ip = $request->ip();
$activity->activity_type_id = Activity::USER_NOTE;
-
+
switch (get_class($entity)) {
case Invoice::class:
$activity->invoice_id = $entity->id;
@@ -254,17 +254,20 @@ class ActivityController extends BaseController
$activity->client_id = $entity->client_id;
$activity->project_id = $entity->project_id;
$activity->vendor_id = $entity->vendor_id;
+ // no break
case Task::class:
$activity->task_id = $entity->id;
$activity->expense_id = $entity->id;
$activity->client_id = $entity->client_id;
$activity->project_id = $entity->project_id;
$activity->vendor_id = $entity->vendor_id;
+ // no break
case Payment::class:
$activity->payment_id = $entity->id;
$activity->expense_id = $entity->id;
$activity->client_id = $entity->client_id;
$activity->project_id = $entity->project_id;
+ // no break
default:
# code...
break;
diff --git a/app/Http/Controllers/Auth/ContactLoginController.php b/app/Http/Controllers/Auth/ContactLoginController.php
index 5a72419244cb..b35b02016c09 100644
--- a/app/Http/Controllers/Auth/ContactLoginController.php
+++ b/app/Http/Controllers/Auth/ContactLoginController.php
@@ -41,9 +41,10 @@ class ContactLoginController extends Controller
$company = false;
$account = false;
- if($request->query('intended'))
+ if($request->query('intended')) {
$request->session()->put('url.intended', $request->query('intended'));
-
+ }
+
if ($request->session()->has('company_key')) {
MultiDB::findAndSetDbByCompanyKey($request->session()->get('company_key'));
$company = Company::where('company_key', $request->session()->get('company_key'))->first();
@@ -141,9 +142,10 @@ class ContactLoginController extends Controller
}
$this->setRedirectPath();
-
- if($intended)
+
+ if($intended) {
$this->redirectTo = $intended;
+ }
return $request->wantsJson()
? new JsonResponse([], 204)
diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php
index 3f8201c75a6c..5df56723fed2 100644
--- a/app/Http/Controllers/Auth/LoginController.php
+++ b/app/Http/Controllers/Auth/LoginController.php
@@ -399,8 +399,8 @@ class LoginController extends BaseController
$truth->setCompany($set_company);
//21-03-2024
-
-
+
+
$cu->each(function ($cu) {
/** @var \App\Models\CompanyUser $cu */
if(CompanyToken::query()->where('company_id', $cu->company_id)->where('user_id', $cu->user_id)->where('is_system', true)->doesntExist()) {
diff --git a/app/Http/Controllers/BankIntegrationController.php b/app/Http/Controllers/BankIntegrationController.php
index 6701f1e65fd9..42b2df3035ac 100644
--- a/app/Http/Controllers/BankIntegrationController.php
+++ b/app/Http/Controllers/BankIntegrationController.php
@@ -217,7 +217,7 @@ class BankIntegrationController extends BaseController
}
if (config('ninja.nordigen.secret_id') && config('ninja.nordigen.secret_key') && (Ninja::isSelfHost() || (Ninja::isHosted() && $user_account->isEnterprisePaidClient()))) {
- $user_account->bank_integrations->where("integration_type", BankIntegration::INTEGRATION_TYPE_NORDIGEN)->each(function ($bank_integration) {
+ $user_account->bank_integrations->where("integration_type", BankIntegration::INTEGRATION_TYPE_NORDIGEN)->each(function ($bank_integration) {
/** @var \App\Models\BankIntegration $bank_integration */
ProcessBankTransactionsNordigen::dispatch($bank_integration);
});
diff --git a/app/Http/Controllers/BaseController.php b/app/Http/Controllers/BaseController.php
index 01f3d8973d97..873bab711483 100644
--- a/app/Http/Controllers/BaseController.php
+++ b/app/Http/Controllers/BaseController.php
@@ -934,7 +934,7 @@ class BaseController extends Controller
} elseif (in_array($this->entity_type, [Design::class, GroupSetting::class, PaymentTerm::class, TaskStatus::class])) {
// nlog($this->entity_type);
} else {
- $query->where(function ($q) use ($user){ //grouping these together improves query performance significantly)
+ $query->where(function ($q) use ($user) { //grouping these together improves query performance significantly)
$q->where('user_id', '=', $user->id)->orWhere('assigned_user_id', $user->id);
});
}
@@ -996,7 +996,7 @@ class BaseController extends Controller
if(request()->has('einvoice')) {
- if(class_exists(Schema::class)){
+ if(class_exists(Schema::class)) {
$ro = new Schema();
$response_data['einvoice_schema'] = $ro('Peppol');
}
diff --git a/app/Http/Controllers/BrevoController.php b/app/Http/Controllers/BrevoController.php
index e0e94e8fa71b..7ea09493e98a 100644
--- a/app/Http/Controllers/BrevoController.php
+++ b/app/Http/Controllers/BrevoController.php
@@ -19,7 +19,6 @@ use Illuminate\Http\Request;
*/
class BrevoController extends BaseController
{
-
public function __construct()
{
}
diff --git a/app/Http/Controllers/ChartController.php b/app/Http/Controllers/ChartController.php
index 07fc7fc238e4..a3cdff36397f 100644
--- a/app/Http/Controllers/ChartController.php
+++ b/app/Http/Controllers/ChartController.php
@@ -73,7 +73,7 @@ class ChartController extends BaseController
$user = auth()->user();
$cs = new ChartService($user->company(), $user, $user->isAdmin());
$result = $cs->getCalculatedField($request->all());
-
+
return response()->json($result, 200);
}
diff --git a/app/Http/Controllers/ClientPortal/InvitationController.php b/app/Http/Controllers/ClientPortal/InvitationController.php
index ec30aacc37b6..ea4b65c97156 100644
--- a/app/Http/Controllers/ClientPortal/InvitationController.php
+++ b/app/Http/Controllers/ClientPortal/InvitationController.php
@@ -114,8 +114,8 @@ class InvitationController extends Controller
'invitation_key' => $invitation_key
]);
}
-
- if(!auth()->guard('contact')->check()){
+
+ if(!auth()->guard('contact')->check()) {
$this->middleware('auth:contact');
return redirect()->route('client.login', ['intended' => route('client.'.$entity.'.show', [$entity => $this->encodePrimaryKey($invitation->{$key}), 'silent' => $is_silent])]);
}
@@ -146,7 +146,7 @@ class InvitationController extends Controller
}
-
+
private function fireEntityViewedEvent($invitation, $entity_string)
{
switch ($entity_string) {
diff --git a/app/Http/Controllers/ClientPortal/NinjaPlanController.php b/app/Http/Controllers/ClientPortal/NinjaPlanController.php
index 3b3c19580488..48d1c467e928 100644
--- a/app/Http/Controllers/ClientPortal/NinjaPlanController.php
+++ b/app/Http/Controllers/ClientPortal/NinjaPlanController.php
@@ -80,7 +80,7 @@ class NinjaPlanController extends Controller
$data['intent'] = $setupIntent;
$data['client'] = Auth::guard('contact')->user()->client;
-
+
return $this->render('plan.trial', $data);
}
diff --git a/app/Http/Controllers/ClientPortal/PaymentController.php b/app/Http/Controllers/ClientPortal/PaymentController.php
index 94a46bd5cbe5..3ab4a714413b 100644
--- a/app/Http/Controllers/ClientPortal/PaymentController.php
+++ b/app/Http/Controllers/ClientPortal/PaymentController.php
@@ -126,7 +126,7 @@ class PaymentController extends Controller
// if($payment_hash)
$invoice = $payment_hash->fee_invoice;
// else
- // $invoice = Invoice::with('client')->where('id',$payment_hash->fee_invoice_id)->orderBy('id','desc')->first();
+ // $invoice = Invoice::with('client')->where('id',$payment_hash->fee_invoice_id)->orderBy('id','desc')->first();
// $invoice = Invoice::with('client')->find($payment_hash->fee_invoice_id);
diff --git a/app/Http/Controllers/ClientPortal/SubscriptionPurchaseController.php b/app/Http/Controllers/ClientPortal/SubscriptionPurchaseController.php
index 677fb3cceeff..8818e2887877 100644
--- a/app/Http/Controllers/ClientPortal/SubscriptionPurchaseController.php
+++ b/app/Http/Controllers/ClientPortal/SubscriptionPurchaseController.php
@@ -94,7 +94,7 @@ class SubscriptionPurchaseController extends Controller
*/
private function setLocale(string $locale): string
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
@@ -104,6 +104,6 @@ class SubscriptionPurchaseController extends Controller
});
return $record ? $record->locale : 'en';
-
+
}
}
diff --git a/app/Http/Controllers/CompanyController.php b/app/Http/Controllers/CompanyController.php
index efa8c8081096..2be76e52b83b 100644
--- a/app/Http/Controllers/CompanyController.php
+++ b/app/Http/Controllers/CompanyController.php
@@ -707,7 +707,7 @@ class CompanyController extends BaseController
}
/**
- *
+ *
*
* @return \Symfony\Component\HttpFoundation\StreamedResponse | \Illuminate\Http\JsonResponse
*/
diff --git a/app/Http/Controllers/CreditController.php b/app/Http/Controllers/CreditController.php
index d6fe802d4fe7..11abfd50a3ac 100644
--- a/app/Http/Controllers/CreditController.php
+++ b/app/Http/Controllers/CreditController.php
@@ -615,7 +615,7 @@ class CreditController extends BaseController
return response()->streamDownload(function () use ($file) {
echo $file;
}, $credit->numberFormatter() . '.pdf', ['Content-Type' => 'application/pdf']);
-
+
case 'archive':
$this->credit_repository->archive($credit);
diff --git a/app/Http/Controllers/ExpenseController.php b/app/Http/Controllers/ExpenseController.php
index 3c2028c6f874..eaeee304f7db 100644
--- a/app/Http/Controllers/ExpenseController.php
+++ b/app/Http/Controllers/ExpenseController.php
@@ -593,6 +593,6 @@ class ExpenseController extends BaseController
}
return response()->json(['message' => 'Processing....'], 200);
-
+
}
}
diff --git a/app/Http/Controllers/ImportQuickbooksController.php b/app/Http/Controllers/ImportQuickbooksController.php
index 7913f7a433a0..8f93651a7a25 100644
--- a/app/Http/Controllers/ImportQuickbooksController.php
+++ b/app/Http/Controllers/ImportQuickbooksController.php
@@ -3,7 +3,7 @@
namespace App\Http\Controllers;
use App\Http\Requests\Quickbooks\AuthorizedQuickbooksRequest;
-use \Closure;
+use Closure;
use App\Utils\Ninja;
use App\Models\Company;
use App\Libraries\MultiDB;
@@ -19,7 +19,6 @@ use App\Services\Import\Quickbooks\QuickbooksService;
class ImportQuickbooksController extends BaseController
{
-
private array $import_entities = [
'client' => 'Customer',
'invoice' => 'Invoice',
@@ -29,7 +28,7 @@ class ImportQuickbooksController extends BaseController
public function onAuthorized(AuthorizedQuickbooksRequest $request)
{
-
+
MultiDB::findAndSetDbByCompanyKey($request->getTokenContent()['company_key']);
$company = $request->getCompany();
$qb = new QuickbooksService($company);
@@ -39,18 +38,17 @@ class ImportQuickbooksController extends BaseController
nlog($access_token_object); //OAuth2AccessToken
$company->quickbooks = $access_token_object;
$company->save();
-
+
return response()->json(['message' => 'Success'], 200); //todo swapout for redirect to UI
}
/**
* Determine if the user is authorized to make this request.
*
- * @return bool
*/
public function authorizeQuickbooks(AuthQuickbooksRequest $request, string $token)
{
-
+
MultiDB::findAndSetDbByCompanyKey($request->getTokenContent()['company_key']);
$company = $request->getCompany();
$qb = new QuickbooksService($company);
@@ -65,7 +63,7 @@ class ImportQuickbooksController extends BaseController
public function preimport(string $type, string $hash)
{
- // Check for authorization otherwise
+ // Check for authorization otherwise
// Create a reference
$data = [
'hash' => $hash,
@@ -74,17 +72,19 @@ class ImportQuickbooksController extends BaseController
$this->getData($data);
}
- protected function getData($data) {
+ protected function getData($data)
+ {
$entity = $this->import_entities[$data['type']];
$cache_name = "{$data['hash']}-{$data['type']}";
// TODO: Get or put cache or DB?
- if(! Cache::has($cache_name) )
- {
+ if(! Cache::has($cache_name)) {
$contents = call_user_func([$this->service, "fetch{$entity}s"]);
- if($contents->isEmpty()) return;
-
- Cache::put($cache_name, base64_encode( $contents->toJson()), 600);
+ if($contents->isEmpty()) {
+ return;
+ }
+
+ Cache::put($cache_name, base64_encode($contents->toJson()), 600);
}
}
@@ -117,20 +117,19 @@ class ImportQuickbooksController extends BaseController
*/
public function import(Request $request)
{
- $hash = Str::random(32);
- foreach($request->input('import_types') as $type)
- {
- $this->preimport($type, $hash);
- }
- /** @var \App\Models\User $user */
- // $user = auth()->user() ?? Auth::loginUsingId(60);
- $data = ['import_types' => $request->input('import_types') ] + compact('hash');
- if (Ninja::isHosted()) {
- QuickbooksIngest::dispatch( $data , $user->company() );
- } else {
- QuickbooksIngest::dispatch($data, $user->company() );
- }
+ // $hash = Str::random(32);
+ // foreach($request->input('import_types') as $type) {
+ // $this->preimport($type, $hash);
+ // }
+ // /** @var \App\Models\User $user */
+ // // $user = auth()->user() ?? Auth::loginUsingId(60);
+ // $data = ['import_types' => $request->input('import_types') ] + compact('hash');
+ // if (Ninja::isHosted()) {
+ // QuickbooksIngest::dispatch($data, $user->company());
+ // } else {
+ // QuickbooksIngest::dispatch($data, $user->company());
+ // }
- return response()->json(['message' => 'Processing'], 200);
+ // return response()->json(['message' => 'Processing'], 200);
}
}
diff --git a/app/Http/Controllers/InvoiceController.php b/app/Http/Controllers/InvoiceController.php
index f163bb45ad91..ee363bb808a3 100644
--- a/app/Http/Controllers/InvoiceController.php
+++ b/app/Http/Controllers/InvoiceController.php
@@ -503,7 +503,7 @@ class InvoiceController extends BaseController
$invoices = Invoice::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get();
- if ($invoices->count() == 0 ) {
+ if ($invoices->count() == 0) {
return response()->json(['message' => 'No Invoices Found']);
}
diff --git a/app/Http/Controllers/MailgunWebhookController.php b/app/Http/Controllers/MailgunWebhookController.php
index 88985e136158..ce51e319cc9e 100644
--- a/app/Http/Controllers/MailgunWebhookController.php
+++ b/app/Http/Controllers/MailgunWebhookController.php
@@ -20,7 +20,6 @@ use Illuminate\Http\Request;
*/
class MailgunWebhookController extends BaseController
{
-
public function __construct()
{
}
@@ -35,7 +34,7 @@ class MailgunWebhookController extends BaseController
}
if(\hash_equals(\hash_hmac('sha256', $input['signature']['timestamp'] . $input['signature']['token'], config('services.mailgun.webhook_signing_key')), $input['signature']['signature'])) {
- ProcessMailgunWebhook::dispatch($request->all())->delay(rand(2,10));
+ ProcessMailgunWebhook::dispatch($request->all())->delay(rand(2, 10));
}
return response()->json(['message' => 'Success.'], 200);
diff --git a/app/Http/Controllers/OneTimeTokenController.php b/app/Http/Controllers/OneTimeTokenController.php
index 1d4773b530c5..d4aa685c58b6 100644
--- a/app/Http/Controllers/OneTimeTokenController.php
+++ b/app/Http/Controllers/OneTimeTokenController.php
@@ -22,7 +22,6 @@ use Illuminate\Support\Str;
class OneTimeTokenController extends BaseController
{
-
public function __construct()
{
parent::__construct();
diff --git a/app/Http/Controllers/PaymentNotificationWebhookController.php b/app/Http/Controllers/PaymentNotificationWebhookController.php
index a7ab8b0c3cba..7511085f73b0 100644
--- a/app/Http/Controllers/PaymentNotificationWebhookController.php
+++ b/app/Http/Controllers/PaymentNotificationWebhookController.php
@@ -25,7 +25,7 @@ class PaymentNotificationWebhookController extends Controller
{
/** @var \App\Models\CompanyGateway $company_gateway */
$company_gateway = CompanyGateway::find($this->decodePrimaryKey($company_gateway_id));
-
+
/** @var \App\Models\Client $client */
$client = Client::find($this->decodePrimaryKey($client_hash));
diff --git a/app/Http/Controllers/PostMarkController.php b/app/Http/Controllers/PostMarkController.php
index e2974f99831b..01679cef67f0 100644
--- a/app/Http/Controllers/PostMarkController.php
+++ b/app/Http/Controllers/PostMarkController.php
@@ -19,7 +19,6 @@ use Illuminate\Http\Request;
*/
class PostMarkController extends BaseController
{
-
public function __construct()
{
}
diff --git a/app/Http/Controllers/PreviewController.php b/app/Http/Controllers/PreviewController.php
index 02c9692b6292..517f36ce47ce 100644
--- a/app/Http/Controllers/PreviewController.php
+++ b/app/Http/Controllers/PreviewController.php
@@ -297,8 +297,7 @@ class PreviewController extends BaseController
->setTemplate($design_object)
->mock();
} catch(SyntaxError $e) {
- }
- catch(\Exception $e) {
+ } catch(\Exception $e) {
return response()->json(['message' => 'invalid data access', 'errors' => ['design.design.body' => $e->getMessage()]], 422);
}
diff --git a/app/Http/Controllers/SearchController.php b/app/Http/Controllers/SearchController.php
index 5cf35adef3c2..f4d842843c6b 100644
--- a/app/Http/Controllers/SearchController.php
+++ b/app/Http/Controllers/SearchController.php
@@ -85,12 +85,12 @@ class SearchController extends Controller
// ->whereHas('client', function ($q) {
// $q->where('is_deleted', 0);
// })
-
+
->leftJoin('clients', function ($join) {
$join->on('invoices.client_id', '=', 'clients.id')
->where('clients.is_deleted', 0);
})
-
+
->when(!$user->hasPermission('view_all') || !$user->hasPermission('view_invoice'), function ($query) use ($user) {
$query->where('invoices.user_id', $user->id);
})
diff --git a/app/Http/Controllers/SelfUpdateController.php b/app/Http/Controllers/SelfUpdateController.php
index 3c7caf650ed9..ba06f6806e84 100644
--- a/app/Http/Controllers/SelfUpdateController.php
+++ b/app/Http/Controllers/SelfUpdateController.php
@@ -181,8 +181,9 @@ class SelfUpdateController extends BaseController
public function checkVersion()
{
- if(Ninja::isHosted())
+ if(Ninja::isHosted()) {
return '5.10.SaaS';
+ }
return trim(file_get_contents(config('ninja.version_url')));
}
diff --git a/app/Http/Controllers/VendorPortal/PurchaseOrderController.php b/app/Http/Controllers/VendorPortal/PurchaseOrderController.php
index b5321baff9c0..44d836c05257 100644
--- a/app/Http/Controllers/VendorPortal/PurchaseOrderController.php
+++ b/app/Http/Controllers/VendorPortal/PurchaseOrderController.php
@@ -189,7 +189,7 @@ class PurchaseOrderController extends Controller
}
event(new PurchaseOrderWasAccepted($purchase_order, auth()->guard('vendor')->user(), $purchase_order->company, Ninja::eventVars()));
-
+
WebhookHandler::dispatch(Webhook::EVENT_ACCEPTED_PURCHASE_ORDER, $purchase_order, $purchase_order->company, 'vendor')->delay(0);
});
diff --git a/app/Http/Controllers/VendorPortal/VendorContactHashLoginController.php b/app/Http/Controllers/VendorPortal/VendorContactHashLoginController.php
index b0464fb5a65f..c902cbb072ff 100644
--- a/app/Http/Controllers/VendorPortal/VendorContactHashLoginController.php
+++ b/app/Http/Controllers/VendorPortal/VendorContactHashLoginController.php
@@ -34,7 +34,7 @@ class VendorContactHashLoginController extends Controller
{
return redirect($this->setRedirectPath());
}
-
+
/**
* errorPage
*
diff --git a/app/Http/Middleware/ThrottleRequestsWithPredis.php b/app/Http/Middleware/ThrottleRequestsWithPredis.php
index 6d7cad13fb76..c1ce0e4592bd 100644
--- a/app/Http/Middleware/ThrottleRequestsWithPredis.php
+++ b/app/Http/Middleware/ThrottleRequestsWithPredis.php
@@ -34,7 +34,7 @@ class ThrottleRequestsWithPredis extends \Illuminate\Routing\Middleware\Throttle
* Create a new request throttler.
* @return void
*/
-
+
/** @phpstan-ignore-next-line */
public function __construct(RateLimiter $limiter, Redis $redis)
{
@@ -85,7 +85,10 @@ class ThrottleRequestsWithPredis extends \Illuminate\Routing\Middleware\Throttle
protected function tooManyAttempts($key, $maxAttempts, $decaySeconds)
{
$limiter = new DurationLimiter(
- $this->getRedisConnection(), $key, $maxAttempts, $decaySeconds
+ $this->getRedisConnection(),
+ $key,
+ $maxAttempts,
+ $decaySeconds
);
return tap(! $limiter->acquire(), function () use ($key, $limiter) {
diff --git a/app/Http/Requests/Activity/StoreNoteRequest.php b/app/Http/Requests/Activity/StoreNoteRequest.php
index 8233cfd0592c..250fcfceec46 100644
--- a/app/Http/Requests/Activity/StoreNoteRequest.php
+++ b/app/Http/Requests/Activity/StoreNoteRequest.php
@@ -68,11 +68,12 @@ class StoreNoteRequest extends Request
public function getEntity()
{
- if(!$this->entity)
+ if(!$this->entity) {
return false;
+ }
$class = "\\App\\Models\\".ucfirst(Str::camel(rtrim($this->entity, 's')));
- return $class::withTrashed()->find(is_string($this->entity_id) ? $this->decodePrimaryKey($this->entity_id) : $this->entity_id);
+ return $class::withTrashed()->find(is_string($this->entity_id) ? $this->decodePrimaryKey($this->entity_id) : $this->entity_id);
}
diff --git a/app/Http/Requests/Chart/ShowCalculatedFieldRequest.php b/app/Http/Requests/Chart/ShowCalculatedFieldRequest.php
index 0980dcd3173c..5a9945da8f72 100644
--- a/app/Http/Requests/Chart/ShowCalculatedFieldRequest.php
+++ b/app/Http/Requests/Chart/ShowCalculatedFieldRequest.php
@@ -66,8 +66,7 @@ class ShowCalculatedFieldRequest extends Request
$input['end_date'] = now()->format('Y-m-d');
}
- if(isset($input['period']) && $input['period'] == 'previous')
- {
+ if(isset($input['period']) && $input['period'] == 'previous') {
$dates = $this->calculatePreviousPeriodStartAndEndDates($input, $user->company());
$input['start_date'] = $dates[0];
$input['end_date'] = $dates[1];
diff --git a/app/Http/Requests/Client/StoreClientRequest.php b/app/Http/Requests/Client/StoreClientRequest.php
index 8592d93f2e3a..3262593f605c 100644
--- a/app/Http/Requests/Client/StoreClientRequest.php
+++ b/app/Http/Requests/Client/StoreClientRequest.php
@@ -200,7 +200,7 @@ class StoreClientRequest extends Request
private function getCountryCode(string $country_code)
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Country> */
$countries = app('countries');
@@ -209,12 +209,12 @@ class StoreClientRequest extends Request
});
return $country ? (string) $country->id : '';
-
+
}
private function getCurrencyCode($code)
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
@@ -223,6 +223,6 @@ class StoreClientRequest extends Request
});
return $currency ? (string)$currency->id : '';
-
+
}
}
diff --git a/app/Http/Requests/Client/UpdateClientRequest.php b/app/Http/Requests/Client/UpdateClientRequest.php
index ad8944c2dfbd..ea41667db8ce 100644
--- a/app/Http/Requests/Client/UpdateClientRequest.php
+++ b/app/Http/Requests/Client/UpdateClientRequest.php
@@ -142,7 +142,7 @@ class UpdateClientRequest extends Request
private function getCountryCode($country_code)
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Country> */
$countries = app('countries');
@@ -155,7 +155,7 @@ class UpdateClientRequest extends Request
private function getLanguageId($language_code)
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
diff --git a/app/Http/Requests/ClientPortal/Credits/ShowCreditRequest.php b/app/Http/Requests/ClientPortal/Credits/ShowCreditRequest.php
index 8de2c43a0006..1defbd9095c5 100644
--- a/app/Http/Requests/ClientPortal/Credits/ShowCreditRequest.php
+++ b/app/Http/Requests/ClientPortal/Credits/ShowCreditRequest.php
@@ -14,7 +14,7 @@ class ShowCreditRequest extends FormRequest
*/
public function authorize()
{
- auth()->guard('contact')->user()->loadMissing(['company']);
+ auth()->guard('contact')->user()->loadMissing(['company']);
return ! $this->credit->is_deleted
&& (bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_CREDITS)
diff --git a/app/Http/Requests/ClientPortal/Invoices/ProcessInvoicesInBulkRequest.php b/app/Http/Requests/ClientPortal/Invoices/ProcessInvoicesInBulkRequest.php
index 2cc008636e39..21a91571d6af 100644
--- a/app/Http/Requests/ClientPortal/Invoices/ProcessInvoicesInBulkRequest.php
+++ b/app/Http/Requests/ClientPortal/Invoices/ProcessInvoicesInBulkRequest.php
@@ -19,7 +19,7 @@ class ProcessInvoicesInBulkRequest extends FormRequest
{
public function authorize()
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
return (bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES);
diff --git a/app/Http/Requests/ClientPortal/Invoices/ShowInvoiceRequest.php b/app/Http/Requests/ClientPortal/Invoices/ShowInvoiceRequest.php
index 16d328f496e7..2201b9541841 100644
--- a/app/Http/Requests/ClientPortal/Invoices/ShowInvoiceRequest.php
+++ b/app/Http/Requests/ClientPortal/Invoices/ShowInvoiceRequest.php
@@ -23,7 +23,7 @@ class ShowInvoiceRequest extends Request
*/
public function authorize(): bool
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
return (int) auth()->guard('contact')->user()->client_id === (int) $this->invoice->client_id
diff --git a/app/Http/Requests/ClientPortal/Invoices/ShowInvoicesRequest.php b/app/Http/Requests/ClientPortal/Invoices/ShowInvoicesRequest.php
index 25e2d1817f2e..91c7128e7291 100644
--- a/app/Http/Requests/ClientPortal/Invoices/ShowInvoicesRequest.php
+++ b/app/Http/Requests/ClientPortal/Invoices/ShowInvoicesRequest.php
@@ -19,7 +19,7 @@ class ShowInvoicesRequest extends FormRequest
{
public function authorize()
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
return (bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_INVOICES);
diff --git a/app/Http/Requests/ClientPortal/PaymentMethod/CreatePaymentMethodRequest.php b/app/Http/Requests/ClientPortal/PaymentMethod/CreatePaymentMethodRequest.php
index a50352b9b05d..c4213f9756a7 100644
--- a/app/Http/Requests/ClientPortal/PaymentMethod/CreatePaymentMethodRequest.php
+++ b/app/Http/Requests/ClientPortal/PaymentMethod/CreatePaymentMethodRequest.php
@@ -18,7 +18,7 @@ class CreatePaymentMethodRequest extends FormRequest
*/
public function authorize(): bool
{
-
+
auth()->guard('contact')->user()->loadMissing(['client' => function ($query) {
$query->without('gateway_tokens', 'documents', 'contacts.company', 'contacts'); // Exclude 'grandchildren' relation of 'client'
}]);
diff --git a/app/Http/Requests/ClientPortal/PrePayments/StorePrePaymentRequest.php b/app/Http/Requests/ClientPortal/PrePayments/StorePrePaymentRequest.php
index 6b5ab0c4f95a..08160c92172a 100644
--- a/app/Http/Requests/ClientPortal/PrePayments/StorePrePaymentRequest.php
+++ b/app/Http/Requests/ClientPortal/PrePayments/StorePrePaymentRequest.php
@@ -15,7 +15,7 @@ class StorePrePaymentRequest extends FormRequest
*/
public function authorize()
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
auth()->guard('contact')->user()->loadMissing(['client' => function ($query) {
diff --git a/app/Http/Requests/ClientPortal/Quotes/ProcessQuotesInBulkRequest.php b/app/Http/Requests/ClientPortal/Quotes/ProcessQuotesInBulkRequest.php
index 72a7cc9a664e..f2b8fc6efadf 100644
--- a/app/Http/Requests/ClientPortal/Quotes/ProcessQuotesInBulkRequest.php
+++ b/app/Http/Requests/ClientPortal/Quotes/ProcessQuotesInBulkRequest.php
@@ -21,7 +21,7 @@ class ProcessQuotesInBulkRequest extends FormRequest
{
public function authorize()
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
return (bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES);
diff --git a/app/Http/Requests/ClientPortal/Quotes/ShowQuoteRequest.php b/app/Http/Requests/ClientPortal/Quotes/ShowQuoteRequest.php
index d5203b029832..a006504b84ff 100644
--- a/app/Http/Requests/ClientPortal/Quotes/ShowQuoteRequest.php
+++ b/app/Http/Requests/ClientPortal/Quotes/ShowQuoteRequest.php
@@ -19,7 +19,7 @@ class ShowQuoteRequest extends FormRequest
{
public function authorize()
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
return (int)auth()->guard('contact')->user()->client->id === (int) $this->quote->client_id
diff --git a/app/Http/Requests/ClientPortal/Quotes/ShowQuotesRequest.php b/app/Http/Requests/ClientPortal/Quotes/ShowQuotesRequest.php
index 9f62924e027c..585b5396b6d7 100644
--- a/app/Http/Requests/ClientPortal/Quotes/ShowQuotesRequest.php
+++ b/app/Http/Requests/ClientPortal/Quotes/ShowQuotesRequest.php
@@ -19,7 +19,7 @@ class ShowQuotesRequest extends FormRequest
{
public function authorize()
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
return (bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_QUOTES);
diff --git a/app/Http/Requests/ClientPortal/RecurringInvoices/RequestCancellationRequest.php b/app/Http/Requests/ClientPortal/RecurringInvoices/RequestCancellationRequest.php
index eacd6112dca3..0506bb861ac2 100644
--- a/app/Http/Requests/ClientPortal/RecurringInvoices/RequestCancellationRequest.php
+++ b/app/Http/Requests/ClientPortal/RecurringInvoices/RequestCancellationRequest.php
@@ -9,7 +9,7 @@ class RequestCancellationRequest extends FormRequest
{
public function authorize()
{
-
+
auth()->guard('contact')->user()->loadMissing(['company']);
return (bool)(auth()->guard('contact')->user()->company->enabled_modules & PortalComposer::MODULE_RECURRING_INVOICES);
diff --git a/app/Http/Requests/ClientPortal/Uploads/StoreUploadRequest.php b/app/Http/Requests/ClientPortal/Uploads/StoreUploadRequest.php
index 50369aa5c99f..d37d84ec9efa 100644
--- a/app/Http/Requests/ClientPortal/Uploads/StoreUploadRequest.php
+++ b/app/Http/Requests/ClientPortal/Uploads/StoreUploadRequest.php
@@ -22,7 +22,7 @@ class StoreUploadRequest extends FormRequest
*/
public function authorize()
{
-
+
/** @phpstan-ignore-next-line **/
auth()->guard('contact')->user()->loadMissing(['client' => function ($query) {
$query->without('gateway_tokens', 'documents', 'contacts.company', 'contacts'); // Exclude 'grandchildren' relation of 'client'
diff --git a/app/Http/Requests/Credit/StoreCreditRequest.php b/app/Http/Requests/Credit/StoreCreditRequest.php
index 27b9a4b020cf..626ee07fdc48 100644
--- a/app/Http/Requests/Credit/StoreCreditRequest.php
+++ b/app/Http/Requests/Credit/StoreCreditRequest.php
@@ -64,7 +64,7 @@ class StoreCreditRequest extends Request
$user = auth()->user();
$rules['client_id'] = 'required|exists:clients,id,company_id,'.$user->company()->id;
-
+
$rules['invitations'] = 'sometimes|bail|array';
$rules['invitations.*.client_contact_id'] = 'bail|required|distinct';
diff --git a/app/Http/Requests/Credit/UpdateCreditRequest.php b/app/Http/Requests/Credit/UpdateCreditRequest.php
index 0733e3891326..acdda38d5781 100644
--- a/app/Http/Requests/Credit/UpdateCreditRequest.php
+++ b/app/Http/Requests/Credit/UpdateCreditRequest.php
@@ -65,7 +65,7 @@ class UpdateCreditRequest extends Request
$rules['number'] = ['bail', 'sometimes', 'nullable', Rule::unique('credits')->where('company_id', $user->company()->id)->ignore($this->credit->id)];
$rules['client_id'] = ['bail', 'sometimes',Rule::in([$this->credit->client_id])];
-
+
$rules['invitations'] = 'sometimes|bail|array';
$rules['invitations.*.client_contact_id'] = 'bail|required|distinct';
diff --git a/app/Http/Requests/Expense/UpdateExpenseRequest.php b/app/Http/Requests/Expense/UpdateExpenseRequest.php
index 50c496cf3301..812449e30b38 100644
--- a/app/Http/Requests/Expense/UpdateExpenseRequest.php
+++ b/app/Http/Requests/Expense/UpdateExpenseRequest.php
@@ -56,7 +56,7 @@ class UpdateExpenseRequest extends Request
$rules['invoice_id'] = 'bail|sometimes|nullable|exists:invoices,id,company_id,'.$user->company()->id;
$rules['documents'] = 'bail|sometimes|array';
$rules['amount'] = ['sometimes', 'bail', 'nullable', 'numeric', 'max:99999999999999'];
-
+
return $this->globalRules($rules);
}
diff --git a/app/Http/Requests/Invoice/BulkInvoiceRequest.php b/app/Http/Requests/Invoice/BulkInvoiceRequest.php
index 4cd6611077cd..130bca9224de 100644
--- a/app/Http/Requests/Invoice/BulkInvoiceRequest.php
+++ b/app/Http/Requests/Invoice/BulkInvoiceRequest.php
@@ -40,11 +40,12 @@ class BulkInvoiceRequest extends Request
/** @var \App\Models\User $user */
$user = auth()->user();
- if(\Illuminate\Support\Facades\Cache::has($this->ip()."|".$this->input('action', 0)."|".$user->company()->company_key))
+ if(\Illuminate\Support\Facades\Cache::has($this->ip()."|".$this->input('action', 0)."|".$user->company()->company_key)) {
throw new DuplicatePaymentException('Duplicate request.', 429);
+ }
\Illuminate\Support\Facades\Cache::put(($this->ip()."|".$this->input('action', 0)."|".$user->company()->company_key), true, 1);
}
-
+
}
diff --git a/app/Http/Requests/Invoice/StoreInvoiceRequest.php b/app/Http/Requests/Invoice/StoreInvoiceRequest.php
index 34907c6d602f..14b658ba53fd 100644
--- a/app/Http/Requests/Invoice/StoreInvoiceRequest.php
+++ b/app/Http/Requests/Invoice/StoreInvoiceRequest.php
@@ -89,7 +89,7 @@ class StoreInvoiceRequest extends Request
public function prepareForValidation()
{
-
+
/** @var \App\Models\User $user */
$user = auth()->user();
@@ -106,7 +106,7 @@ class StoreInvoiceRequest extends Request
}
if(isset($input['partial']) && $input['partial'] == 0) {
$input['partial_due_date'] = null;
- }
+ }
if (!isset($input['tax_rate1'])) {
$input['tax_rate1'] = 0;
}
diff --git a/app/Http/Requests/Payment/StorePaymentRequest.php b/app/Http/Requests/Payment/StorePaymentRequest.php
index 67d472836f49..b74c5c09445f 100644
--- a/app/Http/Requests/Payment/StorePaymentRequest.php
+++ b/app/Http/Requests/Payment/StorePaymentRequest.php
@@ -80,11 +80,12 @@ class StorePaymentRequest extends Request
/** @var \App\Models\User $user */
$user = auth()->user();
- if(\Illuminate\Support\Facades\Cache::has($this->ip()."|".$this->input('amount', 0)."|".$this->input('client_id', '')."|".$user->company()->company_key))
+ if(\Illuminate\Support\Facades\Cache::has($this->ip()."|".$this->input('amount', 0)."|".$this->input('client_id', '')."|".$user->company()->company_key)) {
throw new DuplicatePaymentException('Duplicate request.', 429);
+ }
\Illuminate\Support\Facades\Cache::put(($this->ip()."|".$this->input('amount', 0)."|".$this->input('client_id', '')."|".$user->company()->company_key), true, 1);
-
+
$input = $this->all();
$invoices_total = 0;
diff --git a/app/Http/Requests/Payments/PaymentWebhookRequest.php b/app/Http/Requests/Payments/PaymentWebhookRequest.php
index 765f681f508f..0769dcc6ae5d 100644
--- a/app/Http/Requests/Payments/PaymentWebhookRequest.php
+++ b/app/Http/Requests/Payments/PaymentWebhookRequest.php
@@ -74,7 +74,7 @@ class PaymentWebhookRequest extends Request
public function getCompany(): ?Company
{
MultiDB::findAndSetDbByCompanyKey($this->company_key);
-
+
/** @var \App\Models\Company */
return Company::where('company_key', $this->company_key)->firstOrFail();
}
diff --git a/app/Http/Requests/Preview/PreviewInvoiceRequest.php b/app/Http/Requests/Preview/PreviewInvoiceRequest.php
index 4a8d82e57b15..e710790004b2 100644
--- a/app/Http/Requests/Preview/PreviewInvoiceRequest.php
+++ b/app/Http/Requests/Preview/PreviewInvoiceRequest.php
@@ -88,7 +88,7 @@ class PreviewInvoiceRequest extends Request
public function resolveInvitation()
{
$invitation = false;
-
+
/** @phpstan-ignore-next-line */
if(! $this->entity_id ?? false) {
return $this->stubInvitation();
diff --git a/app/Http/Requests/Project/StoreProjectRequest.php b/app/Http/Requests/Project/StoreProjectRequest.php
index 84010aaffe33..88d3c7749672 100644
--- a/app/Http/Requests/Project/StoreProjectRequest.php
+++ b/app/Http/Requests/Project/StoreProjectRequest.php
@@ -46,7 +46,7 @@ class StoreProjectRequest extends Request
$rules['client_id'] = 'required|exists:clients,id,company_id,'.$user->company()->id;
$rules['budgeted_hours'] = 'sometimes|numeric';
$rules['task_rate'] = 'required|bail|numeric';
-
+
if (isset($this->number)) {
$rules['number'] = Rule::unique('projects')->where('company_id', $user->company()->id);
}
@@ -81,7 +81,7 @@ class StoreProjectRequest extends Request
}
$input['task_rate'] = (isset($input['task_rate']) && floatval($input['task_rate']) >= 0) ? $input['task_rate'] : 0;
-
+
$this->replace($input);
}
diff --git a/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php b/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php
index 6e2387ce79ae..27e6b1b8c7ad 100644
--- a/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php
+++ b/app/Http/Requests/PurchaseOrder/StorePurchaseOrderRequest.php
@@ -50,7 +50,7 @@ class StorePurchaseOrderRequest extends Request
$rules['number'] = ['nullable', Rule::unique('purchase_orders')->where('company_id', $user->company()->id)];
-
+
$rules['invitations'] = 'sometimes|bail|array';
$rules['invitations.*.vendor_contact_id'] = 'bail|required|distinct';
diff --git a/app/Http/Requests/Quickbooks/AuthorizedQuickbooksRequest.php b/app/Http/Requests/Quickbooks/AuthorizedQuickbooksRequest.php
index b7b2f3f5584e..39e615fef5a2 100644
--- a/app/Http/Requests/Quickbooks/AuthorizedQuickbooksRequest.php
+++ b/app/Http/Requests/Quickbooks/AuthorizedQuickbooksRequest.php
@@ -37,8 +37,8 @@ class AuthorizedQuickbooksRequest extends FormRequest
public function rules(): array
{
return [
- 'code' => 'required|string',
- 'state' => 'required|string',
+ 'code' => 'required|string',
+ 'state' => 'required|string',
'realmId' => 'required|string',
];
}
diff --git a/app/Http/Requests/Quote/StoreQuoteRequest.php b/app/Http/Requests/Quote/StoreQuoteRequest.php
index afb6226cfe62..47264fc28d10 100644
--- a/app/Http/Requests/Quote/StoreQuoteRequest.php
+++ b/app/Http/Requests/Quote/StoreQuoteRequest.php
@@ -44,7 +44,7 @@ class StoreQuoteRequest extends Request
$rules = [];
- $rules['client_id'] = ['required', 'bail', Rule::exists('clients', 'id')->where('company_id', $user->company()->id)->where('is_deleted',0)];
+ $rules['client_id'] = ['required', 'bail', Rule::exists('clients', 'id')->where('company_id', $user->company()->id)->where('is_deleted', 0)];
if ($this->file('documents') && is_array($this->file('documents'))) {
$rules['documents.*'] = $this->fileValidation();
@@ -61,7 +61,7 @@ class StoreQuoteRequest extends Request
}
$rules['number'] = ['bail','nullable', Rule::unique('quotes')->where('company_id', $user->company()->id)];
-
+
$rules['invitations'] = 'sometimes|bail|array';
$rules['invitations.*.client_contact_id'] = 'bail|required|distinct';
diff --git a/app/Http/Requests/Quote/UpdateQuoteRequest.php b/app/Http/Requests/Quote/UpdateQuoteRequest.php
index 1f5e795dedcf..4e60ea0c4e6d 100644
--- a/app/Http/Requests/Quote/UpdateQuoteRequest.php
+++ b/app/Http/Requests/Quote/UpdateQuoteRequest.php
@@ -55,7 +55,7 @@ class UpdateQuoteRequest extends Request
} elseif ($this->file('file')) {
$rules['file'] = $this->fileValidation();
}
-
+
$rules['invitations'] = 'sometimes|bail|array';
$rules['invitations.*.client_contact_id'] = 'bail|required|distinct';
diff --git a/app/Http/Requests/RecurringExpense/BulkRecurringExpenseRequest.php b/app/Http/Requests/RecurringExpense/BulkRecurringExpenseRequest.php
index 2c2cdc9e7d0e..f6697edc50f2 100644
--- a/app/Http/Requests/RecurringExpense/BulkRecurringExpenseRequest.php
+++ b/app/Http/Requests/RecurringExpense/BulkRecurringExpenseRequest.php
@@ -36,7 +36,7 @@ class BulkRecurringExpenseRequest extends Request
/** @var \App\Models\User $user */
$user = auth()->user();
-
+
return $user->can('edit', RecurringExpense::class);
}
diff --git a/app/Http/Requests/Report/GenericReportRequest.php b/app/Http/Requests/Report/GenericReportRequest.php
index 085de868efb3..8e7c658c4a2d 100644
--- a/app/Http/Requests/Report/GenericReportRequest.php
+++ b/app/Http/Requests/Report/GenericReportRequest.php
@@ -17,7 +17,6 @@ use Illuminate\Auth\Access\AuthorizationException;
class GenericReportRequest extends Request
{
-
/**
* Determine if the user is authorized to make this request.
*
diff --git a/app/Http/Requests/Shop/StoreShopClientRequest.php b/app/Http/Requests/Shop/StoreShopClientRequest.php
index 3dc6e78d3cbf..54a54fa88b7d 100644
--- a/app/Http/Requests/Shop/StoreShopClientRequest.php
+++ b/app/Http/Requests/Shop/StoreShopClientRequest.php
@@ -155,7 +155,7 @@ class StoreShopClientRequest extends Request
private function getCountryCode($country_code)
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Country> */
$countries = app('countries');
@@ -168,7 +168,7 @@ class StoreShopClientRequest extends Request
private function getCurrencyCode($code)
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Country> */
$currencies = app('currencies');
diff --git a/app/Http/Requests/Task/UpdateTaskRequest.php b/app/Http/Requests/Task/UpdateTaskRequest.php
index 7e9752d29c20..af55eea0b1f1 100644
--- a/app/Http/Requests/Task/UpdateTaskRequest.php
+++ b/app/Http/Requests/Task/UpdateTaskRequest.php
@@ -67,7 +67,7 @@ class UpdateTaskRequest extends Request
if(is_string($values)) {
$values = json_decode($values, true);
}
-
+
if(!is_array($values)) {
$fail('The '.$attribute.' must be a valid array.');
return;
diff --git a/app/Http/Requests/User/DisconnectUserMailerRequest.php b/app/Http/Requests/User/DisconnectUserMailerRequest.php
index b1c805176eee..9f5354367e15 100644
--- a/app/Http/Requests/User/DisconnectUserMailerRequest.php
+++ b/app/Http/Requests/User/DisconnectUserMailerRequest.php
@@ -15,7 +15,6 @@ use App\Http\Requests\Request;
class DisconnectUserMailerRequest extends Request
{
-
/**
* Determine if the user is authorized to make this request.
*
diff --git a/app/Http/Requests/User/UpdateUserRequest.php b/app/Http/Requests/User/UpdateUserRequest.php
index c95765e9c4ac..f4e6d8d029d7 100644
--- a/app/Http/Requests/User/UpdateUserRequest.php
+++ b/app/Http/Requests/User/UpdateUserRequest.php
@@ -77,11 +77,10 @@ class UpdateUserRequest extends Request
unset($input['oauth_user_token']);
}
- if(isset($input['password']) && is_string($input['password']))
- {
+ if(isset($input['password']) && is_string($input['password'])) {
$input['password'] = trim($input['password']);
}
-
+
$this->replace($input);
}
}
diff --git a/app/Http/ValidationRules/EInvoice/ValidClientScheme.php b/app/Http/ValidationRules/EInvoice/ValidClientScheme.php
index f21582559e4b..503125e1d8f1 100644
--- a/app/Http/ValidationRules/EInvoice/ValidClientScheme.php
+++ b/app/Http/ValidationRules/EInvoice/ValidClientScheme.php
@@ -34,8 +34,7 @@ class ValidClientScheme implements ValidationRule, ValidatorAwareRule
public function validate(string $attribute, mixed $value, Closure $fail): void
{
- if(isset($value['Invoice']))
- {
+ if(isset($value['Invoice'])) {
$r = new EInvoice();
$errors = $r->validateRequest($value['Invoice'], ClientLevel::class);
diff --git a/app/Http/ValidationRules/EInvoice/ValidCompanyScheme.php b/app/Http/ValidationRules/EInvoice/ValidCompanyScheme.php
index 6c3975d11c3e..7af375d669dc 100644
--- a/app/Http/ValidationRules/EInvoice/ValidCompanyScheme.php
+++ b/app/Http/ValidationRules/EInvoice/ValidCompanyScheme.php
@@ -24,7 +24,6 @@ use Illuminate\Contracts\Validation\ValidatorAwareRule;
*/
class ValidCompanyScheme implements ValidationRule, ValidatorAwareRule
{
-
/**
* The validator instance.
*
@@ -35,11 +34,10 @@ class ValidCompanyScheme implements ValidationRule, ValidatorAwareRule
public function validate(string $attribute, mixed $value, Closure $fail): void
{
- if(isset($value['Invoice']))
- {
+ if(isset($value['Invoice'])) {
$r = new EInvoice();
$errors = $r->validateRequest($value['Invoice'], CompanyLevel::class);
-
+
foreach ($errors as $key => $msg) {
$this->validator->errors()->add(
@@ -49,16 +47,16 @@ class ValidCompanyScheme implements ValidationRule, ValidatorAwareRule
}
}
-
+
}
-
+
/**
* Set the current validator.
*/
public function setValidator(Validator $validator): static
{
$this->validator = $validator;
-
+
return $this;
}
diff --git a/app/Http/ValidationRules/Payment/ValidInvoicesRules.php b/app/Http/ValidationRules/Payment/ValidInvoicesRules.php
index 043a2419efbb..c174b276be05 100644
--- a/app/Http/ValidationRules/Payment/ValidInvoicesRules.php
+++ b/app/Http/ValidationRules/Payment/ValidInvoicesRules.php
@@ -89,7 +89,7 @@ class ValidInvoicesRules implements Rule
} elseif (floatval($invoice['amount']) > floatval($inv->balance)) {
$this->error_msg = ctrans('texts.amount_greater_than_balance_v5');
return false;
- } elseif($inv->is_deleted){
+ } elseif($inv->is_deleted) {
$this->error_msg = 'One or more invoices in this request have since been deleted';
return false;
}
diff --git a/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php b/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php
index 61b7538c8cf0..883b7f584c0c 100644
--- a/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php
+++ b/app/Http/ViewComposers/Components/Rotessa/AccountComponent.php
@@ -42,10 +42,11 @@ class AccountComponent extends Component
"authorization_type" => 'Online'
];
- public function __construct(public array $account) {
- $this->attributes = $this->newAttributeBag(Arr::only($this->account, $this->fields) );
+ public function __construct(public array $account)
+ {
+ $this->attributes = $this->newAttributeBag(Arr::only($this->account, $this->fields));
}
-
+
public function render()
{
diff --git a/app/Http/ViewComposers/Components/Rotessa/AddressComponent.php b/app/Http/ViewComposers/Components/Rotessa/AddressComponent.php
index e7bd28d72999..5923217b2ea1 100644
--- a/app/Http/ViewComposers/Components/Rotessa/AddressComponent.php
+++ b/app/Http/ViewComposers/Components/Rotessa/AddressComponent.php
@@ -34,21 +34,25 @@ class AddressComponent extends Component
'country' => 'US'
];
- public function __construct(public array $address) {
- if(strlen($this->address['state']) > 2 ) {
- $this->address['state'] = $this->address['country'] == 'US' ? array_search($this->address['state'], USStates::$states) : CAProvinces::getAbbreviation($this->address['state']);
+ public function __construct(public array $address)
+ {
+ if(strlen($this->address['state']) > 2) {
+ $this->address['state'] = $this->address['country'] == 'US' ? array_search($this->address['state'], USStates::$states) : CAProvinces::getAbbreviation($this->address['state']);
}
$this->attributes = $this->newAttributeBag(
- Arr::only(Arr::mapWithKeys($this->address, function ($item, $key) {
- return in_array($key, ['address1','address2','state'])?[ (['address1'=>'address_1','address2'=>'address_2','state'=>'province_code'])[$key] => $item ] :[ $key => $item ];
- }),
- $this->fields) );
+ Arr::only(
+ Arr::mapWithKeys($this->address, function ($item, $key) {
+ return in_array($key, ['address1','address2','state']) ? [ (['address1' => 'address_1','address2' => 'address_2','state' => 'province_code'])[$key] => $item ] : [ $key => $item ];
+ }),
+ $this->fields
+ )
+ );
}
-
+
public function render()
{
- return render('gateways.rotessa.components.address', $this->attributes->getAttributes() + $this->defaults );
+ return render('gateways.rotessa.components.address', $this->attributes->getAttributes() + $this->defaults);
}
}
diff --git a/app/Http/ViewComposers/Components/Rotessa/ContactComponent.php b/app/Http/ViewComposers/Components/Rotessa/ContactComponent.php
index dcaff72ab283..463ef3285598 100644
--- a/app/Http/ViewComposers/Components/Rotessa/ContactComponent.php
+++ b/app/Http/ViewComposers/Components/Rotessa/ContactComponent.php
@@ -18,21 +18,20 @@ use App\Models\ClientContact;
use Illuminate\Support\Arr;
use Illuminate\View\View;
-
// Contact Component
class ContactComponent extends Component
{
+ public function __construct(ClientContact $contact)
+ {
- public function __construct(ClientContact $contact) {
-
$contact = collect($contact->client->contacts->firstWhere('is_primary', 1)->toArray())->merge([
- 'home_phone' =>$contact->client->phone,
+ 'home_phone' => $contact->client->phone,
'custom_identifier' => $contact->client->client_hash,
- 'name' =>$contact->client->name,
+ 'name' => $contact->client->name,
'id' => null,
- ] )->all();
-
- $this->attributes = $this->newAttributeBag(Arr::only($contact, $this->fields) );
+ ])->all();
+
+ $this->attributes = $this->newAttributeBag(Arr::only($contact, $this->fields));
}
private $fields = [
@@ -53,6 +52,6 @@ class ContactComponent extends Component
public function render()
{
- return render('gateways.rotessa.components.contact', $this->attributes->getAttributes() + $this->defaults );
+ return render('gateways.rotessa.components.contact', $this->attributes->getAttributes() + $this->defaults);
}
}
diff --git a/app/Http/ViewComposers/PortalComposer.php b/app/Http/ViewComposers/PortalComposer.php
index 9799260c5a17..ad7139418606 100644
--- a/app/Http/ViewComposers/PortalComposer.php
+++ b/app/Http/ViewComposers/PortalComposer.php
@@ -137,9 +137,9 @@ class PortalComposer
$data[] = ['title' => ctrans('texts.statement'), 'url' => 'client.statement', 'icon' => 'activity'];
// if (Ninja::isHosted() && auth()->guard('contact')->user()->company->id == config('ninja.ninja_default_company_id')) {
- $data[] = ['title' => ctrans('texts.plan'), 'url' => 'client.plan', 'icon' => 'credit-card'];
+ $data[] = ['title' => ctrans('texts.plan'), 'url' => 'client.plan', 'icon' => 'credit-card'];
// } else {
- $data[] = ['title' => ctrans('texts.subscriptions'), 'url' => 'client.subscriptions.index', 'icon' => 'calendar'];
+ $data[] = ['title' => ctrans('texts.subscriptions'), 'url' => 'client.subscriptions.index', 'icon' => 'calendar'];
// }
if (auth()->guard('contact')->user()->client->getSetting('client_initiated_payments')) {
diff --git a/app/Http/ViewComposers/RotessaComposer.php b/app/Http/ViewComposers/RotessaComposer.php
index 6fea87852442..a8cdff368163 100644
--- a/app/Http/ViewComposers/RotessaComposer.php
+++ b/app/Http/ViewComposers/RotessaComposer.php
@@ -21,4 +21,4 @@ View::composer(['*.rotessa.components.address','*.rotessa.components.banks.US.ba
View::composer(['*.rotessa.components.address','*.rotessa.components.banks.CA.bank','*.rotessa.components.dropdowns.country.CA'], function ($view) {
$provinces = CAProvinces::get();
$view->with('provinces', $provinces);
-});
\ No newline at end of file
+});
diff --git a/app/Import/Providers/BaseImport.php b/app/Import/Providers/BaseImport.php
index fef3ccdd269f..483993951309 100644
--- a/app/Import/Providers/BaseImport.php
+++ b/app/Import/Providers/BaseImport.php
@@ -105,7 +105,7 @@ class BaseImport
}
nlog("found {$entity_type}");
-
+
$csv = base64_decode($base64_encoded_csv);
$csv = mb_convert_encoding($csv, 'UTF-8', 'UTF-8');
@@ -474,7 +474,7 @@ class BaseImport
$tasks = $this->groupTasks($tasks, $task_number_key);
nlog($tasks);
-
+
foreach ($tasks as $raw_task) {
$task_data = [];
@@ -706,8 +706,8 @@ class BaseImport
if ($invoice->status_id == Invoice::STATUS_DRAFT) {
return $invoice;
- }
-
+ }
+
$invoice = $invoice
->service()
->markSent()
diff --git a/app/Import/Providers/Quickbooks.php b/app/Import/Providers/Quickbooks.php
index 5bd968443b5c..6dd7d5784b3f 100644
--- a/app/Import/Providers/Quickbooks.php
+++ b/app/Import/Providers/Quickbooks.php
@@ -12,23 +12,24 @@
namespace App\Import\Providers;
use App\Models\Invoice;
-use App\Factory\ProductFactory;
use App\Factory\ClientFactory;
use App\Factory\InvoiceFactory;
use App\Factory\PaymentFactory;
+use App\Factory\ProductFactory;
+use App\Import\ImportException;
use Illuminate\Support\Facades\Cache;
use App\Repositories\ClientRepository;
use App\Repositories\InvoiceRepository;
-use App\Repositories\ProductRepository;
use App\Repositories\PaymentRepository;
+use App\Repositories\ProductRepository;
use App\Http\Requests\Client\StoreClientRequest;
-use App\Http\Requests\Product\StoreProductRequest;
use App\Http\Requests\Invoice\StoreInvoiceRequest;
use App\Http\Requests\Payment\StorePaymentRequest;
+use App\Http\Requests\Product\StoreProductRequest;
use App\Import\Transformer\Quickbooks\ClientTransformer;
use App\Import\Transformer\Quickbooks\InvoiceTransformer;
-use App\Import\Transformer\Quickbooks\ProductTransformer;
use App\Import\Transformer\Quickbooks\PaymentTransformer;
+use App\Import\Transformer\Quickbooks\ProductTransformer;
class Quickbooks extends BaseImport
{
@@ -72,7 +73,7 @@ class Quickbooks extends BaseImport
$this->transformer = new ClientTransformer($this->company);
$client_count = $this->ingest($data, $entity_type);
$this->entity_count['clients'] = $client_count;
- }
+ }
public function product()
{
@@ -92,12 +93,13 @@ class Quickbooks extends BaseImport
$this->transformer = new ProductTransformer($this->company);
$count = $this->ingest($data, $entity_type);
$this->entity_count['products'] = $count;
- }
+ }
- public function getData($type) {
+ public function getData($type)
+ {
// get the data from cache? file? or api ?
- return json_decode(base64_decode(Cache::get("{$this->hash}-$type")), 1);
+ return json_decode(base64_decode(Cache::get("{$this->hash}-{$type}")), true);
}
public function payment()
@@ -122,7 +124,7 @@ class Quickbooks extends BaseImport
public function invoice()
{
- //make sure we update and create products
+ //make sure we update and create products
$initial_update_products_value = $this->company->update_products;
$this->company->update_products = true;
@@ -143,7 +145,7 @@ class Quickbooks extends BaseImport
$this->repository = app()->make($this->repository_name);
$this->repository->import_mode = true;
$this->transformer = new InvoiceTransformer($this->company);
- $invoice_count = $this->ingestInvoices($data,'');
+ $invoice_count = $this->ingestInvoices($data, '');
$this->entity_count['invoices'] = $invoice_count;
$this->company->update_products = $initial_update_products_value;
$this->company->save();
@@ -158,7 +160,7 @@ class Quickbooks extends BaseImport
$client_repository->import_mode = true;
$invoice_repository = new InvoiceRepository();
$invoice_repository->import_mode = true;
-
+
foreach ($invoices as $raw_invoice) {
if(!is_array($raw_invoice)) {
continue;
@@ -171,7 +173,7 @@ class Quickbooks extends BaseImport
$invoice_data['line_items'] = $this->cleanItems(
$invoice_data['line_items'] ?? []
);
-
+
if (
empty($invoice_data['client_id']) &&
! empty($invoice_data['client'])
@@ -189,7 +191,7 @@ class Quickbooks extends BaseImport
);
$invoice_data['client_id'] = $client->id;
unset($invoice_data['client']);
- }
+ }
$validator = $this->request_name::runFormRequest($invoice_data);
if ($validator->fails()) {
@@ -198,8 +200,7 @@ class Quickbooks extends BaseImport
'error' => $validator->errors()->all(),
];
} else {
- if(!Invoice::where('number',$invoice_data['number'])->get()->first())
- {
+ if(!Invoice::where('number', $invoice_data['number'])->first()) {
$invoice = InvoiceFactory::create(
$this->company->id,
$this->company->owner()->id
@@ -208,16 +209,16 @@ class Quickbooks extends BaseImport
if (! empty($invoice_data['status_id'])) {
$invoice->status_id = $invoice_data['status_id'];
}
-
+
$saveable_invoice_data = $invoice_data;
if(array_key_exists('payments', $saveable_invoice_data)) {
unset($saveable_invoice_data['payments']);
}
-
+
$invoice->fill($saveable_invoice_data);
$invoice->save();
$count++;
-
+
}
// $this->actionInvoiceStatus(
// $invoice,
@@ -245,7 +246,7 @@ class Quickbooks extends BaseImport
];
}
}
-
+
return $count;
}
diff --git a/app/Import/Providers/Wave.php b/app/Import/Providers/Wave.php
index 1fbd58b0e0c0..ce936dd01a8a 100644
--- a/app/Import/Providers/Wave.php
+++ b/app/Import/Providers/Wave.php
@@ -244,8 +244,7 @@ class Wave extends BaseImport implements ImportInterface
if (empty($expense_data['vendor_id'])) {
$vendor_data['user_id'] = $this->getUserIDForRecord($expense_data);
- if(isset($raw_expense['Vendor Name']) || isset($raw_expense['Vendor']))
- {
+ if(isset($raw_expense['Vendor Name']) || isset($raw_expense['Vendor'])) {
$vendor_repository->save(
['name' => isset($raw_expense['Vendor Name']) ? $raw_expense['Vendor Name'] : isset($raw_expense['Vendor'])],
$vendor = VendorFactory::create(
diff --git a/app/Import/Transformer/BaseTransformer.php b/app/Import/Transformer/BaseTransformer.php
index 2dc91e6c2f47..c75e377ff935 100644
--- a/app/Import/Transformer/BaseTransformer.php
+++ b/app/Import/Transformer/BaseTransformer.php
@@ -119,8 +119,9 @@ class BaseTransformer
{
$code = array_key_exists($key, $data) ? $data[$key] : false;
- if(!$code)
+ if(!$code) {
return $this->company->settings->currency_id;
+ }
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
diff --git a/app/Import/Transformer/Quickbooks/ClientTransformer.php b/app/Import/Transformer/Quickbooks/ClientTransformer.php
index 8cfbd94befe7..1a1d487652aa 100644
--- a/app/Import/Transformer/Quickbooks/ClientTransformer.php
+++ b/app/Import/Transformer/Quickbooks/ClientTransformer.php
@@ -24,7 +24,6 @@ use Illuminate\Support\Str;
*/
class ClientTransformer extends BaseTransformer
{
-
use CommonTrait {
transform as preTransform;
}
@@ -49,7 +48,7 @@ class ClientTransformer extends BaseTransformer
{
parent::__construct($company);
- $this->model = new Model;
+ $this->model = new Model();
}
@@ -68,12 +67,13 @@ class ClientTransformer extends BaseTransformer
}
$transformed_data = $this->preTransform($data);
- $transformed_data['contacts'][0] = $this->getContacts($data)->toArray()+['company_id' => $this->company->id ];
-
+ $transformed_data['contacts'][0] = $this->getContacts($data)->toArray() + ['company_id' => $this->company->id ];
+
return $transformed_data;
}
- protected function getContacts($data) {
+ protected function getContacts($data)
+ {
return (new ClientContact())->fill([
'first_name' => $this->getString($data, 'GivenName'),
'last_name' => $this->getString($data, 'FamilyName'),
@@ -84,12 +84,14 @@ class ClientTransformer extends BaseTransformer
}
- public function getShipAddrCountry($data,$field) {
- return is_null(($c = $this->getString($data,$field))) ? null : $this->getCountryId($c);
+ public function getShipAddrCountry($data, $field)
+ {
+ return is_null(($c = $this->getString($data, $field))) ? null : $this->getCountryId($c);
}
- public function getBillAddrCountry($data,$field) {
- return is_null(($c = $this->getString($data,$field))) ? null : $this->getCountryId($c);
+ public function getBillAddrCountry($data, $field)
+ {
+ return is_null(($c = $this->getString($data, $field))) ? null : $this->getCountryId($c);
}
}
diff --git a/app/Import/Transformer/Quickbooks/CommonTrait.php b/app/Import/Transformer/Quickbooks/CommonTrait.php
index d618f94120ed..19bcaccadca2 100644
--- a/app/Import/Transformer/Quickbooks/CommonTrait.php
+++ b/app/Import/Transformer/Quickbooks/CommonTrait.php
@@ -8,8 +8,9 @@ trait CommonTrait
{
protected $model;
- public function getString($data,$field) {
- return Arr::get($data,$field);
+ public function getString($data, $field)
+ {
+ return Arr::get($data, $field);
}
public function getCreateTime($data, $field = null)
@@ -19,7 +20,7 @@ trait CommonTrait
public function getLastUpdatedTime($data, $field = null)
{
- return $this->parseDateOrNull($data,'MetaData.LastUpdatedTime');
+ return $this->parseDateOrNull($data, 'MetaData.LastUpdatedTime');
}
public function transform($data)
@@ -27,10 +28,10 @@ trait CommonTrait
$transformed = [];
foreach ($this->fillable as $key => $field) {
- $transformed[$key] = is_null((($v = $this->getString($data, $field))))? null : (method_exists($this, ($method = "get{$field}")) ? call_user_func([$this, $method], $data, $field ) : $this->getString($data,$field));
+ $transformed[$key] = is_null((($v = $this->getString($data, $field)))) ? null : (method_exists($this, ($method = "get{$field}")) ? call_user_func([$this, $method], $data, $field) : $this->getString($data, $field));
}
return $this->model->fillable(array_keys($this->fillable))->fill($transformed)->toArray() + ['company_id' => $this->company->id ] ;
}
-}
\ No newline at end of file
+}
diff --git a/app/Import/Transformer/Quickbooks/InvoiceTransformer.php b/app/Import/Transformer/Quickbooks/InvoiceTransformer.php
index fe2f998c1c4a..a4f2f564595a 100644
--- a/app/Import/Transformer/Quickbooks/InvoiceTransformer.php
+++ b/app/Import/Transformer/Quickbooks/InvoiceTransformer.php
@@ -11,10 +11,11 @@
namespace App\Import\Transformer\Quickbooks;
-use Illuminate\Support\Str;
+use App\Models\Invoice;
use Illuminate\Support\Arr;
-use App\Import\ImportException;
+use Illuminate\Support\Str;
use App\DataMapper\InvoiceItem;
+use App\Import\ImportException;
use App\Models\Invoice as Model;
use App\Import\Transformer\BaseTransformer;
use App\Import\Transformer\Quickbooks\CommonTrait;
@@ -48,7 +49,7 @@ class InvoiceTransformer extends BaseTransformer
{
parent::__construct($company);
- $this->model = new Model;
+ $this->model = new Model();
}
public function getInvoiceStatus($data)
@@ -58,33 +59,34 @@ class InvoiceTransformer extends BaseTransformer
public function transform($data)
{
- return $this->preTransform($data) + $this->getInvoiceClient($data);
+ return $this->preTransform($data) + $this->getInvoiceClient($data);
}
public function getTotalAmt($data)
{
- return (float) $this->getString($data,'TotalAmt');
+ return (float) $this->getString($data, 'TotalAmt');
}
public function getLine($data)
{
return array_map(function ($item) {
return [
- 'description' => $this->getString($item,'Description'),
- 'product_key' => $this->getString($item,'Description'),
- 'quantity' => (int) $this->getString($item,'SalesItemLineDetail.Qty'),
- 'unit_price' =>(double) $this->getString($item,'SalesItemLineDetail.UnitPrice'),
- 'line_total' => (double) $this->getString($item,'Amount'),
- 'cost' =>(double) $this->getString($item,'SalesItemLineDetail.UnitPrice'),
- 'product_cost' => (double) $this->getString($item,'SalesItemLineDetail.UnitPrice'),
- 'tax_amount' => (double) $this->getString($item,'TxnTaxDetail.TotalTax'),
+ 'description' => $this->getString($item, 'Description'),
+ 'product_key' => $this->getString($item, 'Description'),
+ 'quantity' => (int) $this->getString($item, 'SalesItemLineDetail.Qty'),
+ 'unit_price' => (float) $this->getString($item, 'SalesItemLineDetail.UnitPrice'),
+ 'line_total' => (float) $this->getString($item, 'Amount'),
+ 'cost' => (float) $this->getString($item, 'SalesItemLineDetail.UnitPrice'),
+ 'product_cost' => (float) $this->getString($item, 'SalesItemLineDetail.UnitPrice'),
+ 'tax_amount' => (float) $this->getString($item, 'TxnTaxDetail.TotalTax'),
];
- }, array_filter($this->getString($data,'Line'), function ($item) {
- return $this->getString($item,'DetailType') !== 'SubTotalLineDetail';
+ }, array_filter($this->getString($data, 'Line'), function ($item) {
+ return $this->getString($item, 'DetailType') !== 'SubTotalLineDetail';
}));
}
- public function getInvoiceClient($data, $field = null) {
+ public function getInvoiceClient($data, $field = null)
+ {
/**
* "CustomerRef": {
"value": "23",
@@ -135,23 +137,22 @@ class InvoiceTransformer extends BaseTransformer
$customer = explode(" ", $this->getString($data, 'CustomerRef.name'));
$customer = ['GivenName' => $customer[0], 'FamilyName' => $customer[1]];
$has_company = property_exists($bill_address, 'Line4');
- $address = $has_company? $bill_address->Line4 : $bill_address->Line3;
- $address_1 = substr($address, 0, stripos($address,','));
- $address =array_filter( [$address_1] + (explode(' ', substr($address, stripos($address,",") + 1 ))));
+ $address = $has_company ? $bill_address->Line4 : $bill_address->Line3;
+ $address_1 = substr($address, 0, stripos($address, ','));
+ $address = array_filter([$address_1] + (explode(' ', substr($address, stripos($address, ",") + 1))));
$client_id = null;
- $client =
+ $client =
[
- "CompanyName" => $has_company? $bill_address->Line2 : $bill_address->Line1,
- "BillAddr" => array_combine(['City','CountrySubDivisionCode','PostalCode'], array_pad($address,3,'N/A') ) + ['Line1' => $has_company? $bill_address->Line3 : $bill_address->Line2 ],
+ "CompanyName" => $has_company ? $bill_address->Line2 : $bill_address->Line1,
+ "BillAddr" => array_combine(['City','CountrySubDivisionCode','PostalCode'], array_pad($address, 3, 'N/A')) + ['Line1' => $has_company ? $bill_address->Line3 : $bill_address->Line2 ],
"ShipAddr" => $ship_address
] + $customer + ['PrimaryEmailAddr' => ['Address' => $this->getString($data, 'BillEmail.Address') ]];
- if($this->hasClient($client['CompanyName']))
- {
- $client_id = $this->getClient($client['CompanyName'],$this->getString($client, 'PrimaryEmailAddr.Address'));
+ if($this->hasClient($client['CompanyName'])) {
+ $client_id = $this->getClient($client['CompanyName'], $this->getString($client, 'PrimaryEmailAddr.Address'));
}
-
-
- return ['client'=> (new ClientTransformer($this->company))->transform($client), 'client_id'=> $client_id ];
+
+
+ return ['client' => (new ClientTransformer($this->company))->transform($client), 'client_id' => $client_id ];
}
public function getDueDate($data)
@@ -161,36 +162,39 @@ class InvoiceTransformer extends BaseTransformer
public function getDeposit($data)
{
- return (double) $this->getString($data,'Deposit');
+ return (float) $this->getString($data, 'Deposit');
}
public function getBalance($data)
{
- return (double) $this->getString($data,'Balance');
+ return (float) $this->getString($data, 'Balance');
}
public function getCustomerMemo($data)
{
- return $this->getString($data,'CustomerMemo.value');
+ return $this->getString($data, 'CustomerMemo.value');
}
- public function getDocNumber($data, $field = null)
+ public function getDocNumber($data, $field = null)
{
- return sprintf("%s-%s",
- $this->getString($data, 'DocNumber'),
- $this->getString($data, 'Id.value')
- );
+ return sprintf(
+ "%s-%s",
+ $this->getString($data, 'DocNumber'),
+ $this->getString($data, 'Id.value')
+ );
}
public function getLinkedTxn($data)
{
- $payments = $this->getString($data,'LinkedTxn');
- if(empty($payments)) return [];
+ $payments = $this->getString($data, 'LinkedTxn');
+ if(empty($payments)) {
+ return [];
+ }
- return [[
- 'amount' => $this->getTotalAmt($data),
- 'date' => $this->parseDateOrNull($data, 'TxnDate')
- ]];
+ return [[
+ 'amount' => $this->getTotalAmt($data),
+ 'date' => $this->parseDateOrNull($data, 'TxnDate')
+ ]];
}
}
diff --git a/app/Import/Transformer/Quickbooks/PaymentTransformer.php b/app/Import/Transformer/Quickbooks/PaymentTransformer.php
index 5156d0fa61d0..c23ce0e242b3 100644
--- a/app/Import/Transformer/Quickbooks/PaymentTransformer.php
+++ b/app/Import/Transformer/Quickbooks/PaymentTransformer.php
@@ -21,7 +21,7 @@ use Illuminate\Support\Arr;
use App\Models\Invoice;
/**
- *
+ *
* Class PaymentTransformer.
*/
class PaymentTransformer extends BaseTransformer
@@ -44,10 +44,11 @@ class PaymentTransformer extends BaseTransformer
{
parent::__construct($company);
- $this->model = new Model;
+ $this->model = new Model();
}
- public function getTotalAmt($data, $field = null) {
+ public function getTotalAmt($data, $field = null)
+ {
return (float) $this->getString($data, $field);
}
@@ -56,12 +57,12 @@ class PaymentTransformer extends BaseTransformer
return $this->parseDateOrNull($data, $field);
}
- public function getCustomerRef($data, $field = null )
+ public function getCustomerRef($data, $field = null)
{
- return $this->getClient($this->getString($data, 'CustomerRef.name'),null);
+ return $this->getClient($this->getString($data, 'CustomerRef.name'), null);
}
- public function getCurrencyRef($data, $field = null)
+ public function getCurrencyRef($data, $field = null)
{
return $this->getCurrencyByCode($data['CurrencyRef'], 'value');
}
@@ -69,26 +70,32 @@ class PaymentTransformer extends BaseTransformer
public function getLine($data, $field = null)
{
$invoices = [];
- $invoice = $this->getString($data,'Line.LinkedTxn.TxnType');
- if(is_null($invoice) || $invoice !== 'Invoice') return $invoices;
- if( is_null( ($invoice_id = $this->getInvoiceId($this->getString($data, 'Line.LinkedTxn.TxnId.value')))) ) return $invoices;
-
+ $invoice = $this->getString($data, 'Line.LinkedTxn.TxnType');
+ if(is_null($invoice) || $invoice !== 'Invoice') {
+ return $invoices;
+ }
+ if(is_null(($invoice_id = $this->getInvoiceId($this->getString($data, 'Line.LinkedTxn.TxnId.value'))))) {
+ return $invoices;
+ }
+
return [[
'amount' => (float) $this->getString($data, 'Line.Amount'),
'invoice_id' => $invoice_id
]];
}
- /**
- * @param $invoice_number
- *
- * @return int|null
- */
+ /**
+ * @param $invoice_number
+ *
+ * @return int|null
+ */
public function getInvoiceId($invoice_number)
{
$invoice = Invoice::query()->where('company_id', $this->company->id)
->where('is_deleted', false)
- ->where("number", "LIKE",
+ ->where(
+ "number",
+ "LIKE",
"%-$invoice_number%",
)
->first();
diff --git a/app/Import/Transformer/Quickbooks/ProductTransformer.php b/app/Import/Transformer/Quickbooks/ProductTransformer.php
index af7b9342ab91..f66dbd236cf2 100644
--- a/app/Import/Transformer/Quickbooks/ProductTransformer.php
+++ b/app/Import/Transformer/Quickbooks/ProductTransformer.php
@@ -22,9 +22,8 @@ use App\Import\ImportException;
*/
class ProductTransformer extends BaseTransformer
{
-
use CommonTrait;
-
+
protected $fillable = [
'product_key' => 'Name',
'notes' => 'Description',
@@ -41,19 +40,22 @@ class ProductTransformer extends BaseTransformer
{
parent::__construct($company);
- $this->model = new Model;
+ $this->model = new Model();
}
- public function getQtyOnHand($data, $field = null) {
+ public function getQtyOnHand($data, $field = null)
+ {
return (int) $this->getString($data, $field);
}
- public function getPurchaseCost($data, $field = null) {
- return (double) $this->getString($data, $field);
+ public function getPurchaseCost($data, $field = null)
+ {
+ return (float) $this->getString($data, $field);
}
- public function getUnitPrice($data, $field = null) {
+ public function getUnitPrice($data, $field = null)
+ {
return (float) $this->getString($data, $field);
}
}
diff --git a/app/Import/Transformer/Wave/ExpenseTransformer.php b/app/Import/Transformer/Wave/ExpenseTransformer.php
index afd282b80d63..9bfa34c0b466 100644
--- a/app/Import/Transformer/Wave/ExpenseTransformer.php
+++ b/app/Import/Transformer/Wave/ExpenseTransformer.php
@@ -38,13 +38,14 @@ class ExpenseTransformer extends BaseTransformer
$tax_rate = $total_tax > 0 ? round(($total_tax / $amount) * 100, 3) : 0;
- if(isset($data['Notes / Memo']) && strlen($data['Notes / Memo']) > 1)
+ if(isset($data['Notes / Memo']) && strlen($data['Notes / Memo']) > 1) {
$public_notes = $data['Notes / Memo'];
- elseif (isset($data['Transaction Description']) && strlen($data['Transaction Description']) > 1)
+ } elseif (isset($data['Transaction Description']) && strlen($data['Transaction Description']) > 1) {
$public_notes = $data['Transaction Description'];
- else
+ } else {
$public_notes = '';
-
+ }
+
$transformed = [
'company_id' => $this->company->id,
diff --git a/app/Jobs/Bank/MatchBankTransactions.php b/app/Jobs/Bank/MatchBankTransactions.php
index 326d9952583d..d886846a8c32 100644
--- a/app/Jobs/Bank/MatchBankTransactions.php
+++ b/app/Jobs/Bank/MatchBankTransactions.php
@@ -237,7 +237,7 @@ class MatchBankTransactions implements ShouldQueue
$amount = $this->bt->amount;
- if ($_invoices->count() >0 && $this->checkPayable($_invoices)) {
+ if ($_invoices->count() > 0 && $this->checkPayable($_invoices)) {
$this->createPayment($_invoices, $amount);
$this->bts->push($this->bt->id);
@@ -387,7 +387,7 @@ class MatchBankTransactions implements ShouldQueue
$hashed_keys = [];
- foreach($this->attachable_invoices as $attachable_invoice){ //@phpstan-ignore-line
+ foreach($this->attachable_invoices as $attachable_invoice) { //@phpstan-ignore-line
$hashed_keys[] = $this->encodePrimaryKey($attachable_invoice['id']);
}
diff --git a/app/Jobs/Brevo/ProcessBrevoWebhook.php b/app/Jobs/Brevo/ProcessBrevoWebhook.php
index b81772fd2c0a..2c5c0f2b2d5f 100644
--- a/app/Jobs/Brevo/ProcessBrevoWebhook.php
+++ b/app/Jobs/Brevo/ProcessBrevoWebhook.php
@@ -55,7 +55,7 @@ class ProcessBrevoWebhook implements ShouldQueue
'events' => [],
];
-
+
/** @var ?\App\Models\Company $company*/
private ?Company $company = null;
diff --git a/app/Jobs/Client/UpdateTaxData.php b/app/Jobs/Client/UpdateTaxData.php
index 8a637f8b9bb6..4801b71e1bb1 100644
--- a/app/Jobs/Client/UpdateTaxData.php
+++ b/app/Jobs/Client/UpdateTaxData.php
@@ -69,7 +69,7 @@ class UpdateTaxData implements ShouldQueue
}
- } catch(\Exception $e) {
+ } catch(\Exception $e) {
nlog("Exception:: UpdateTaxData::" . $e->getMessage());
nlog("problem getting tax data => ".$e->getMessage());
}
diff --git a/app/Jobs/Company/CompanyExport.php b/app/Jobs/Company/CompanyExport.php
index 9cc901cdf240..07252140decd 100644
--- a/app/Jobs/Company/CompanyExport.php
+++ b/app/Jobs/Company/CompanyExport.php
@@ -468,7 +468,7 @@ class CompanyExport implements ShouldQueue
$x->addItems($this->export_data['subscriptions']);
$this->export_data = null;
-
+
$this->export_data['system_logs'] = $this->company->system_logs->map(function ($log) {
$log->client_id = $this->encodePrimaryKey($log->client_id);/** @phpstan-ignore-line */
$log->company_id = $this->encodePrimaryKey($log->company_id);/** @phpstan-ignore-line */
diff --git a/app/Jobs/Company/CompanyImport.php b/app/Jobs/Company/CompanyImport.php
index 9108998985c3..ef436ab0e764 100644
--- a/app/Jobs/Company/CompanyImport.php
+++ b/app/Jobs/Company/CompanyImport.php
@@ -1407,10 +1407,10 @@ class CompanyImport implements ShouldQueue
switch ($type) {
case 'invoices':
return $this->transformId('invoices', $id);
-
+
case Credit::class:
return $this->transformId('credits', $id);
-
+
case Payment::class:
return $this->transformId('payments', $id);
default:
diff --git a/app/Jobs/Cron/RecurringExpensesCron.php b/app/Jobs/Cron/RecurringExpensesCron.php
index e996afac35b9..04d649966be3 100644
--- a/app/Jobs/Cron/RecurringExpensesCron.php
+++ b/app/Jobs/Cron/RecurringExpensesCron.php
@@ -114,8 +114,7 @@ class RecurringExpensesCron
$exchange_rate = new CurrencyApi();
$expense->exchange_rate = $exchange_rate->exchangeRate($expense->currency_id, (int)$expense->company->settings->currency_id, Carbon::parse($expense->date));
- }
- else {
+ } else {
$expense->exchange_rate = 1;
}
diff --git a/app/Jobs/Cron/SubscriptionCron.php b/app/Jobs/Cron/SubscriptionCron.php
index b3ddbb3e7e32..43dcb60a07d2 100644
--- a/app/Jobs/Cron/SubscriptionCron.php
+++ b/app/Jobs/Cron/SubscriptionCron.php
@@ -65,7 +65,7 @@ class SubscriptionCron
//Requires the crons to be updated and set to hourly @ 00:01
private function timezoneAware()
{
-
+
Invoice::query()
->with('company')
->where('is_deleted', 0)
diff --git a/app/Jobs/EDocument/ImportEDocument.php b/app/Jobs/EDocument/ImportEDocument.php
index e92860faf81c..aacc9b7f35ca 100644
--- a/app/Jobs/EDocument/ImportEDocument.php
+++ b/app/Jobs/EDocument/ImportEDocument.php
@@ -43,7 +43,7 @@ class ImportEDocument implements ShouldQueue
*/
public function handle(): Expense
{
-
+
switch (true) {
case stristr($this->file_content, "urn:cen.eu:en16931:2017"):
case stristr($this->file_content, "urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0"):
diff --git a/app/Jobs/Entity/CreateRawPdf.php b/app/Jobs/Entity/CreateRawPdf.php
index 4d52e4319758..c5c777ae4101 100644
--- a/app/Jobs/Entity/CreateRawPdf.php
+++ b/app/Jobs/Entity/CreateRawPdf.php
@@ -118,7 +118,7 @@ class CreateRawPdf
if ($this->entity_string == "invoice" && $this->entity->client->getSetting("merge_e_invoice_to_pdf")) {
$pdf = (new MergeEDocument($this->entity, $pdf))->handle();
- }
+ }
$merge_docs = isset($this->entity->client) ? $this->entity->client->getSetting('embed_documents') : $this->company->getSetting('embed_documents');
diff --git a/app/Jobs/Import/QuickbooksIngest.php b/app/Jobs/Import/QuickbooksIngest.php
index e240623bf9ac..b32db16f0eeb 100644
--- a/app/Jobs/Import/QuickbooksIngest.php
+++ b/app/Jobs/Import/QuickbooksIngest.php
@@ -12,7 +12,10 @@ use Illuminate\Foundation\Bus\Dispatchable;
class QuickbooksIngest implements ShouldQueue
{
- use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+ use Dispatchable;
+ use InteractsWithQueue;
+ use Queueable;
+ use SerializesModels;
protected $engine;
protected $request;
@@ -35,7 +38,7 @@ class QuickbooksIngest implements ShouldQueue
MultiDB::setDb($this->company->db);
set_time_limit(0);
- $engine = new Quickbooks(['import_type' => 'client', 'hash'=> $this->request['hash'] ], $this->company);
+ $engine = new Quickbooks(['import_type' => 'client', 'hash' => $this->request['hash'] ], $this->company);
foreach ($this->request['import_types'] as $entity) {
$engine->import($entity);
}
diff --git a/app/Jobs/Quote/QuoteCheckExpired.php b/app/Jobs/Quote/QuoteCheckExpired.php
index 15a9ab9383de..edf9ac57b919 100644
--- a/app/Jobs/Quote/QuoteCheckExpired.php
+++ b/app/Jobs/Quote/QuoteCheckExpired.php
@@ -60,7 +60,7 @@ class QuoteCheckExpired implements ShouldQueue
->whereHas('company', function ($query) {
$query->where('is_disabled', 0);
})
-
+
->whereBetween('quotes.due_date', [now()->subDay()->startOfDay(), now()->startOfDay()->subSecond()])
->cursor()
->each(function ($quote) {
@@ -82,7 +82,7 @@ class QuoteCheckExpired implements ShouldQueue
->whereHas('company', function ($query) {
$query->where('is_disabled', 0);
})
-
+
->whereBetween('quotes.due_date', [now()->subDay()->startOfDay(), now()->startOfDay()->subSecond()])
->cursor()
->each(function ($quote) {
diff --git a/app/Jobs/Subscription/CleanStaleInvoiceOrder.php b/app/Jobs/Subscription/CleanStaleInvoiceOrder.php
index d8295ed9f54d..9795d08cd2c7 100644
--- a/app/Jobs/Subscription/CleanStaleInvoiceOrder.php
+++ b/app/Jobs/Subscription/CleanStaleInvoiceOrder.php
@@ -95,7 +95,7 @@ class CleanStaleInvoiceOrder implements ShouldQueue
->each(function ($invoice) {
$invoice->service()->removeUnpaidGatewayFees();
});
-
+
\DB::connection($db)->table('password_resets')->where('created_at', '<', now()->subHours(12))->delete();
}
diff --git a/app/Jobs/Task/TaskAssigned.php b/app/Jobs/Task/TaskAssigned.php
index 5668a39d388e..4e72637b0303 100644
--- a/app/Jobs/Task/TaskAssigned.php
+++ b/app/Jobs/Task/TaskAssigned.php
@@ -48,12 +48,11 @@ class TaskAssigned implements ShouldQueue
$company_user = $this->task->assignedCompanyUser();
- if(($company_user instanceof CompanyUser) && $this->findEntityAssignedNotification($company_user, 'task'))
- {
+ if(($company_user instanceof CompanyUser) && $this->findEntityAssignedNotification($company_user, 'task')) {
$mo = new EmailObject();
$mo->subject = ctrans('texts.task_assigned_subject', ['task' => $this->task->number, 'date' => now()->setTimeZone($this->task->company->timezone()->name)->format($this->task->company->date_format()) ]);
- $mo->body = ctrans('texts.task_assigned_body',['task' => $this->task->number, 'description' => $this->task->description ?? '', 'client' => $this->task->client ? $this->task->client->present()->name() : ' ']);
- $mo->text_body = ctrans('texts.task_assigned_body',['task' => $this->task->number, 'description' => $this->task->description ?? '', 'client' => $this->task->client ? $this->task->client->present()->name() : ' ']);
+ $mo->body = ctrans('texts.task_assigned_body', ['task' => $this->task->number, 'description' => $this->task->description ?? '', 'client' => $this->task->client ? $this->task->client->present()->name() : ' ']);
+ $mo->text_body = ctrans('texts.task_assigned_body', ['task' => $this->task->number, 'description' => $this->task->description ?? '', 'client' => $this->task->client ? $this->task->client->present()->name() : ' ']);
$mo->company_key = $this->task->company->company_key;
$mo->html_template = 'email.template.generic';
$mo->to = [new Address($this->task->assigned_user->email, $this->task->assigned_user->present()->name())];
@@ -61,7 +60,7 @@ class TaskAssigned implements ShouldQueue
$mo->email_template_subject = 'task_assigned_subject';
(new Email($mo, $this->task->company))->handle();
-
+
}
}
diff --git a/app/Jobs/Util/Import.php b/app/Jobs/Util/Import.php
index f4961b19fc43..81bfa656c537 100644
--- a/app/Jobs/Util/Import.php
+++ b/app/Jobs/Util/Import.php
@@ -2069,7 +2069,7 @@ class Import implements ShouldQueue
nlog($exception->getMessage());
app('sentry')->captureException($exception);
-
+
}
diff --git a/app/Jobs/Util/QuoteReminderJob.php b/app/Jobs/Util/QuoteReminderJob.php
index a583062df824..111e8b2723f9 100644
--- a/app/Jobs/Util/QuoteReminderJob.php
+++ b/app/Jobs/Util/QuoteReminderJob.php
@@ -99,7 +99,7 @@ class QuoteReminderJob implements ShouldQueue
->whereHas('company', function ($query) {
$query->where('is_disabled', 0);
})
-
+
->with('invitations')->chunk(50, function ($quotes) {
foreach ($quotes as $quote) {
diff --git a/app/Livewire/BillingPortal/Authentication/RegisterOrLogin.php b/app/Livewire/BillingPortal/Authentication/RegisterOrLogin.php
index 559ad798d1b9..3016bc8f1db2 100644
--- a/app/Livewire/BillingPortal/Authentication/RegisterOrLogin.php
+++ b/app/Livewire/BillingPortal/Authentication/RegisterOrLogin.php
@@ -256,7 +256,7 @@ class RegisterOrLogin extends Component
public function render()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Country> */
$countries = app('countries');
diff --git a/app/Livewire/BillingPortalPurchase.php b/app/Livewire/BillingPortalPurchase.php
index 96d7e8dcdd3e..34afb103097e 100644
--- a/app/Livewire/BillingPortalPurchase.php
+++ b/app/Livewire/BillingPortalPurchase.php
@@ -285,7 +285,7 @@ class BillingPortalPurchase extends Component
}
if (array_key_exists('currency_id', $this->request_data)) {
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
@@ -312,7 +312,7 @@ class BillingPortalPurchase extends Component
if (array_key_exists('locale', $this->request_data)) {
$request = $this->request_data;
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
$record = $languages->first(function ($item) use ($request) {
@@ -363,11 +363,12 @@ class BillingPortalPurchase extends Component
$method_values = array_column($this->methods, 'is_paypal');
$is_paypal = in_array('1', $method_values);
- if($is_paypal && !$this->steps['check_rff'])
+ if($is_paypal && !$this->steps['check_rff']) {
$this->rff();
- elseif(!$this->steps['check_rff'])
+ } elseif(!$this->steps['check_rff']) {
$this->steps['fetched_payment_methods'] = true;
-
+ }
+
$this->heading_text = ctrans('texts.payment_methods');
return $this;
@@ -422,7 +423,7 @@ class BillingPortalPurchase extends Component
$this->payment_method_id = $gateway_type_id;
$this->handleBeforePaymentEvents();
-
+
}
/**
diff --git a/app/Livewire/BillingPortalPurchasev2.php b/app/Livewire/BillingPortalPurchasev2.php
index 647613e60f1f..a5256fc0828e 100644
--- a/app/Livewire/BillingPortalPurchasev2.php
+++ b/app/Livewire/BillingPortalPurchasev2.php
@@ -487,7 +487,7 @@ class BillingPortalPurchasev2 extends Component
if ($this->contact && $this->float_amount_total >= 0) {
$this->methods = $this->contact->client->service()->getPaymentMethods($this->float_amount_total);
}
-
+
foreach($this->methods as $method) {
if($method['is_paypal'] == '1' && !$this->check_rff) {
@@ -502,7 +502,7 @@ class BillingPortalPurchasev2 extends Component
protected function rff()
{
-
+
$this->contact_first_name = $this->contact->first_name;
$this->contact_last_name = $this->contact->last_name;
$this->contact_email = $this->contact->email;
@@ -515,8 +515,7 @@ class BillingPortalPurchasev2 extends Component
strlen($this->contact_email ?? '') == 0 ||
strlen($this->client_city ?? '') == 0 ||
strlen($this->client_postal_code ?? '') == 0
- )
- {
+ ) {
$this->check_rff = true;
}
@@ -757,7 +756,7 @@ class BillingPortalPurchasev2 extends Component
$data['settings']->currency_id = $currency->id;
}
} elseif ($this->subscription->group_settings && property_exists($this->subscription->group_settings->settings, 'currency_id')) {
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
@@ -775,7 +774,7 @@ class BillingPortalPurchasev2 extends Component
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
-
+
$record = $languages->first(function ($item) use ($request) {
return $item->locale == $request['locale'];
});
diff --git a/app/Livewire/Flow2/InvoicePay.php b/app/Livewire/Flow2/InvoicePay.php
index 951c010ce028..f67278d32b9c 100644
--- a/app/Livewire/Flow2/InvoicePay.php
+++ b/app/Livewire/Flow2/InvoicePay.php
@@ -41,7 +41,7 @@ class InvoicePay extends Component
'client_postal_code' => 'postal_code',
'client_country_id' => 'country_id',
- 'client_shipping_address_line_1' => 'shipping_address1',
+ 'client_shipping_address_line_1' => 'shipping_address1',
'client_shipping_address_line_2' => 'shipping_address2',
'client_shipping_city' => 'shipping_city',
'client_shipping_state' => 'shipping_state',
@@ -143,7 +143,7 @@ class InvoicePay extends Component
$this->payment_method_accepted = true;
- $company_gateway = CompanyGateway::find($company_gateway_id);
+ $company_gateway = CompanyGateway::query()->find($company_gateway_id);
$this->checkRequiredFields($company_gateway);
}
@@ -187,7 +187,7 @@ class InvoicePay extends Component
}
}
}
-
+
return $this->required_fields = false;
}
@@ -240,9 +240,10 @@ class InvoicePay extends Component
nlog($this->invoices);
- if(is_array($this->invoices))
+ if(is_array($this->invoices)) {
$this->invoices = Invoice::find($this->transformKeys($this->invoices));
-
+ }
+
$invoices = $this->invoices->filter(function ($i) {
$i = $i->service()
->markSent()
diff --git a/app/Livewire/Flow2/InvoiceSummary.php b/app/Livewire/Flow2/InvoiceSummary.php
index 51681737b240..ce84992512a1 100644
--- a/app/Livewire/Flow2/InvoiceSummary.php
+++ b/app/Livewire/Flow2/InvoiceSummary.php
@@ -42,6 +42,6 @@ class InvoiceSummary extends Component
'invoice' => $this->invoices,
'client' => $this->invoices->first()->client,
]);
-
+
}
}
diff --git a/app/Livewire/Flow2/ProcessPayment.php b/app/Livewire/Flow2/ProcessPayment.php
index 8598357520aa..175092a98ca7 100644
--- a/app/Livewire/Flow2/ProcessPayment.php
+++ b/app/Livewire/Flow2/ProcessPayment.php
@@ -64,7 +64,7 @@ class ProcessPayment extends Component
->setPaymentHash($responder_data['payload']['ph']);
$this->payment_data_payload = $driver->processPaymentViewData($responder_data['payload']);
-
+
$this->payment_view = $driver->livewirePaymentView(
$this->payment_data_payload,
);
diff --git a/app/Livewire/Flow2/Signature.php b/app/Livewire/Flow2/Signature.php
index 33f1ed504091..07e63a658ebe 100644
--- a/app/Livewire/Flow2/Signature.php
+++ b/app/Livewire/Flow2/Signature.php
@@ -16,10 +16,8 @@ use Livewire\Component;
class Signature extends Component
{
-
public function render()
{
return render('components.livewire.signature');
}
}
-
diff --git a/app/Livewire/Flow2/UnderOverPayment.php b/app/Livewire/Flow2/UnderOverPayment.php
index 31ec54cb6932..93865ee6a0bd 100644
--- a/app/Livewire/Flow2/UnderOverPayment.php
+++ b/app/Livewire/Flow2/UnderOverPayment.php
@@ -18,7 +18,6 @@ use Livewire\Component;
class UnderOverPayment extends Component
{
-
use WithSecureContext;
public $payableAmount;
@@ -45,29 +44,28 @@ class UnderOverPayment extends Component
$settings = $this->getContext()['settings'];
- foreach($payableInvoices as $key => $invoice){
+ foreach($payableInvoices as $key => $invoice) {
$payableInvoices[$key]['amount'] = Number::parseFloat($invoice['formatted_amount']);
}
$input_amount = collect($payableInvoices)->sum('amount');
- if($settings->client_portal_allow_under_payment && $settings->client_portal_under_payment_minimum != 0)
- {
- if($input_amount <= $settings->client_portal_under_payment_minimum){
+ if($settings->client_portal_allow_under_payment && $settings->client_portal_under_payment_minimum != 0) {
+ if($input_amount <= $settings->client_portal_under_payment_minimum) {
// return error message under payment too low.
$this->errors = ctrans('texts.minimum_required_payment', ['amount' => $settings->client_portal_under_payment_minimum]);
$this->dispatch('errorMessageUpdate', errors: $this->errors);
}
}
- if(!$settings->client_portal_allow_over_payment && ($input_amount > $this->invoice_amount)){
+ if(!$settings->client_portal_allow_over_payment && ($input_amount > $this->invoice_amount)) {
$this->errors = ctrans('texts.over_payments_disabled');
$this->dispatch('errorMessageUpdate', errors: $this->errors);
}
- if(!$this->errors){
+ if(!$this->errors) {
$this->setContext('payable_invoices', $payableInvoices);
- $this->dispatch('payable-amount', payable_amount: $input_amount );
+ $this->dispatch('payable-amount', payable_amount: $input_amount);
}
}
diff --git a/app/Livewire/RequiredClientInfo.php b/app/Livewire/RequiredClientInfo.php
index 7192f45432b5..11f7e8312a96 100644
--- a/app/Livewire/RequiredClientInfo.php
+++ b/app/Livewire/RequiredClientInfo.php
@@ -197,8 +197,8 @@ class RequiredClientInfo extends Component
MultiDB::setDb($this->db);
$contact = ClientContact::withTrashed()->with(['client' => function ($query) {
- $query->without('gateway_tokens', 'documents', 'contacts.company', 'contacts'); // Exclude 'grandchildren' relation of 'client'
- }])->find($this->contact_id);
+ $query->without('gateway_tokens', 'documents', 'contacts.company', 'contacts'); // Exclude 'grandchildren' relation of 'client'
+ }])->find($this->contact_id);
$this->company_gateway = CompanyGateway::withTrashed()->with('company')->find($this->company_gateway_id);
$company = $this->company_gateway->company;
diff --git a/app/Mail/TemplateEmail.php b/app/Mail/TemplateEmail.php
index 1c5be18e9859..43263484ef4c 100644
--- a/app/Mail/TemplateEmail.php
+++ b/app/Mail/TemplateEmail.php
@@ -26,8 +26,8 @@ class TemplateEmail extends Mailable
/** @var \App\Models\Client $client */
- private $client;
-
+ private $client;
+
/** @var \App\Models\ClientContact | \App\Models\VendorContact $contact */
private $contact;
@@ -65,7 +65,7 @@ class TemplateEmail extends Mailable
}
$link_string = '
';
- $link_string .= "- {ctrans('texts.download_files')}
";
+ $link_string .= "- {ctrans('texts.download_files')}
";
foreach ($this->build_email->getAttachmentLinks() as $link) {
$link_string .= "- {$link}
";
}
diff --git a/app/Models/Activity.php b/app/Models/Activity.php
index 560ff07a11c5..c2f7d6c50198 100644
--- a/app/Models/Activity.php
+++ b/app/Models/Activity.php
@@ -262,9 +262,9 @@ class Activity extends StaticModel
public const EMAIL_STATEMENT = 140;
public const USER_NOTE = 141;
-
+
public const QUOTE_REMINDER1_SENT = 142;
-
+
protected $casts = [
'is_system' => 'boolean',
'updated_at' => 'timestamp',
@@ -449,8 +449,9 @@ class Activity extends StaticModel
$replacements['created_at'] = $this->created_at ?? '';
$replacements['ip'] = $this->ip ?? '';
- if($this->activity_type_id == 141)
+ if($this->activity_type_id == 141) {
$replacements = $this->harvestNoteEntities($replacements);
+ }
return $replacements;
@@ -469,15 +470,15 @@ class Activity extends StaticModel
':recurring_invoice',
':recurring_expense',
':client',
-
+
];
- foreach($entities as $entity)
- {
+ foreach($entities as $entity) {
$entity_key = substr($entity, 1);
- if($this?->{$entity_key})
+ if($this?->{$entity_key}) {
$replacements = array_merge($replacements, $this->matchVar($entity));
+ }
}
diff --git a/app/Models/BaseModel.php b/app/Models/BaseModel.php
index 8da00b9043da..fa06c90c60a3 100644
--- a/app/Models/BaseModel.php
+++ b/app/Models/BaseModel.php
@@ -374,10 +374,9 @@ class BaseModel extends Model
$files->push($company_docs);
- try{
+ try {
$pdf = (new PdfMerge($files->flatten()->toArray()))->run();
- }
- catch(\Exception $e){
+ } catch(\Exception $e) {
nlog("Exception:: BaseModel:: PdfMerge::" . $e->getMessage());
}
diff --git a/app/Models/Client.php b/app/Models/Client.php
index e22dc522a324..c5ef8c20849e 100644
--- a/app/Models/Client.php
+++ b/app/Models/Client.php
@@ -123,7 +123,7 @@ class Client extends BaseModel implements HasLocalePreference
use AppSetup;
use ClientGroupSettingsSaver;
use Excludable;
-
+
protected $presenter = ClientPresenter::class;
protected $hidden = [
diff --git a/app/Models/ClientContact.php b/app/Models/ClientContact.php
index 0885db2c6c33..82941087367b 100644
--- a/app/Models/ClientContact.php
+++ b/app/Models/ClientContact.php
@@ -271,7 +271,7 @@ class ClientContact extends Authenticatable implements HasLocalePreference
public function preferredLocale()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
diff --git a/app/Models/Company.php b/app/Models/Company.php
index bddb1e3c9619..bc9c0584cbbb 100644
--- a/app/Models/Company.php
+++ b/app/Models/Company.php
@@ -118,7 +118,7 @@ use Laracasts\Presenter\PresentableTrait;
* @property string|null $smtp_port
* @property string|null $smtp_encryption
* @property string|null $smtp_local_domain
- * @property string|null $quickbooks
+ * @property object|null $quickbooks
* @property boolean $smtp_verify_peer
* @property-read \App\Models\Account $account
* @property-read \Illuminate\Database\Eloquent\Collection $activities
@@ -687,7 +687,7 @@ class Company extends BaseModel
public function language()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
@@ -736,7 +736,7 @@ class Company extends BaseModel
public function currency()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
@@ -954,7 +954,7 @@ class Company extends BaseModel
public function date_format()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\DateFormat> */
$date_formats = app('date_formats');
diff --git a/app/Models/Gateway.php b/app/Models/Gateway.php
index 43bbfe8fa719..1bbfe1b95fae 100644
--- a/app/Models/Gateway.php
+++ b/app/Models/Gateway.php
@@ -106,8 +106,8 @@ class Gateway extends StaticModel
} elseif ($this->id == 62) {
$link = 'https://docs.btcpayserver.org/InvoiceNinja/';
} elseif ($this->id == 63) {
- $link = 'https://rotessa.com';
- }
+ $link = 'https://rotessa.com';
+ }
return $link;
}
@@ -226,15 +226,15 @@ class Gateway extends StaticModel
return [
GatewayType::CRYPTO => ['refund' => true, 'token_billing' => false, 'webhooks' => ['confirmed', 'paid_out', 'failed', 'fulfilled']],
]; //BTCPay
- case 63:
- return [
- GatewayType::BANK_TRANSFER => [
- 'refund' => false,
- 'token_billing' => true,
- 'webhooks' => [],
- ],
- GatewayType::ACSS => ['refund' => false, 'token_billing' => true, 'webhooks' => []]
- ]; // Rotessa
+ case 63:
+ return [
+ GatewayType::BANK_TRANSFER => [
+ 'refund' => false,
+ 'token_billing' => true,
+ 'webhooks' => [],
+ ],
+ GatewayType::ACSS => ['refund' => false, 'token_billing' => true, 'webhooks' => []]
+ ]; // Rotessa
default:
return [];
}
diff --git a/app/Models/Invoice.php b/app/Models/Invoice.php
index cc81e6b440fe..b51fbf7fef83 100644
--- a/app/Models/Invoice.php
+++ b/app/Models/Invoice.php
@@ -431,9 +431,9 @@ class Invoice extends BaseModel
public function isPayable(): bool
{
- if($this->is_deleted || $this->status_id == self::STATUS_PAID)
+ if($this->is_deleted || $this->status_id == self::STATUS_PAID) {
return false;
- elseif ($this->status_id == self::STATUS_DRAFT && $this->is_deleted == false) {
+ } elseif ($this->status_id == self::STATUS_DRAFT && $this->is_deleted == false) {
return true;
} elseif ($this->status_id == self::STATUS_SENT && $this->is_deleted == false) {
return true;
diff --git a/app/Models/Quote.php b/app/Models/Quote.php
index 4e3209843944..96059654ded9 100644
--- a/app/Models/Quote.php
+++ b/app/Models/Quote.php
@@ -396,7 +396,7 @@ class Quote extends BaseModel
*/
public function calculateTemplate(string $entity_string): string
{
-
+
$client = $this->client;
if ($entity_string != 'quote') {
@@ -408,35 +408,36 @@ class Quote extends BaseModel
$client->getSetting('quote_num_days_reminder1')
) && ! $this->reminder1_sent) {
return 'reminder1';
- // } elseif ($this->inReminderWindow(
- // $client->getSetting('schedule_reminder2'),
- // $client->getSetting('num_days_reminder2')
- // ) && ! $this->reminder2_sent) {
- // return 'reminder2';
- // } elseif ($this->inReminderWindow(
- // $client->getSetting('schedule_reminder3'),
- // $client->getSetting('num_days_reminder3')
- // ) && ! $this->reminder3_sent) {
- // return 'reminder3';
- // } elseif ($this->checkEndlessReminder(
- // $this->reminder_last_sent,
- // $client->getSetting('endless_reminder_frequency_id')
- // )) {
- // return 'endless_reminder';
+ // } elseif ($this->inReminderWindow(
+ // $client->getSetting('schedule_reminder2'),
+ // $client->getSetting('num_days_reminder2')
+ // ) && ! $this->reminder2_sent) {
+ // return 'reminder2';
+ // } elseif ($this->inReminderWindow(
+ // $client->getSetting('schedule_reminder3'),
+ // $client->getSetting('num_days_reminder3')
+ // ) && ! $this->reminder3_sent) {
+ // return 'reminder3';
+ // } elseif ($this->checkEndlessReminder(
+ // $this->reminder_last_sent,
+ // $client->getSetting('endless_reminder_frequency_id')
+ // )) {
+ // return 'endless_reminder';
} else {
return $entity_string;
}
}
-
+
/**
* @return bool
*/
public function canRemind(): bool
{
- if (in_array($this->status_id, [self::STATUS_DRAFT, self::STATUS_APPROVED, self::STATUS_CONVERTED]) || $this->is_deleted)
+ if (in_array($this->status_id, [self::STATUS_DRAFT, self::STATUS_APPROVED, self::STATUS_CONVERTED]) || $this->is_deleted) {
return false;
+ }
return true;
diff --git a/app/Models/Task.php b/app/Models/Task.php
index 89b21ffa81ac..86ddcc5b67d8 100644
--- a/app/Models/Task.php
+++ b/app/Models/Task.php
@@ -296,19 +296,18 @@ class Task extends BaseModel
$client_currency = $this->client->getSetting('currency_id');
$company_currency = $this->company->getSetting('currency_id');
- if($client_currency != $company_currency)
- {
+ if($client_currency != $company_currency) {
$converter = new CurrencyApi();
return $converter->convert($this->taskValue(), $client_currency, $company_currency);
}
-
+
return $this->taskValue();
}
public function taskValue(): float
{
- return round(($this->calcDuration() / 3600) * $this->getRate(),2);
+ return round(($this->calcDuration() / 3600) * $this->getRate(), 2);
}
public function processLogs()
@@ -374,8 +373,9 @@ class Task extends BaseModel
public function assignedCompanyUser()
{
- if(!$this->assigned_user_id)
+ if(!$this->assigned_user_id) {
return false;
+ }
return CompanyUser::where('company_id', $this->company_id)->where('user_id', $this->assigned_user_id)->first();
}
diff --git a/app/Models/Vendor.php b/app/Models/Vendor.php
index 7c7cc24985d6..b10074465027 100644
--- a/app/Models/Vendor.php
+++ b/app/Models/Vendor.php
@@ -177,7 +177,7 @@ class Vendor extends BaseModel
public function currency()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
diff --git a/app/Models/VendorContact.php b/app/Models/VendorContact.php
index 156928f80031..8ea4dc2654cd 100644
--- a/app/Models/VendorContact.php
+++ b/app/Models/VendorContact.php
@@ -183,7 +183,7 @@ class VendorContact extends Authenticatable implements HasLocalePreference
public function preferredLocale()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
diff --git a/app/Notifications/Ninja/EmailQuotaNotification.php b/app/Notifications/Ninja/EmailQuotaNotification.php
index 5606a443f87a..62e3cd845fb9 100644
--- a/app/Notifications/Ninja/EmailQuotaNotification.php
+++ b/app/Notifications/Ninja/EmailQuotaNotification.php
@@ -66,7 +66,7 @@ class EmailQuotaNotification extends Notification
{
$content = "Email quota exceeded by Account {$this->account->key} \n";
- $owner = $this->account->companies()->first()->owner() ?? $this->account->users()->orderBy('id','asc')->first();
+ $owner = $this->account->companies()->first()->owner() ?? $this->account->users()->orderBy('id', 'asc')->first();
$owner_name = $owner->present()->name() ?? 'No Owner Found';
$owner_email = $owner->email ?? 'No Owner Email Found';
diff --git a/app/Observers/ClientContactObserver.php b/app/Observers/ClientContactObserver.php
index f9c4fd5984f7..3e147b705cb9 100644
--- a/app/Observers/ClientContactObserver.php
+++ b/app/Observers/ClientContactObserver.php
@@ -57,7 +57,7 @@ class ClientContactObserver
$clientContact->recurring_invoice_invitations()->delete();
//ensure entity state is preserved
-
+
InvoiceInvitation::withTrashed()->where('client_contact_id', $client_contact_id)->cursor()->each(function ($invite) {
/** @var \App\Models\InvoiceInvitation $invite */
if ($invite->invoice()->doesnthave('invitations')) { // @phpstan-ignore-line
diff --git a/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php b/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php
index 0c259bf4d546..8260e71efa6e 100644
--- a/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php
+++ b/app/PaymentDrivers/Authorize/AuthorizeCreditCard.php
@@ -21,7 +21,6 @@ use App\Models\PaymentHash;
use App\Models\PaymentType;
use App\Models\SystemLog;
use App\PaymentDrivers\AuthorizePaymentDriver;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\Utils\Traits\MakesHash;
use net\authorize\api\contract\v1\DeleteCustomerPaymentProfileRequest;
use net\authorize\api\contract\v1\DeleteCustomerProfileRequest;
@@ -31,7 +30,7 @@ use net\authorize\api\controller\DeleteCustomerProfileController;
/**
* Class AuthorizeCreditCard.
*/
-class AuthorizeCreditCard implements LivewireMethodInterface
+class AuthorizeCreditCard
{
use MakesHash;
@@ -42,7 +41,7 @@ class AuthorizeCreditCard implements LivewireMethodInterface
$this->authorize = $authorize;
}
- public function paymentData(array $data): array
+ public function processPaymentView($data)
{
$tokens = ClientGatewayToken::where('client_id', $this->authorize->client->id)
->where('company_gateway_id', $this->authorize->company_gateway->id)
@@ -55,13 +54,6 @@ class AuthorizeCreditCard implements LivewireMethodInterface
$data['public_client_id'] = $this->authorize->init()->getPublicClientKey();
$data['api_login_id'] = $this->authorize->company_gateway->getConfigField('apiLoginId');
- return $data;
- }
-
- public function processPaymentView($data)
- {
- $data = $this->paymentData($data);
-
return render('gateways.authorize.credit_card.pay', $data);
}
@@ -321,9 +313,4 @@ class AuthorizeCreditCard implements LivewireMethodInterface
'invoices' => $vars['invoices'],
];
}
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.authorize.credit_card.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/BTCPay/BTCPay.php b/app/PaymentDrivers/BTCPay/BTCPay.php
index 99d35c729f29..8b5b3a07aff8 100644
--- a/app/PaymentDrivers/BTCPay/BTCPay.php
+++ b/app/PaymentDrivers/BTCPay/BTCPay.php
@@ -14,7 +14,6 @@ namespace App\PaymentDrivers\BTCPay;
use App\Models\Payment;
use App\PaymentDrivers\BTCPayPaymentDriver;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\Utils\Traits\MakesHash;
use App\PaymentDrivers\Common\MethodInterface;
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
@@ -25,7 +24,7 @@ use App\Services\Email\EmailObject;
use App\Services\Email\Email;
use Illuminate\Support\Facades\App;
-class BTCPay implements MethodInterface, LivewireMethodInterface
+class BTCPay implements MethodInterface
{
use MakesHash;
@@ -50,7 +49,9 @@ class BTCPay implements MethodInterface, LivewireMethodInterface
public function paymentView($data)
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->driver_class;
+ $data['amount'] = $data['total']['amount_with_fee'];
+ $data['currency'] = $this->driver_class->client->getCurrencyCode();
return render('gateways.btcpay.pay', $data);
}
@@ -175,24 +176,4 @@ class BTCPay implements MethodInterface, LivewireMethodInterface
throw new PaymentFailed('Error during BTCPay refund : ' . $e->getMessage());
}
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.btcpay.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->driver_class;
- $data['amount'] = $data['total']['amount_with_fee'];
- $data['currency'] = $this->driver_class->client->getCurrencyCode();
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/BaseDriver.php b/app/PaymentDrivers/BaseDriver.php
index 7ba0012082d7..e7ea1efd83d4 100644
--- a/app/PaymentDrivers/BaseDriver.php
+++ b/app/PaymentDrivers/BaseDriver.php
@@ -867,14 +867,4 @@ class BaseDriver extends AbstractPaymentDriver
{
}
-
- public function livewirePaymentView(array $data): string
- {
- return $this->payment_method->livewirePaymentView($data);
- }
-
- public function processPaymentViewData(array $data): array
- {
- return $this->payment_method->paymentData($data);
- }
}
diff --git a/app/PaymentDrivers/Braintree/ACH.php b/app/PaymentDrivers/Braintree/ACH.php
index e5527049a5e8..bbd854291d71 100644
--- a/app/PaymentDrivers/Braintree/ACH.php
+++ b/app/PaymentDrivers/Braintree/ACH.php
@@ -20,12 +20,11 @@ use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
use App\PaymentDrivers\BraintreePaymentDriver;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\Request;
-class ACH implements MethodInterface, LivewireMethodInterface
+class ACH implements MethodInterface
{
use MakesHash;
@@ -98,7 +97,10 @@ class ACH implements MethodInterface, LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->braintree;
+ $data['currency'] = $this->braintree->client->getCurrencyCode();
+ $data['payment_method_id'] = GatewayType::BANK_TRANSFER;
+ $data['amount'] = $this->braintree->payment_hash->data->amount_with_fee;
return render('gateways.braintree.ach.pay', $data);
}
@@ -179,24 +181,4 @@ class ACH implements MethodInterface, LivewireMethodInterface
throw new PaymentFailed($response->transaction->additionalProcessorResponse, $response->transaction->processorResponseCode);
}
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.braintree.ach.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->braintree;
- $data['currency'] = $this->braintree->client->getCurrencyCode();
- $data['payment_method_id'] = GatewayType::BANK_TRANSFER;
- $data['amount'] = $this->braintree->payment_hash->data->amount_with_fee;
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Braintree/CreditCard.php b/app/PaymentDrivers/Braintree/CreditCard.php
index b80b026a9eca..3ab0fdbe3de7 100644
--- a/app/PaymentDrivers/Braintree/CreditCard.php
+++ b/app/PaymentDrivers/Braintree/CreditCard.php
@@ -21,9 +21,8 @@ use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
use App\PaymentDrivers\BraintreePaymentDriver;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
-class CreditCard implements LivewireMethodInterface
+class CreditCard
{
/**
* @var BraintreePaymentDriver
@@ -77,7 +76,6 @@ class CreditCard implements LivewireMethodInterface
public function paymentView(array $data)
{
-<<<<<<< HEAD
$data['gateway'] = $this->braintree;
$data['client_token'] = $this->braintree->gateway->clientToken()->generate();
$data['threeds'] = $this->threeDParameters($data);
@@ -89,9 +87,6 @@ class CreditCard implements LivewireMethodInterface
'merchantAccountId' => $this->braintree->company_gateway->getConfigField('merchantAccountId'),
]);
}
-=======
- $data = $this->paymentData($data);
->>>>>>> new_payment_flow
return render('gateways.braintree.credit_card.pay', $data);
}
@@ -283,32 +278,4 @@ class CreditCard implements LivewireMethodInterface
return $this->braintree->processInternallyFailedPayment($this->braintree, $e);
}
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.braintree.credit_card.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->braintree;
- $data['client_token'] = $this->braintree->gateway->clientToken()->generate();
- $data['threeds'] = $this->threeDParameters($data);
- $data['threeds_enable'] = $this->braintree->company_gateway->getConfigField('threeds') ? "true" : "false";
-
- if ($this->braintree->company_gateway->getConfigField('merchantAccountId')) {
- /** https://developer.paypal.com/braintree/docs/reference/request/client-token/generate#merchant_account_id */
- $data['client_token'] = $this->braintree->gateway->clientToken()->generate([
- 'merchantAccountId' => $this->braintree->company_gateway->getConfigField('merchantAccountId'),
- ]);
- }
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Braintree/PayPal.php b/app/PaymentDrivers/Braintree/PayPal.php
index 2ad38515484d..6de57c1f15e9 100644
--- a/app/PaymentDrivers/Braintree/PayPal.php
+++ b/app/PaymentDrivers/Braintree/PayPal.php
@@ -10,9 +10,8 @@ use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
use App\PaymentDrivers\BraintreePaymentDriver;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
-class PayPal implements LivewireMethodInterface
+class PayPal
{
/**
* @var BraintreePaymentDriver
@@ -46,7 +45,8 @@ class PayPal implements LivewireMethodInterface
*/
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->braintree;
+ $data['client_token'] = $this->braintree->gateway->clientToken()->generate();
return render('gateways.braintree.paypal.pay', $data);
}
@@ -188,23 +188,4 @@ class PayPal implements LivewireMethodInterface
return $this->braintree->processInternallyFailedPayment($this->braintree, $e);
}
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.braintree.paypal.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->braintree;
- $data['client_token'] = $this->braintree->gateway->clientToken()->generate();
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/CheckoutCom/CreditCard.php b/app/PaymentDrivers/CheckoutCom/CreditCard.php
index bd3b7dbb681a..c19acab18e6d 100644
--- a/app/PaymentDrivers/CheckoutCom/CreditCard.php
+++ b/app/PaymentDrivers/CheckoutCom/CreditCard.php
@@ -19,7 +19,6 @@ use App\Models\ClientGatewayToken;
use App\Models\GatewayType;
use App\Models\SystemLog;
use App\PaymentDrivers\CheckoutComPaymentDriver;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\Utils\Traits\MakesHash;
use Checkout\CheckoutApiException;
@@ -33,7 +32,7 @@ use Illuminate\Contracts\View\Factory;
use Illuminate\Http\Request;
use Illuminate\View\View;
-class CreditCard implements MethodInterface, LivewireMethodInterface
+class CreditCard implements MethodInterface
{
use Utilities;
use MakesHash;
@@ -141,7 +140,7 @@ class CreditCard implements MethodInterface, LivewireMethodInterface
}
}
- public function paymentData(array $data): array
+ public function paymentView($data)
{
$data['gateway'] = $this->checkout;
$data['company_gateway'] = $this->checkout->company_gateway;
@@ -151,25 +150,9 @@ class CreditCard implements MethodInterface, LivewireMethodInterface
$data['raw_value'] = $data['total']['amount_with_fee'];
$data['customer_email'] = $this->checkout->client->present()->email();
- return $data;
- }
-
- public function paymentView($data, $livewire = false)
- {
- $data = $this->paymentData($data);
-
- if ($livewire) {
- return render('gateways.checkout.credit_card.pay_livewire', $data);
- }
-
return render('gateways.checkout.credit_card.pay', $data);
}
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.checkout.credit_card.livewire_pay';
- }
-
public function paymentResponse(PaymentResponseRequest $request)
{
$state = [
diff --git a/app/PaymentDrivers/CheckoutComPaymentDriver.php b/app/PaymentDrivers/CheckoutComPaymentDriver.php
index 72d31a7c410a..12dd66244f8d 100644
--- a/app/PaymentDrivers/CheckoutComPaymentDriver.php
+++ b/app/PaymentDrivers/CheckoutComPaymentDriver.php
@@ -12,7 +12,6 @@
namespace App\PaymentDrivers;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use Exception;
use App\Models\Company;
use App\Models\Invoice;
diff --git a/app/PaymentDrivers/Common/LivewireMethodInterface.php b/app/PaymentDrivers/Common/LivewireMethodInterface.php
index ca23ca75dd42..77f540508028 100644
--- a/app/PaymentDrivers/Common/LivewireMethodInterface.php
+++ b/app/PaymentDrivers/Common/LivewireMethodInterface.php
@@ -22,7 +22,7 @@ interface LivewireMethodInterface
/**
* Payment data for the gateway method.
- *
+ *
* @param array $data
* @return array
*/
diff --git a/app/PaymentDrivers/Eway/CreditCard.php b/app/PaymentDrivers/Eway/CreditCard.php
index a3fbb56d5fd3..e7f97124566d 100644
--- a/app/PaymentDrivers/Eway/CreditCard.php
+++ b/app/PaymentDrivers/Eway/CreditCard.php
@@ -17,11 +17,10 @@ use App\Jobs\Util\SystemLogger;
use App\Models\GatewayType;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\EwayPaymentDriver;
use App\Utils\Traits\MakesHash;
-class CreditCard implements LivewireMethodInterface
+class CreditCard
{
use MakesHash;
@@ -103,18 +102,11 @@ class CreditCard implements LivewireMethodInterface
return $token;
}
- public function paymentData(array $data): array
+ public function paymentView($data)
{
$data['gateway'] = $this->eway_driver;
$data['public_api_key'] = $this->eway_driver->company_gateway->getConfigField('publicApiKey');
- return $data;
- }
-
- public function paymentView($data)
- {
- $data = $this->paymentData($data);
-
return render('gateways.eway.pay', $data);
}
@@ -284,8 +276,4 @@ class CreditCard implements LivewireMethodInterface
return $payment;
}
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.eway.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Forte/ACH.php b/app/PaymentDrivers/Forte/ACH.php
index 750ffdd0f3b9..8ea313e77200 100644
--- a/app/PaymentDrivers/Forte/ACH.php
+++ b/app/PaymentDrivers/Forte/ACH.php
@@ -19,12 +19,11 @@ use App\Models\Payment;
use App\Models\PaymentHash;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\FortePaymentDriver;
use App\Utils\Traits\MakesHash;
use Illuminate\Support\Facades\Validator;
-class ACH implements LivewireMethodInterface
+class ACH
{
use MakesHash;
@@ -80,8 +79,10 @@ class ACH implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->forte->payment_hash->data = array_merge((array) $this->forte->payment_hash->data, $data);
+ $this->forte->payment_hash->save();
+ $data['gateway'] = $this->forte;
return render('gateways.forte.ach.pay', $data);
}
@@ -174,25 +175,4 @@ class ACH implements LivewireMethodInterface
return redirect()->route('client.payments.show', ['payment' => $payment->hashed_id]);
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.forte.ach.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $this->forte->payment_hash->data = array_merge((array) $this->forte->payment_hash->data, $data);
- $this->forte->payment_hash->save();
-
- $data['gateway'] = $this->forte;
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Forte/CreditCard.php b/app/PaymentDrivers/Forte/CreditCard.php
index 7e0e04af8aaf..16ceb030fdf0 100644
--- a/app/PaymentDrivers/Forte/CreditCard.php
+++ b/app/PaymentDrivers/Forte/CreditCard.php
@@ -20,12 +20,11 @@ use App\Models\Payment;
use App\Models\PaymentHash;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\FortePaymentDriver;
use App\Utils\Traits\MakesHash;
use Illuminate\Support\Facades\Validator;
-class CreditCard implements LivewireMethodInterface
+class CreditCard
{
use MakesHash;
@@ -158,8 +157,10 @@ class CreditCard implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
-
+ $this->forte->payment_hash->data = array_merge((array) $this->forte->payment_hash->data, $data);
+ $this->forte->payment_hash->save();
+
+ $data['gateway'] = $this->forte;
return render('gateways.forte.credit_card.pay', $data);
}
@@ -286,25 +287,4 @@ class CreditCard implements LivewireMethodInterface
return redirect()->route('client.payments.show', ['payment' => $payment->hashed_id]);
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.forte.credit_card.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $this->forte->payment_hash->data = array_merge((array) $this->forte->payment_hash->data, $data);
- $this->forte->payment_hash->save();
-
- $data['gateway'] = $this->forte;
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/GoCardless/ACH.php b/app/PaymentDrivers/GoCardless/ACH.php
index 9a8d051373e8..e52e8ce54101 100644
--- a/app/PaymentDrivers/GoCardless/ACH.php
+++ b/app/PaymentDrivers/GoCardless/ACH.php
@@ -20,7 +20,6 @@ use App\Models\Invoice;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\GoCardlessPaymentDriver;
use App\Utils\Traits\MakesHash;
@@ -32,7 +31,7 @@ use Illuminate\Routing\Redirector;
use Illuminate\View\View;
//@deprecated
-class ACH implements MethodInterface, LivewireMethodInterface
+class ACH implements MethodInterface
{
use MakesHash;
@@ -147,7 +146,9 @@ class ACH implements MethodInterface, LivewireMethodInterface
*/
public function paymentView(array $data): View
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->go_cardless;
+ $data['amount'] = $this->go_cardless->convertToGoCardlessAmount($data['total']['amount_with_fee'], $this->go_cardless->client->currency()->precision);
+ $data['currency'] = $this->go_cardless->client->getCurrencyCode();
return render('gateways.gocardless.ach.pay', $data);
}
@@ -256,23 +257,4 @@ class ACH implements MethodInterface, LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.gocardless.ach.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->go_cardless;
- $data['amount'] = $this->go_cardless->convertToGoCardlessAmount($data['total']['amount_with_fee'], $this->go_cardless->client->currency()->precision);
- $data['currency'] = $this->go_cardless->client->getCurrencyCode();
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/GoCardless/DirectDebit.php b/app/PaymentDrivers/GoCardless/DirectDebit.php
index a7c17e608feb..ab67f2862263 100644
--- a/app/PaymentDrivers/GoCardless/DirectDebit.php
+++ b/app/PaymentDrivers/GoCardless/DirectDebit.php
@@ -21,7 +21,6 @@ use App\Models\Invoice;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\GoCardlessPaymentDriver;
use App\Utils\Traits\MakesHash;
@@ -30,7 +29,7 @@ use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\View\View;
-class DirectDebit implements MethodInterface, LivewireMethodInterface
+class DirectDebit implements MethodInterface
{
use MakesHash;
@@ -219,7 +218,9 @@ class DirectDebit implements MethodInterface, LivewireMethodInterface
*/
public function paymentView(array $data): View
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->go_cardless;
+ $data['amount'] = $this->go_cardless->convertToGoCardlessAmount($data['total']['amount_with_fee'], $this->go_cardless->client->currency()->precision);
+ $data['currency'] = $this->go_cardless->client->getCurrencyCode();
return render('gateways.gocardless.direct_debit.pay', $data);
}
@@ -329,24 +330,4 @@ class DirectDebit implements MethodInterface, LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.gocardless.direct_debit.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->go_cardless;
- $data['amount'] = $this->go_cardless->convertToGoCardlessAmount($data['total']['amount_with_fee'], $this->go_cardless->client->currency()->precision);
- $data['currency'] = $this->go_cardless->client->getCurrencyCode();
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/GoCardless/InstantBankPay.php b/app/PaymentDrivers/GoCardless/InstantBankPay.php
index b5688e3d9fca..9133a47a68a3 100644
--- a/app/PaymentDrivers/GoCardless/InstantBankPay.php
+++ b/app/PaymentDrivers/GoCardless/InstantBankPay.php
@@ -9,14 +9,13 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\GoCardlessPaymentDriver;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
-class InstantBankPay implements MethodInterface, LivewireMethodInterface
+class InstantBankPay implements MethodInterface
{
protected GoCardlessPaymentDriver $go_cardless;
@@ -195,8 +194,9 @@ class InstantBankPay implements MethodInterface, LivewireMethodInterface
* Process unsuccessful payments for Direct Debit.
*
* @param ResourcesPayment $payment
+ * @return never
*/
- public function processUnsuccessfulPayment(\GoCardlessPro\Resources\Payment $payment): void
+ public function processUnsuccessfulPayment(\GoCardlessPro\Resources\Payment $payment)
{
PaymentFailureMailer::dispatch($this->go_cardless->client, $payment->status, $this->go_cardless->client->company, $this->go_cardless->payment_hash->data->amount_with_fee);
@@ -221,24 +221,4 @@ class InstantBankPay implements MethodInterface, LivewireMethodInterface
$this->go_cardless->client->company,
);
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- // not supported, this is offsite payment method.
-
- return '';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $this->paymentView($data);
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/GoCardless/SEPA.php b/app/PaymentDrivers/GoCardless/SEPA.php
index d2a797e80738..d0f81228ceff 100644
--- a/app/PaymentDrivers/GoCardless/SEPA.php
+++ b/app/PaymentDrivers/GoCardless/SEPA.php
@@ -20,7 +20,6 @@ use App\Models\Invoice;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\GoCardlessPaymentDriver;
use App\Utils\Traits\MakesHash;
@@ -30,7 +29,7 @@ use Illuminate\Http\Request;
use Illuminate\Routing\Redirector;
use Illuminate\View\View;
-class SEPA implements MethodInterface, LivewireMethodInterface
+class SEPA implements MethodInterface
{
use MakesHash;
@@ -146,7 +145,9 @@ class SEPA implements MethodInterface, LivewireMethodInterface
*/
public function paymentView(array $data): View
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->go_cardless;
+ $data['amount'] = $this->go_cardless->convertToGoCardlessAmount($data['total']['amount_with_fee'], $this->go_cardless->client->currency()->precision);
+ $data['currency'] = $this->go_cardless->client->getCurrencyCode();
return render('gateways.gocardless.sepa.pay', $data);
}
@@ -256,24 +257,4 @@ class SEPA implements MethodInterface, LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.gocardless.sepa.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->go_cardless;
- $data['amount'] = $this->go_cardless->convertToGoCardlessAmount($data['total']['amount_with_fee'], $this->go_cardless->client->currency()->precision);
- $data['currency'] = $this->go_cardless->client->getCurrencyCode();
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Mollie/Bancontact.php b/app/PaymentDrivers/Mollie/Bancontact.php
index 3a19ac358fb7..3df988bbb2ef 100644
--- a/app/PaymentDrivers/Mollie/Bancontact.php
+++ b/app/PaymentDrivers/Mollie/Bancontact.php
@@ -19,14 +19,13 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\MolliePaymentDriver;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
-class Bancontact implements MethodInterface, LivewireMethodInterface
+class Bancontact implements MethodInterface
{
protected MolliePaymentDriver $mollie;
@@ -210,24 +209,4 @@ class Bancontact implements MethodInterface, LivewireMethodInterface
{
return $this->processSuccessfulPayment($payment, 'open');
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- // Doesn't support, it's offsite payment method.
-
- return '';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $this->paymentView($data);
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Mollie/BankTransfer.php b/app/PaymentDrivers/Mollie/BankTransfer.php
index 642d4bfc84c6..7c5872714c06 100644
--- a/app/PaymentDrivers/Mollie/BankTransfer.php
+++ b/app/PaymentDrivers/Mollie/BankTransfer.php
@@ -19,7 +19,6 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\MolliePaymentDriver;
use Exception;
@@ -29,7 +28,7 @@ use Illuminate\Routing\Redirector;
use Illuminate\View\View;
use Mollie\Api\Resources\Payment as ResourcesPayment;
-class BankTransfer implements MethodInterface, LivewireMethodInterface
+class BankTransfer implements MethodInterface
{
protected MolliePaymentDriver $mollie;
@@ -207,24 +206,4 @@ class BankTransfer implements MethodInterface, LivewireMethodInterface
{
return $this->processSuccessfulPayment($payment, 'open');
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- // Doesn't support, it's offsite payment method.
-
- return '';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $this->paymentView($data);
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Mollie/CreditCard.php b/app/PaymentDrivers/Mollie/CreditCard.php
index 6e712c8f84b6..627605974532 100644
--- a/app/PaymentDrivers/Mollie/CreditCard.php
+++ b/app/PaymentDrivers/Mollie/CreditCard.php
@@ -10,13 +10,12 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\MolliePaymentDriver;
use Illuminate\Contracts\View\Factory;
use Illuminate\Http\RedirectResponse;
use Illuminate\View\View;
-class CreditCard implements LivewireMethodInterface
+class CreditCard
{
/**
* @var MolliePaymentDriver
@@ -38,7 +37,7 @@ class CreditCard implements LivewireMethodInterface
*/
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->mollie;
return render('gateways.mollie.credit_card.pay', $data);
}
@@ -258,22 +257,4 @@ class CreditCard implements LivewireMethodInterface
{
return redirect()->route('client.payment_methods.index');
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.mollie.credit_card.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->mollie;
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Mollie/IDEAL.php b/app/PaymentDrivers/Mollie/IDEAL.php
index 134853a6fe04..3b19cad34f11 100644
--- a/app/PaymentDrivers/Mollie/IDEAL.php
+++ b/app/PaymentDrivers/Mollie/IDEAL.php
@@ -19,14 +19,13 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\MolliePaymentDriver;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
-class IDEAL implements MethodInterface, LivewireMethodInterface
+class IDEAL implements MethodInterface
{
protected MolliePaymentDriver $mollie;
@@ -210,24 +209,4 @@ class IDEAL implements MethodInterface, LivewireMethodInterface
{
return $this->processSuccessfulPayment($payment, 'open');
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- // Doesn't support, it's offsite payment method.
-
- return '';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $this->paymentView($data);
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Mollie/KBC.php b/app/PaymentDrivers/Mollie/KBC.php
index 0811d7567454..00b87934a92d 100644
--- a/app/PaymentDrivers/Mollie/KBC.php
+++ b/app/PaymentDrivers/Mollie/KBC.php
@@ -19,14 +19,13 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\MolliePaymentDriver;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Illuminate\View\View;
-class KBC implements MethodInterface, LivewireMethodInterface
+class KBC implements MethodInterface
{
protected MolliePaymentDriver $mollie;
@@ -194,24 +193,4 @@ class KBC implements MethodInterface, LivewireMethodInterface
return redirect()->route('client.payments.show', ['payment' => $this->mollie->encodePrimaryKey($payment_record->id)]);
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- // Doesn't support, it's offsite payment method.
-
- return '';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $this->paymentView($data);
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/PayFast/CreditCard.php b/app/PaymentDrivers/PayFast/CreditCard.php
index 4cfb13f4a09e..d3ca7b87cd10 100644
--- a/app/PaymentDrivers/PayFast/CreditCard.php
+++ b/app/PaymentDrivers/PayFast/CreditCard.php
@@ -18,13 +18,12 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\PayFastPaymentDriver;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Str;
-class CreditCard implements LivewireMethodInterface
+class CreditCard
{
public $payfast;
@@ -159,9 +158,24 @@ class CreditCard implements LivewireMethodInterface
public function paymentView($data)
{
- $data = $this->paymentData($data);
+ $payfast_data = [
+ 'merchant_id' => $this->payfast->company_gateway->getConfigField('merchantId'),
+ 'merchant_key' => $this->payfast->company_gateway->getConfigField('merchantKey'),
+ 'return_url' => route('client.payments.index'),
+ 'cancel_url' => route('client.payment_methods.index'),
+ 'notify_url' => $this->payfast->genericWebhookUrl(),
+ 'm_payment_id' => $data['payment_hash'],
+ 'amount' => $data['amount_with_fee'],
+ 'item_name' => 'purchase',
+ 'item_description' => ctrans('texts.invoices').': '.collect($data['invoices'])->pluck('invoice_number'),
+ 'passphrase' => $this->payfast->company_gateway->getConfigField('passphrase'),
+ ];
- return render('gateways.payfast.pay', array_merge($data));
+ $payfast_data['signature'] = $this->payfast->generateSignature($payfast_data);
+ $payfast_data['gateway'] = $this->payfast;
+ $payfast_data['payment_endpoint_url'] = $this->payfast->endpointUrl();
+
+ return render('gateways.payfast.pay', array_merge($data, $payfast_data));
}
/*
@@ -249,36 +263,4 @@ class CreditCard implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.payfast.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $payfast_data = [
- 'merchant_id' => $this->payfast->company_gateway->getConfigField('merchantId'),
- 'merchant_key' => $this->payfast->company_gateway->getConfigField('merchantKey'),
- 'return_url' => route('client.payments.index'),
- 'cancel_url' => route('client.payment_methods.index'),
- 'notify_url' => $this->payfast->genericWebhookUrl(),
- 'm_payment_id' => $data['payment_hash'],
- 'amount' => $data['amount_with_fee'],
- 'item_name' => 'purchase',
- 'item_description' => ctrans('texts.invoices').': '.collect($data['invoices'])->pluck('invoice_number'),
- 'passphrase' => $this->payfast->company_gateway->getConfigField('passphrase'),
- ];
-
- $payfast_data['signature'] = $this->payfast->generateSignature($payfast_data);
- $payfast_data['gateway'] = $this->payfast;
- $payfast_data['payment_endpoint_url'] = $this->payfast->endpointUrl();
-
- return array_merge($data, $payfast_data);
- }
}
diff --git a/app/PaymentDrivers/PayPalExpressPaymentDriver.php b/app/PaymentDrivers/PayPalExpressPaymentDriver.php
index f4c879992825..fa96aa67e27f 100644
--- a/app/PaymentDrivers/PayPalExpressPaymentDriver.php
+++ b/app/PaymentDrivers/PayPalExpressPaymentDriver.php
@@ -250,7 +250,7 @@ class PayPalExpressPaymentDriver extends BaseDriver
public function livewirePaymentView(array $data): string
{
$this->processPaymentView($data);
-
+
return ''; // Gateway is offsite.
}
diff --git a/app/PaymentDrivers/PayPalPPCPPaymentDriver.php b/app/PaymentDrivers/PayPalPPCPPaymentDriver.php
index a095add9ccbd..a62b24b6be8b 100644
--- a/app/PaymentDrivers/PayPalPPCPPaymentDriver.php
+++ b/app/PaymentDrivers/PayPalPPCPPaymentDriver.php
@@ -85,13 +85,30 @@ class PayPalPPCPPaymentDriver extends PayPalBasePaymentDriver
*/
public function processPaymentView($data)
{
- $data = $this->processPaymentViewData($data);
+
+ $this->init()->checkPaymentsReceivable();
+
+ $data['gateway'] = $this;
+ $this->payment_hash->data = array_merge((array) $this->payment_hash->data, ['amount' => $data['total']['amount_with_fee']]);
+ $this->payment_hash->save();
+
+ $data['client_id'] = config('ninja.paypal.client_id');
+ $data['token'] = $this->getClientToken();
+ $data['order_id'] = $this->createOrder($data);
+ $data['funding_source'] = $this->paypal_payment_method;
+ $data['gateway_type_id'] = $this->gateway_type_id;
+ $data['merchantId'] = $this->company_gateway->getConfigField('merchantId');
+ $data['currency'] = $this->client->currency()->code;
+ $data['guid'] = $this->risk_guid;
+ $data['identifier'] = "s:INN_".$this->company_gateway->getConfigField('merchantId')."_CHCK";
+ $data['pp_client_reference'] = $this->getClientHash();
if($this->gateway_type_id == 29) {
return render('gateways.paypal.ppcp.card', $data);
} else {
return render('gateways.paypal.ppcp.pay', $data);
}
+
}
/**
@@ -463,40 +480,7 @@ class PayPalPPCPPaymentDriver extends PayPalBasePaymentDriver
}
-<<<<<<< HEAD
-=======
- public function processPaymentViewData(array $data): array
- {
- $this->init()->checkPaymentsReceivable();
-
- $data['gateway'] = $this;
- $this->payment_hash->data = array_merge((array) $this->payment_hash->data, ['amount' => $data['total']['amount_with_fee']]);
- $this->payment_hash->save();
-
- $data['client_id'] = config('ninja.paypal.client_id');
- $data['token'] = $this->getClientToken();
- $data['order_id'] = $this->createOrder($data);
- $data['funding_source'] = $this->paypal_payment_method;
- $data['gateway_type_id'] = $this->gateway_type_id;
- $data['merchantId'] = $this->company_gateway->getConfigField('merchantId');
- $data['currency'] = $this->client->currency()->code;
- $data['guid'] = $this->risk_guid;
- $data['identifier'] = "s:INN_".$this->company_gateway->getConfigField('merchantId')."_CHCK";
- $data['pp_client_reference'] = $this->getClientHash();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- if ($this->gateway_type_id == 29) {
- return 'gateways.paypal.ppcp.card_livewire';
- }
-
- return 'gateways.paypal.ppcp.pay_livewire';
- }
->>>>>>> new_payment_flow
}
diff --git a/app/PaymentDrivers/PayPalRestPaymentDriver.php b/app/PaymentDrivers/PayPalRestPaymentDriver.php
index 46bca65a930a..dfbf86b75943 100644
--- a/app/PaymentDrivers/PayPalRestPaymentDriver.php
+++ b/app/PaymentDrivers/PayPalRestPaymentDriver.php
@@ -31,13 +31,30 @@ class PayPalRestPaymentDriver extends PayPalBasePaymentDriver
public function processPaymentView($data)
{
- $data = $this->processPaymentViewData($data);
+
+ $this->init();
+
+ $data['gateway'] = $this;
+
+ $this->payment_hash->data = array_merge((array) $this->payment_hash->data, ['amount' => $data['total']['amount_with_fee']]);
+ $this->payment_hash->save();
+
+ $data['client_id'] = $this->company_gateway->getConfigField('clientId');
+ $data['token'] = $this->getClientToken();
+ $data['order_id'] = $this->createOrder($data);
+ $data['funding_source'] = $this->paypal_payment_method;
+ $data['gateway_type_id'] = $this->gateway_type_id;
+ $data['currency'] = $this->client->currency()->code;
+ $data['guid'] = $this->risk_guid;
+ $data['identifier'] = "s:INN_ACDC_CHCK";
+ $data['pp_client_reference'] = $this->getClientHash();
if($this->gateway_type_id == 29) {
return render('gateways.paypal.ppcp.card', $data);
} else {
return render('gateways.paypal.pay', $data);
}
+
}
/**
@@ -417,35 +434,4 @@ class PayPalRestPaymentDriver extends PayPalBasePaymentDriver
SystemLogger::dispatch($response, SystemLog::CATEGORY_GATEWAY_RESPONSE, SystemLog::EVENT_GATEWAY_FAILURE, SystemLog::TYPE_PAYPAL, $this->client, $this->client->company);
}
-
- public function processPaymentViewData(array $data): array
- {
- $this->init();
-
- $data['gateway'] = $this;
-
- $this->payment_hash->data = array_merge((array) $this->payment_hash->data, ['amount' => $data['total']['amount_with_fee']]);
- $this->payment_hash->save();
-
- $data['client_id'] = $this->company_gateway->getConfigField('clientId');
- $data['token'] = $this->getClientToken();
- $data['order_id'] = $this->createOrder($data);
- $data['funding_source'] = $this->paypal_payment_method;
- $data['gateway_type_id'] = $this->gateway_type_id;
- $data['currency'] = $this->client->currency()->code;
- $data['guid'] = $this->risk_guid;
- $data['identifier'] = "s:INN_ACDC_CHCK";
- $data['pp_client_reference'] = $this->getClientHash();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- if ($this->gateway_type_id == 29) {
- return 'gateways.paypal.ppcp.card_livewire';
- }
-
- return 'gateways.paypal.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/PayTrace/CreditCard.php b/app/PaymentDrivers/PayTrace/CreditCard.php
index 970994d3c323..2c2672aa62a8 100644
--- a/app/PaymentDrivers/PayTrace/CreditCard.php
+++ b/app/PaymentDrivers/PayTrace/CreditCard.php
@@ -18,13 +18,12 @@ use App\Models\Invoice;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\PaytracePaymentDriver;
use App\Utils\Traits\MakesHash;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
-class CreditCard implements LivewireMethodInterface
+class CreditCard
{
use MakesHash;
@@ -37,8 +36,9 @@ class CreditCard implements LivewireMethodInterface
public function authorizeView($data)
{
- $data = $this->paymentData($data);
-
+ $data['client_key'] = $this->paytrace->getAuthToken();
+ $data['gateway'] = $this->paytrace;
+
return render('gateways.paytrace.authorize', $data);
}
@@ -239,24 +239,5 @@ class CreditCard implements LivewireMethodInterface
];
return $this->paytrace->processUnsuccessfulTransaction($data);
- }
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.paytrace.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['client_key'] = $this->paytrace->getAuthToken();
- $data['gateway'] = $this->paytrace;
-
- return $data;
}
}
diff --git a/app/PaymentDrivers/Razorpay/Hosted.php b/app/PaymentDrivers/Razorpay/Hosted.php
index 9003349cb77e..2a8c35bafc1f 100644
--- a/app/PaymentDrivers/Razorpay/Hosted.php
+++ b/app/PaymentDrivers/Razorpay/Hosted.php
@@ -19,7 +19,6 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\RazorpayPaymentDriver;
use Illuminate\Http\RedirectResponse;
@@ -27,7 +26,7 @@ use Illuminate\Http\Request;
use Illuminate\View\View;
use Razorpay\Api\Errors\SignatureVerificationError;
-class Hosted implements MethodInterface, LivewireMethodInterface
+class Hosted implements MethodInterface
{
protected RazorpayPaymentDriver $razorpay;
@@ -68,7 +67,23 @@ class Hosted implements MethodInterface, LivewireMethodInterface
*/
public function paymentView(array $data): View
{
- $data = $this->paymentData($data);
+ $order = $this->razorpay->gateway->order->create([
+ 'currency' => $this->razorpay->client->currency()->code,
+ 'amount' => $this->razorpay->convertToRazorpayAmount((float) $this->razorpay->payment_hash->data->amount_with_fee),
+ ]);
+
+ $this->razorpay->payment_hash->withData('order_id', $order->id);
+ $this->razorpay->payment_hash->withData('order_amount', $order->amount);
+
+ $data['gateway'] = $this->razorpay;
+
+ $data['options'] = [
+ 'key' => $this->razorpay->company_gateway->getConfigField('apiKey'),
+ 'amount' => $this->razorpay->convertToRazorpayAmount((float) $this->razorpay->payment_hash->data->amount_with_fee),
+ 'currency' => $this->razorpay->client->currency()->code,
+ 'name' => $this->razorpay->company_gateway->company->present()->name(),
+ 'order_id' => $order->id,
+ ];
return render('gateways.razorpay.hosted.pay', $data);
}
@@ -159,38 +174,4 @@ class Hosted implements MethodInterface, LivewireMethodInterface
throw new PaymentFailed($exception->getMessage(), $exception->getCode());
}
-
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.razorpay.hosted.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $order = $this->razorpay->gateway->order->create([
- 'currency' => $this->razorpay->client->currency()->code,
- 'amount' => $this->razorpay->convertToRazorpayAmount((float) $this->razorpay->payment_hash->data->amount_with_fee),
- ]);
-
- $this->razorpay->payment_hash->withData('order_id', $order->id);
- $this->razorpay->payment_hash->withData('order_amount', $order->amount);
-
- $data['gateway'] = $this->razorpay;
-
- $data['options'] = [
- 'key' => $this->razorpay->company_gateway->getConfigField('apiKey'),
- 'amount' => $this->razorpay->convertToRazorpayAmount((float) $this->razorpay->payment_hash->data->amount_with_fee),
- 'currency' => $this->razorpay->client->currency()->code,
- 'name' => $this->razorpay->company_gateway->company->present()->name(),
- 'order_id' => $order->id,
- ];
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Square/CreditCard.php b/app/PaymentDrivers/Square/CreditCard.php
index f95428c04ebb..1075b0a292ad 100644
--- a/app/PaymentDrivers/Square/CreditCard.php
+++ b/app/PaymentDrivers/Square/CreditCard.php
@@ -21,7 +21,6 @@ use App\Models\Invoice;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\SquarePaymentDriver;
use App\Utils\Traits\MakesHash;
@@ -30,7 +29,7 @@ use Illuminate\Http\Request;
use Illuminate\View\View;
use Square\Http\ApiResponse;
-class CreditCard implements MethodInterface, LivewireMethodInterface
+class CreditCard implements MethodInterface
{
use MakesHash;
@@ -65,7 +64,10 @@ class CreditCard implements MethodInterface, LivewireMethodInterface
public function paymentView($data)
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->square_driver;
+ $data['amount'] = $this->square_driver->payment_hash->data->amount_with_fee;
+ $data['currencyCode'] = $this->square_driver->client->getCurrencyCode();
+ $data['square_contact'] = $this->buildClientObject();
return render('gateways.square.credit_card.pay', $data);
}
@@ -236,24 +238,5 @@ class CreditCard implements MethodInterface, LivewireMethodInterface
return false;
}
- /**
- * @inheritDoc
- */
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.square.credit_card.pay_livewire';
- }
-
- /**
- * @inheritDoc
- */
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->square_driver;
- $data['amount'] = $this->square_driver->payment_hash->data->amount_with_fee;
- $data['currencyCode'] = $this->square_driver->client->getCurrencyCode();
- $data['square_contact'] = $this->buildClientObject();
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Stripe/ACH.php b/app/PaymentDrivers/Stripe/ACH.php
index c759766a5697..2802835bc69e 100644
--- a/app/PaymentDrivers/Stripe/ACH.php
+++ b/app/PaymentDrivers/Stripe/ACH.php
@@ -24,7 +24,6 @@ use App\Models\Payment;
use App\Models\PaymentHash;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
use App\Utils\Traits\MakesHash;
use Exception;
@@ -36,7 +35,7 @@ use Stripe\Exception\InvalidRequestException;
use Stripe\Exception\RateLimitException;
use Stripe\PaymentIntent;
-class ACH implements LivewireMethodInterface
+class ACH
{
use MakesHash;
@@ -200,7 +199,47 @@ class ACH implements LivewireMethodInterface
*/
public function paymentView(array $data)
{
- $this->paymentData($data);
+ $data['gateway'] = $this->stripe;
+ $data['currency'] = $this->stripe->client->getCurrencyCode();
+ $data['payment_method_id'] = GatewayType::BANK_TRANSFER;
+ $data['customer'] = $this->stripe->findOrCreateCustomer();
+ $data['amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+
+ $description = $this->stripe->getDescription(false);
+
+ $intent = false;
+
+ if (count($data['tokens']) == 1) {
+
+ $token = $data['tokens'][0];
+
+ $meta = $token->meta;
+
+ if(isset($meta->state) && $meta->state == 'unauthorized') {
+ return redirect()->route('client.payment_methods.show', $token->hashed_id);
+ }
+ }
+
+ if (count($data['tokens']) == 0) {
+ $intent =
+ $this->stripe->createPaymentIntent(
+ [
+ 'amount' => $data['amount'],
+ 'currency' => $data['currency'],
+ 'setup_future_usage' => 'off_session',
+ 'customer' => $data['customer']->id,
+ 'payment_method_types' => ['us_bank_account'],
+ 'description' => $description,
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::BANK_TRANSFER,
+ ],
+ 'statement_descriptor' => $this->stripe->getStatementDescriptor(),
+ ]
+ );
+ }
+
+ $data['client_secret'] = $intent ? $intent->client_secret : false;
return render('gateways.stripe.ach.pay', $data);
}
@@ -589,56 +628,4 @@ class ACH implements LivewireMethodInterface
return $this->stripe->processInternallyFailedPayment($this->stripe, $e);
}
}
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.ach.pay_livewire';
- }
-
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->stripe;
- $data['currency'] = $this->stripe->client->getCurrencyCode();
- $data['payment_method_id'] = GatewayType::BANK_TRANSFER;
- $data['customer'] = $this->stripe->findOrCreateCustomer();
- $data['amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
-
- $description = $this->stripe->getDescription(false);
-
- $intent = false;
-
- if (count($data['tokens']) == 1) {
-
- $token = $data['tokens'][0];
-
- $meta = $token->meta;
-
- if(isset($meta->state) && $meta->state == 'unauthorized') {
- return redirect()->route('client.payment_methods.show', $token->hashed_id);
- }
- }
-
- if (count($data['tokens']) == 0) {
- $intent =
- $this->stripe->createPaymentIntent(
- [
- 'amount' => $data['amount'],
- 'currency' => $data['currency'],
- 'setup_future_usage' => 'off_session',
- 'customer' => $data['customer']->id,
- 'payment_method_types' => ['us_bank_account'],
- 'description' => $description,
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::BANK_TRANSFER,
- ],
- 'statement_descriptor' => $this->stripe->getStatementDescriptor(),
- ]
- );
- }
-
- $data['client_secret'] = $intent ? $intent->client_secret : false;
-
- return $data;
- }
}
diff --git a/app/PaymentDrivers/Stripe/ACSS.php b/app/PaymentDrivers/Stripe/ACSS.php
index 1d49ff19a31a..7ef4fa2dde2b 100644
--- a/app/PaymentDrivers/Stripe/ACSS.php
+++ b/app/PaymentDrivers/Stripe/ACSS.php
@@ -17,7 +17,6 @@ use App\Models\SystemLog;
use App\Models\GatewayType;
use App\Models\PaymentHash;
use App\Models\PaymentType;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use Illuminate\Support\Str;
use App\Http\Requests\Request;
use App\Jobs\Util\SystemLogger;
@@ -30,7 +29,7 @@ use App\PaymentDrivers\StripePaymentDriver;
use App\Http\Requests\ClientPortal\Payments\PaymentResponseRequest;
use Stripe\PaymentIntent;
-class ACSS implements LivewireMethodInterface
+class ACSS
{
use MakesHash;
@@ -128,7 +127,7 @@ class ACSS implements LivewireMethodInterface
$this->stripe->setClient($hash->fee_invoice->client);
$this->stripe->setPaymentMethod(GatewayType::ACSS);
- return $this->paymentView($data);
+ return $this->continuePayment($data);
}
return redirect()->route('client.payment_methods.show', $client_gateway_token->hashed_id);
@@ -162,43 +161,73 @@ class ACSS implements LivewireMethodInterface
return $intent;
}
- public function paymentData(array $data)
+ /**
+ * Payment view for ACSS
+ *
+ * Determines if any payment tokens are available and if not, generates a mandate
+ *
+ * @param array $data
+
+ */
+ public function paymentView(array $data)
{
+
if(count($data['tokens']) == 0) {
$hash = Str::random(32);
-
Cache::put($hash, $data, 3600);
-
$data['post_auth_response'] = $hash;
- $data['needs_mandate_generate'] = true;
- $data['gateway'] = $this->stripe;
- $data['company_gateway'] = $this->stripe->company_gateway;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\SetupIntent::create([
- 'usage' => 'off_session',
- 'payment_method_types' => ['acss_debit'],
- 'customer' => $data['customer'],
- 'payment_method_options' => [
- 'acss_debit' => [
- 'currency' => 'cad',
- 'mandate_options' => [
- 'payment_schedule' => 'combined',
- 'interval_description' => 'On any invoice due date',
- 'transaction_type' => 'personal',
- ],
- 'verification_method' => 'instant',
- ],
- ],
- ], $this->stripe->stripe_connect_auth);
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- return $data;
+ return $this->generateMandate($data);
}
+ return $this->continuePayment($data);
+ }
+
+ /**
+ * Generate a payment Mandate for ACSS
+ *
+ * @param array $data
+
+ */
+ private function generateMandate(array $data)
+ {
+
+ $data['gateway'] = $this->stripe;
+ $data['company_gateway'] = $this->stripe->company_gateway;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\SetupIntent::create([
+ 'usage' => 'off_session',
+ 'payment_method_types' => ['acss_debit'],
+ 'customer' => $data['customer'],
+ 'payment_method_options' => [
+ 'acss_debit' => [
+ 'currency' => 'cad',
+ 'mandate_options' => [
+ 'payment_schedule' => 'combined',
+ 'interval_description' => 'On any invoice due date',
+ 'transaction_type' => 'personal',
+ ],
+ 'verification_method' => 'instant',
+ ],
+ ],
+ ], $this->stripe->stripe_connect_auth);
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ return render('gateways.stripe.acss.authorize', array_merge($data));
+
+ }
+
+ /**
+ * Continues the payment flow after a Mandate has been successfully generated
+ *
+ * @param array $data
+ */
+ private function continuePayment(array $data)
+ {
+
$this->stripe->init();
$data['gateway'] = $this->stripe;
@@ -211,25 +240,6 @@ class ACSS implements LivewireMethodInterface
$this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
$this->stripe->payment_hash->save();
- return $data;
- }
-
- /**
- * Payment view for ACSS
- *
- * Determines if any payment tokens are available and if not, generates a mandate
- *
- * @param array $data
-
- */
- public function paymentView(array $data)
- {
- $data = $this->paymentData($data);
-
- if (array_key_exists('needs_mandate_generate', $data)) {
- return render('gateways.stripe.acss.authorize', array_merge($data));
- }
-
return render('gateways.stripe.acss.pay', $data);
}
@@ -390,13 +400,4 @@ class ACSS implements LivewireMethodInterface
return $this->stripe->processInternallyFailedPayment($this->stripe, $e);
}
}
-
- public function livewirePaymentView(array $data): string
- {
- if (array_key_exists('needs_mandate_generate', $data)) {
- return 'gateways.stripe.acss.authorize_livewire';
- }
-
- return 'gateways.stripe.acss.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/BACS.php b/app/PaymentDrivers/Stripe/BACS.php
index a028a311a4af..84ce704a8990 100644
--- a/app/PaymentDrivers/Stripe/BACS.php
+++ b/app/PaymentDrivers/Stripe/BACS.php
@@ -20,13 +20,12 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Stripe\Jobs\UpdateCustomer;
use App\PaymentDrivers\StripePaymentDriver;
use App\Utils\Number;
use Stripe\Checkout\Session;
-class BACS implements LivewireMethodInterface
+class BACS
{
public $stripe;
@@ -70,7 +69,9 @@ class BACS implements LivewireMethodInterface
}
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->stripe;
+ $data['amount'] = $data['total']['amount_with_fee'];
+ $data['payment_hash'] = $this->stripe->payment_hash->hash;
return render('gateways.stripe.bacs.pay', $data);
}
@@ -186,18 +187,4 @@ class BACS implements LivewireMethodInterface
return $this->stripe->processInternallyFailedPayment($this->stripe, $e);
}
}
-
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->stripe;
- $data['amount'] = $data['total']['amount_with_fee'];
- $data['payment_hash'] = $this->stripe->payment_hash->hash;
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.bacs.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/BECS.php b/app/PaymentDrivers/Stripe/BECS.php
index 020d9493d506..271e6170f481 100644
--- a/app/PaymentDrivers/Stripe/BECS.php
+++ b/app/PaymentDrivers/Stripe/BECS.php
@@ -19,10 +19,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class BECS implements LivewireMethodInterface
+class BECS
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -40,7 +39,33 @@ class BECS implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['payment_method_id'] = GatewayType::BECS;
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+ $data['payment_hash'] = $this->stripe->payment_hash->hash;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => $this->stripe->client->currency()->code,
+ 'payment_method_types' => ['au_becs_debit'],
+ 'setup_future_usage' => 'off_session',
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::BECS,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.becs.pay', $data);
}
@@ -136,42 +161,4 @@ class BECS implements LivewireMethodInterface
return $this->stripe->processInternallyFailedPayment($this->stripe, $e);
}
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['payment_method_id'] = GatewayType::BECS;
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
- $data['payment_hash'] = $this->stripe->payment_hash->hash;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => $this->stripe->client->currency()->code,
- 'payment_method_types' => ['au_becs_debit'],
- 'setup_future_usage' => 'off_session',
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::BECS,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.becs.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/Bancontact.php b/app/PaymentDrivers/Stripe/Bancontact.php
index 352db6bc1cbc..a4b0d61fd095 100644
--- a/app/PaymentDrivers/Stripe/Bancontact.php
+++ b/app/PaymentDrivers/Stripe/Bancontact.php
@@ -18,10 +18,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class Bancontact implements LivewireMethodInterface
+class Bancontact
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -38,7 +37,32 @@ class Bancontact implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => 'eur',
+ 'payment_method_types' => ['bancontact'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::BANCONTACT,
+ ],
+
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.bancontact.pay', $data);
}
@@ -119,41 +143,4 @@ class Bancontact implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => 'eur',
- 'payment_method_types' => ['bancontact'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::BANCONTACT,
- ],
-
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.bancontact.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/BankTransfer.php b/app/PaymentDrivers/Stripe/BankTransfer.php
index 51a6e8e59c3f..4f7a1bac4392 100644
--- a/app/PaymentDrivers/Stripe/BankTransfer.php
+++ b/app/PaymentDrivers/Stripe/BankTransfer.php
@@ -19,13 +19,12 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
use App\Utils\Number;
use App\Utils\Traits\MakesHash;
use Stripe\PaymentIntent;
-class BankTransfer implements LivewireMethodInterface
+class BankTransfer
{
use MakesHash;
@@ -39,7 +38,37 @@ class BankTransfer implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency()),
+ 'currency' => $this->stripe->client->currency()->code,
+ 'customer' => $this->stripe->findOrCreateCustomer()->id,
+ 'description' => $this->stripe->getDescription(false),
+ 'payment_method_types' => ['customer_balance'],
+ 'payment_method_data' => [
+ 'type' => 'customer_balance',
+ ],
+ 'payment_method_options' => [
+ 'customer_balance' => [
+ 'funding_type' => 'bank_transfer',
+ 'bank_transfer' => $this->resolveBankType()
+ ],
+ ],
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::DIRECT_DEBIT,
+ ],
+ ], $this->stripe->stripe_connect_auth);
+
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency())]);
+ $this->stripe->payment_hash->save();
+
+ $data = [];
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['gateway'] = $this->stripe;
+ $data['client_secret'] = $intent ? $intent->client_secret : false;
return render('gateways.stripe.bank_transfer.pay', $data);
}
@@ -288,46 +317,4 @@ class BankTransfer implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency()),
- 'currency' => $this->stripe->client->currency()->code,
- 'customer' => $this->stripe->findOrCreateCustomer()->id,
- 'description' => $this->stripe->getDescription(false),
- 'payment_method_types' => ['customer_balance'],
- 'payment_method_data' => [
- 'type' => 'customer_balance',
- ],
- 'payment_method_options' => [
- 'customer_balance' => [
- 'funding_type' => 'bank_transfer',
- 'bank_transfer' => $this->resolveBankType()
- ],
- ],
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::DIRECT_DEBIT,
- ],
- ], $this->stripe->stripe_connect_auth);
-
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency())]);
- $this->stripe->payment_hash->save();
-
- $data = [];
- $data['return_url'] = $this->buildReturnUrl();
- $data['gateway'] = $this->stripe;
- $data['client_secret'] = $intent ? $intent->client_secret : false;
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.bank_transfer.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/BrowserPay.php b/app/PaymentDrivers/Stripe/BrowserPay.php
index d71541e970af..09d71fcdb17c 100644
--- a/app/PaymentDrivers/Stripe/BrowserPay.php
+++ b/app/PaymentDrivers/Stripe/BrowserPay.php
@@ -19,7 +19,6 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Common\MethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
use App\Utils\Ninja;
@@ -30,7 +29,7 @@ use Stripe\ApplePayDomain;
use Stripe\Exception\ApiErrorException;
use Stripe\PaymentIntent;
-class BrowserPay implements MethodInterface, LivewireMethodInterface
+class BrowserPay implements MethodInterface
{
protected StripePaymentDriver $stripe;
@@ -64,9 +63,8 @@ class BrowserPay implements MethodInterface, LivewireMethodInterface
{
return redirect()->route('client.payment_methods.index');
}
-
- public function paymentData(array $data): array
+ public function paymentView(array $data): View
{
$payment_intent_data = [
'amount' => $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency()),
@@ -95,13 +93,6 @@ class BrowserPay implements MethodInterface, LivewireMethodInterface
'requestPayerEmail' => true,
];
- return $data;
- }
-
- public function paymentView(array $data): View
- {
- $data = $this->paymentData($data);
-
return render('gateways.stripe.browser_pay.pay', $data);
}
@@ -240,9 +231,4 @@ class BrowserPay implements MethodInterface, LivewireMethodInterface
return str_replace(['https://', '/public'], '', $domain);
}
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.browser_pay.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/CreditCard.php b/app/PaymentDrivers/Stripe/CreditCard.php
index bfaa366f6cce..eab1a98c3262 100644
--- a/app/PaymentDrivers/Stripe/CreditCard.php
+++ b/app/PaymentDrivers/Stripe/CreditCard.php
@@ -19,13 +19,12 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\Stripe\Jobs\UpdateCustomer;
use App\PaymentDrivers\StripePaymentDriver;
use Stripe\PaymentIntent;
use Stripe\PaymentMethod;
-class CreditCard implements LivewireMethodInterface
+class CreditCard
{
public $stripe;
@@ -58,7 +57,7 @@ class CreditCard implements LivewireMethodInterface
return redirect()->route('client.payment_methods.index');
}
- public function paymentData(array $data): array
+ public function paymentView(array $data)
{
$description = $this->stripe->getDescription(false);
@@ -78,21 +77,9 @@ class CreditCard implements LivewireMethodInterface
$data['intent'] = $this->stripe->createPaymentIntent($payment_intent_data);
$data['gateway'] = $this->stripe;
- return $data;
- }
-
- public function paymentView(array $data)
- {
- $data = $this->paymentData($data);
-
return render('gateways.stripe.credit_card.pay', $data);
}
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.credit_card.pay_livewire';
- }
-
public function paymentResponse(PaymentResponseRequest $request)
{
$this->stripe->init();
diff --git a/app/PaymentDrivers/Stripe/EPS.php b/app/PaymentDrivers/Stripe/EPS.php
index 98b23fdc2b9f..8f1456fcebb0 100644
--- a/app/PaymentDrivers/Stripe/EPS.php
+++ b/app/PaymentDrivers/Stripe/EPS.php
@@ -18,10 +18,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class EPS implements LivewireMethodInterface
+class EPS
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -38,7 +37,31 @@ class EPS implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => 'eur',
+ 'payment_method_types' => ['eps'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::EPS,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.eps.pay', $data);
}
@@ -119,40 +142,4 @@ class EPS implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => 'eur',
- 'payment_method_types' => ['eps'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::EPS,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.eps.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/FPX.php b/app/PaymentDrivers/Stripe/FPX.php
index a7cfe5d52158..e97b25562c13 100644
--- a/app/PaymentDrivers/Stripe/FPX.php
+++ b/app/PaymentDrivers/Stripe/FPX.php
@@ -19,10 +19,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class FPX implements LivewireMethodInterface
+class FPX
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -39,7 +38,31 @@ class FPX implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => $this->stripe->client->getCurrencyCode(),
+ 'payment_method_types' => ['fpx'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::FPX,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.fpx.pay', $data);
}
@@ -120,40 +143,4 @@ class FPX implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 400);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => $this->stripe->client->getCurrencyCode(),
- 'payment_method_types' => ['fpx'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::FPX,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.fpx.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/GIROPAY.php b/app/PaymentDrivers/Stripe/GIROPAY.php
index 2a90cd0e7eb4..cd8828bfb4ea 100644
--- a/app/PaymentDrivers/Stripe/GIROPAY.php
+++ b/app/PaymentDrivers/Stripe/GIROPAY.php
@@ -18,10 +18,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class GIROPAY implements LivewireMethodInterface
+class GIROPAY
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -38,7 +37,31 @@ class GIROPAY implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => 'eur',
+ 'payment_method_types' => ['giropay'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::GIROPAY,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.giropay.pay', $data);
}
@@ -119,40 +142,4 @@ class GIROPAY implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => 'eur',
- 'payment_method_types' => ['giropay'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::GIROPAY,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.giropay.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/Klarna.php b/app/PaymentDrivers/Stripe/Klarna.php
index 47544d21e20d..09169e4f16a1 100644
--- a/app/PaymentDrivers/Stripe/Klarna.php
+++ b/app/PaymentDrivers/Stripe/Klarna.php
@@ -18,10 +18,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class Klarna implements LivewireMethodInterface
+class Klarna
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -38,7 +37,33 @@ class Klarna implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $description = $this->stripe->getDescription(false);
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => $this->stripe->client->getCurrencyCode(),
+ 'payment_method_types' => ['klarna'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $description,
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::KLARNA,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.klarna.pay', $data);
}
@@ -117,42 +142,4 @@ class Klarna implements LivewireMethodInterface
throw new PaymentFailed(ctrans('texts.gateway_error'), 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $description = $this->stripe->getDescription(false);
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => $this->stripe->client->getCurrencyCode(),
- 'payment_method_types' => ['klarna'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $description,
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::KLARNA,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.klarna.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/PRZELEWY24.php b/app/PaymentDrivers/Stripe/PRZELEWY24.php
index d0422bc167ca..ce9bb79405ed 100644
--- a/app/PaymentDrivers/Stripe/PRZELEWY24.php
+++ b/app/PaymentDrivers/Stripe/PRZELEWY24.php
@@ -18,10 +18,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class PRZELEWY24 implements LivewireMethodInterface
+class PRZELEWY24
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -38,7 +37,31 @@ class PRZELEWY24 implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => 'eur',
+ 'payment_method_types' => ['p24'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::PRZELEWY24,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.przelewy24.pay', $data);
}
@@ -119,40 +142,4 @@ class PRZELEWY24 implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => 'eur',
- 'payment_method_types' => ['p24'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::PRZELEWY24,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.przelewy24.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/SEPA.php b/app/PaymentDrivers/Stripe/SEPA.php
index e633a06403e4..79f98e9f6239 100644
--- a/app/PaymentDrivers/Stripe/SEPA.php
+++ b/app/PaymentDrivers/Stripe/SEPA.php
@@ -19,10 +19,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class SEPA implements LivewireMethodInterface
+class SEPA
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -48,7 +47,33 @@ class SEPA implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $data['gateway'] = $this->stripe;
+ $data['payment_method_id'] = GatewayType::SEPA;
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+ $data['payment_hash'] = $this->stripe->payment_hash->hash;
+
+ $intent_data = [
+ 'amount' => $data['stripe_amount'],
+ 'currency' => 'eur',
+ 'payment_method_types' => ['sepa_debit'],
+ 'setup_future_usage' => 'off_session',
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::SEPA,
+ ],
+ ];
+
+ $intent = \Stripe\PaymentIntent::create($intent_data, array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.sepa.pay', $data);
}
@@ -151,42 +176,4 @@ class SEPA implements LivewireMethodInterface
return $this->stripe->processInternallyFailedPayment($this->stripe, $e);
}
}
-
- public function paymentData(array $data): array
- {
- $data['gateway'] = $this->stripe;
- $data['payment_method_id'] = GatewayType::SEPA;
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
- $data['payment_hash'] = $this->stripe->payment_hash->hash;
-
- $intent_data = [
- 'amount' => $data['stripe_amount'],
- 'currency' => 'eur',
- 'payment_method_types' => ['sepa_debit'],
- 'setup_future_usage' => 'off_session',
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::SEPA,
- ],
- ];
-
- $intent = \Stripe\PaymentIntent::create($intent_data, array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.sepa.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/SOFORT.php b/app/PaymentDrivers/Stripe/SOFORT.php
index 1aa7d95ed89b..4a7faef870c0 100644
--- a/app/PaymentDrivers/Stripe/SOFORT.php
+++ b/app/PaymentDrivers/Stripe/SOFORT.php
@@ -18,10 +18,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class SOFORT implements LivewireMethodInterface
+class SOFORT
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -38,7 +37,31 @@ class SOFORT implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => 'eur',
+ 'payment_method_types' => ['sofort'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::SOFORT,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.sofort.pay', $data);
}
@@ -114,40 +137,4 @@ class SOFORT implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => 'eur',
- 'payment_method_types' => ['sofort'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::SOFORT,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.sofort.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/Stripe/iDeal.php b/app/PaymentDrivers/Stripe/iDeal.php
index 00d738c020d6..01b346b7801d 100644
--- a/app/PaymentDrivers/Stripe/iDeal.php
+++ b/app/PaymentDrivers/Stripe/iDeal.php
@@ -18,10 +18,9 @@ use App\Models\GatewayType;
use App\Models\Payment;
use App\Models\PaymentType;
use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
use App\PaymentDrivers\StripePaymentDriver;
-class iDeal implements LivewireMethodInterface
+class iDeal
{
/** @var StripePaymentDriver */
public StripePaymentDriver $stripe;
@@ -38,7 +37,31 @@ class iDeal implements LivewireMethodInterface
public function paymentView(array $data)
{
- $data = $this->paymentData($data);
+ $this->stripe->init();
+
+ $data['gateway'] = $this->stripe;
+ $data['return_url'] = $this->buildReturnUrl();
+ $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
+ $data['client'] = $this->stripe->client;
+ $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
+ $data['country'] = $this->stripe->client->country->iso_3166_2;
+
+ $intent = \Stripe\PaymentIntent::create([
+ 'amount' => $data['stripe_amount'],
+ 'currency' => 'eur',
+ 'payment_method_types' => ['ideal'],
+ 'customer' => $this->stripe->findOrCreateCustomer(),
+ 'description' => $this->stripe->getDescription(false),
+ 'metadata' => [
+ 'payment_hash' => $this->stripe->payment_hash->hash,
+ 'gateway_type_id' => GatewayType::IDEAL,
+ ],
+ ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
+
+ $data['pi_client_secret'] = $intent->client_secret;
+
+ $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
+ $this->stripe->payment_hash->save();
return render('gateways.stripe.ideal.pay', $data);
}
@@ -119,40 +142,4 @@ class iDeal implements LivewireMethodInterface
throw new PaymentFailed('Failed to process the payment.', 500);
}
-
- public function paymentData(array $data): array
- {
- $this->stripe->init();
-
- $data['gateway'] = $this->stripe;
- $data['return_url'] = $this->buildReturnUrl();
- $data['stripe_amount'] = $this->stripe->convertToStripeAmount($data['total']['amount_with_fee'], $this->stripe->client->currency()->precision, $this->stripe->client->currency());
- $data['client'] = $this->stripe->client;
- $data['customer'] = $this->stripe->findOrCreateCustomer()->id;
- $data['country'] = $this->stripe->client->country->iso_3166_2;
-
- $intent = \Stripe\PaymentIntent::create([
- 'amount' => $data['stripe_amount'],
- 'currency' => 'eur',
- 'payment_method_types' => ['ideal'],
- 'customer' => $this->stripe->findOrCreateCustomer(),
- 'description' => $this->stripe->getDescription(false),
- 'metadata' => [
- 'payment_hash' => $this->stripe->payment_hash->hash,
- 'gateway_type_id' => GatewayType::IDEAL,
- ],
- ], array_merge($this->stripe->stripe_connect_auth, ['idempotency_key' => uniqid("st", true)]));
-
- $data['pi_client_secret'] = $intent->client_secret;
-
- $this->stripe->payment_hash->data = array_merge((array) $this->stripe->payment_hash->data, ['stripe_amount' => $data['stripe_amount']]);
- $this->stripe->payment_hash->save();
-
- return $data;
- }
-
- public function livewirePaymentView(array $data): string
- {
- return 'gateways.stripe.ideal.pay_livewire';
- }
}
diff --git a/app/PaymentDrivers/StripePaymentDriver.php b/app/PaymentDrivers/StripePaymentDriver.php
index 970feb9f316b..d91e39fc3763 100644
--- a/app/PaymentDrivers/StripePaymentDriver.php
+++ b/app/PaymentDrivers/StripePaymentDriver.php
@@ -12,47 +12,6 @@
namespace App\PaymentDrivers;
-<<<<<<< HEAD
-=======
-use App\Exceptions\PaymentFailed;
-use App\Exceptions\StripeConnectFailure;
-use App\Http\Requests\Payments\PaymentWebhookRequest;
-use App\Http\Requests\Request;
-use App\Jobs\Util\SystemLogger;
-use App\Models\Client;
-use App\Models\ClientGatewayToken;
-use App\Models\GatewayType;
-use App\Models\Payment;
-use App\Models\PaymentHash;
-use App\Models\SystemLog;
-use App\PaymentDrivers\Common\LivewireMethodInterface;
-use App\PaymentDrivers\Stripe\ACH;
-use App\PaymentDrivers\Stripe\ACSS;
-use App\PaymentDrivers\Stripe\Alipay;
-use App\PaymentDrivers\Stripe\BACS;
-use App\PaymentDrivers\Stripe\Bancontact;
-use App\PaymentDrivers\Stripe\BankTransfer;
-use App\PaymentDrivers\Stripe\BECS;
-use App\PaymentDrivers\Stripe\BrowserPay;
-use App\PaymentDrivers\Stripe\Charge;
-use App\PaymentDrivers\Stripe\Connect\Verify;
-use App\PaymentDrivers\Stripe\CreditCard;
-use App\PaymentDrivers\Stripe\EPS;
-use App\PaymentDrivers\Stripe\FPX;
-use App\PaymentDrivers\Stripe\GIROPAY;
-use App\PaymentDrivers\Stripe\iDeal;
-use App\PaymentDrivers\Stripe\ImportCustomers;
-use App\PaymentDrivers\Stripe\Jobs\PaymentIntentFailureWebhook;
-use App\PaymentDrivers\Stripe\Jobs\PaymentIntentPartiallyFundedWebhook;
-use App\PaymentDrivers\Stripe\Jobs\PaymentIntentProcessingWebhook;
-use App\PaymentDrivers\Stripe\Jobs\PaymentIntentWebhook;
-use App\PaymentDrivers\Stripe\Klarna;
-use App\PaymentDrivers\Stripe\PRZELEWY24;
-use App\PaymentDrivers\Stripe\SEPA;
-use App\PaymentDrivers\Stripe\SOFORT;
-use App\PaymentDrivers\Stripe\Utilities;
-use App\Utils\Traits\MakesHash;
->>>>>>> new_payment_flow
use Exception;
use Stripe\Stripe;
use Stripe\Account;
@@ -460,33 +419,6 @@ class StripePaymentDriver extends BaseDriver
return $this->payment_method->paymentView($data);
}
- public function processPaymentViewData(array $data): array
- {
- $data = $this->payment_method->paymentData($data);
-
- $data['stripe_account_id'] = $this->company_gateway->getConfigField('account_id');
-
- if (array_key_exists('intent', $data)) {
- $data['client_secret'] = $data['intent']->client_secret;
- }
-
- unset($data['intent']);
-
- $token_billing_string = 'true';
-
- if($this->company_gateway->token_billing == 'off' || $this->company_gateway->token_billing == 'optin') {
- $token_billing_string = 'false';
- }
-
- if (isset($data['pre_payment']) && $data['pre_payment'] == '1' && isset($data['is_recurring']) && $data['is_recurring'] == '1') {
- $token_billing_string = 'true';
- }
-
- $data['token_billing_string'] = $token_billing_string;
-
- return $data;
- }
-
public function processPaymentResponse($request)
{
return $this->payment_method->paymentResponse($request);
diff --git a/app/Providers/ComposerServiceProvider.php b/app/Providers/ComposerServiceProvider.php
index ea8b773ee820..36fd7b1e10f6 100644
--- a/app/Providers/ComposerServiceProvider.php
+++ b/app/Providers/ComposerServiceProvider.php
@@ -49,6 +49,6 @@ class ComposerServiceProvider extends ServiceProvider
public function register()
{
//
-
+
}
}
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index 54e3039ea124..57ddd8d7e19a 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -536,7 +536,7 @@ class EventServiceProvider extends ServiceProvider
QuoteWasRestored::class => [
QuoteRestoredActivity::class,
],
- QuoteReminderWasEmailed::class =>[
+ QuoteReminderWasEmailed::class => [
QuoteReminderEmailActivity::class,
// QuoteEmailedNotification::class,
],
diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php
index 09250b10dcfa..b43fe888797f 100644
--- a/app/Providers/RouteServiceProvider.php
+++ b/app/Providers/RouteServiceProvider.php
@@ -92,7 +92,7 @@ class RouteServiceProvider extends ServiceProvider
RateLimiter::for('portal', function (Request $request) {
return Limit::perMinute(15)->by($request->ip());
});
-
+
}
/**
diff --git a/app/Repositories/ActivityRepository.php b/app/Repositories/ActivityRepository.php
index 81874524b1d2..8882c963d627 100644
--- a/app/Repositories/ActivityRepository.php
+++ b/app/Repositories/ActivityRepository.php
@@ -82,7 +82,7 @@ class ActivityRepository extends BaseRepository
}
$entity = $entity->fresh();
-
+
if (get_class($entity) == Invoice::class
|| get_class($entity) == Quote::class
|| get_class($entity) == Credit::class
diff --git a/app/Repositories/DesignRepository.php b/app/Repositories/DesignRepository.php
index f63e54b45ec3..b458f4bce6c2 100644
--- a/app/Repositories/DesignRepository.php
+++ b/app/Repositories/DesignRepository.php
@@ -65,9 +65,9 @@ class DesignRepository extends BaseRepository
$design->name = str_ireplace("_deleted_", "_restored_", $design->name);
parent::restore($design);
-
+
return $design;
-
+
}
diff --git a/app/Repositories/Import/Quickbooks/Contracts/RepositoryInterface.php b/app/Repositories/Import/Quickbooks/Contracts/RepositoryInterface.php
index 9bd07f7e01f2..519f301b4f03 100644
--- a/app/Repositories/Import/Quickbooks/Contracts/RepositoryInterface.php
+++ b/app/Repositories/Import/Quickbooks/Contracts/RepositoryInterface.php
@@ -4,9 +4,9 @@ namespace App\Repositories\Import\Quickbooks\Contracts;
use Illuminate\Support\Collection;
-interface RepositoryInterface {
-
- function get(int $max = 100): Collection;
- function all(): Collection;
- function count(): int;
-}
\ No newline at end of file
+interface RepositoryInterface
+{
+ public function get(int $max = 100): Collection;
+ public function all(): Collection;
+ public function count(): int;
+}
diff --git a/app/Repositories/Import/Quickbooks/Repository.php b/app/Repositories/Import/Quickbooks/Repository.php
index bcbf85ccff96..c02bc36c0e22 100644
--- a/app/Repositories/Import/Quickbooks/Repository.php
+++ b/app/Repositories/Import/Quickbooks/Repository.php
@@ -9,22 +9,22 @@ use App\Repositories\Import\Quickbooks\Transformers\Transformer as QuickbooksTra
abstract class Repository implements RepositoryInterface
{
-
protected string $entity;
protected QuickbooksInterface $db;
protected QuickbooksTransformer $transfomer;
public function __construct(QuickbooksInterface $db, QuickbooksTransformer $transfomer)
{
- $this->db= $db;
+ $this->db = $db;
$this->transformer = $transfomer;
}
- public function count() : int {
+ public function count(): int
+ {
return $this->db->totalRecords($this->entity);
}
- public function all() : Collection
+ public function all(): Collection
{
return $this->get($this->count());
}
@@ -34,5 +34,5 @@ abstract class Repository implements RepositoryInterface
return $this->transformer->transform($this->db->fetchRecords($this->entity, $max), $this->entity);
}
-
-}
\ No newline at end of file
+
+}
diff --git a/app/Repositories/Import/Quickbooks/Transformers/Transformer.php b/app/Repositories/Import/Quickbooks/Transformers/Transformer.php
index 816b9e463cde..656e3288f6bc 100644
--- a/app/Repositories/Import/Quickbooks/Transformers/Transformer.php
+++ b/app/Repositories/Import/Quickbooks/Transformers/Transformer.php
@@ -8,7 +8,9 @@ class Transformer
{
public function transform(array $items, string $type): Collection
{
- if(!method_exists($this, ($method = "transform{$type}s"))) throw new \InvalidArgumentException("Unknown type: $type");
+ if(!method_exists($this, ($method = "transform{$type}s"))) {
+ throw new \InvalidArgumentException("Unknown type: $type");
+ }
return call_user_func([$this, $method], $items);
}
@@ -78,7 +80,7 @@ class Transformer
]);
}
- protected function transformation(array $items, array $keys) : Collection
+ protected function transformation(array $items, array $keys): Collection
{
return collect($items)->select($keys);
}
diff --git a/app/Repositories/InvoiceRepository.php b/app/Repositories/InvoiceRepository.php
index 5d32bb7dc594..2ecef3fe4bed 100644
--- a/app/Repositories/InvoiceRepository.php
+++ b/app/Repositories/InvoiceRepository.php
@@ -65,7 +65,7 @@ class InvoiceRepository extends BaseRepository
public function delete($invoice): Invoice
{
$invoice = $invoice->fresh();
-
+
if ($invoice->is_deleted) {
return $invoice;
}
diff --git a/app/Repositories/TaskRepository.php b/app/Repositories/TaskRepository.php
index 96ee297427e9..774bd9502a37 100644
--- a/app/Repositories/TaskRepository.php
+++ b/app/Repositories/TaskRepository.php
@@ -46,9 +46,10 @@ class TaskRepository extends BaseRepository
$this->new_task = false;
}
- if(!is_numeric($task->rate) && !isset($data['rate']))
+ if(!is_numeric($task->rate) && !isset($data['rate'])) {
$data['rate'] = 0;
-
+ }
+
$task->fill($data);
$task->saveQuietly();
@@ -117,14 +118,16 @@ class TaskRepository extends BaseRepository
}
$key_values = array_column($time_log, 0);
-
- if(count($key_values) > 0)
+
+ if(count($key_values) > 0) {
array_multisort($key_values, SORT_ASC, $time_log);
+ }
foreach($time_log as $key => $value) {
- if(is_array($time_log[$key]) && count($time_log[$key]) >=2)
+ if(is_array($time_log[$key]) && count($time_log[$key]) >= 2) {
$time_log[$key][1] = $this->roundTimeLog($time_log[$key][0], $time_log[$key][1]);
+ }
}
@@ -147,10 +150,10 @@ class TaskRepository extends BaseRepository
$task->calculated_start_date = $this->harvestStartDate($time_log, $task);
- if(isset(end($time_log)[1])){
+ if(isset(end($time_log)[1])) {
$task->is_running = end($time_log)[1] == 0;
}
-
+
$task->time_log = json_encode($time_log);
$task->saveQuietly();
@@ -312,7 +315,7 @@ class TaskRepository extends BaseRepository
}
$this->calculateProjectDuration($task);
-
+
return $task;
}
@@ -361,7 +364,7 @@ class TaskRepository extends BaseRepository
return $task->number;
}
- private function calculateProjectDuration(Task $task)
+ private function calculateProjectDuration(Task $task)
{
if($task->project) {
@@ -416,11 +419,11 @@ class TaskRepository extends BaseRepository
if ($task->is_deleted) {
return;
}
-
+
parent::delete($task);
$this->calculateProjectDuration($task);
}
-}
\ No newline at end of file
+}
diff --git a/app/Repositories/VendorRepository.php b/app/Repositories/VendorRepository.php
index de1b998b188f..fbcbee9be802 100644
--- a/app/Repositories/VendorRepository.php
+++ b/app/Repositories/VendorRepository.php
@@ -54,7 +54,7 @@ class VendorRepository extends BaseRepository
$vendor->saveQuietly();
$vendor->service()->applyNumber();
-
+
if (isset($data['contacts']) || $vendor->contacts()->count() == 0) {
$this->contact_repo->save($data, $vendor);
}
diff --git a/app/Services/Bank/ProcessBankRules.php b/app/Services/Bank/ProcessBankRules.php
index 4710b2cd08fc..5caf82649ff6 100644
--- a/app/Services/Bank/ProcessBankRules.php
+++ b/app/Services/Bank/ProcessBankRules.php
@@ -72,19 +72,20 @@ class ProcessBankRules extends AbstractService
// $client.custom4
private function matchCredit()
{
-
+ $match_set = [];
+
$this->credit_rules = $this->bank_transaction->company->credit_rules();
- foreach ($this->credit_rules as $bank_transaction_rule)
- {
+ foreach ($this->credit_rules as $bank_transaction_rule) {
+ $match_set = [];
if (!is_array($bank_transaction_rule['rules'])) {
continue;
}
- foreach ($bank_transaction_rule['rules'] as $rule) {
- $rule_count = count($bank_transaction_rule['rules']);
+ $rule_count = count($bank_transaction_rule['rules']);
+ foreach ($bank_transaction_rule['rules'] as $rule) {
$payments = Payment::query()
->withTrashed()
@@ -93,61 +94,148 @@ class ProcessBankRules extends AbstractService
->whereNull('transaction_id')
->get();
- match($rule['search_key']){
- '$payment.amount' => $results = $this->searchPaymentResource('amount', $rule),
- '$payment.transaction_reference' => $results = $this->searchPaymentResource('transaction_reference', $rule),
- '$payment.custom1' => $results = $this->searchPaymentResource('custom1', $rule),
- '$payment.custom2' => $results = $this->searchPaymentResource('custom2', $rule),
- '$payment.custom3' => $results = $this->searchPaymentResource('custom3', $rule),
- '$payment.custom4' => $results = $this->searchPaymentResource('custom4', $rule),
- '$invoice.amount' => $results = $this->searchInvoiceResource('amount', $rule),
- '$invoice.number' => $results = $this->searchInvoiceResource('number', $rule),
- '$invoice.po_number' => $results = $this->searchInvoiceResource('po_number', $rule),
- '$invoice.custom1' => $results = $this->searchInvoiceResource('custom1', $rule),
- '$invoice.custom2' => $results = $this->searchInvoiceResource('custom2', $rule),
- '$invoice.custom3' => $results = $this->searchInvoiceResource('custom3', $rule),
- '$invoice.custom4' => $results = $this->searchInvoiceResource('custom4', $rule),
- '$client.id_number' => $results = $this->searchClientResource('id_number', $rule),
- '$client.email' => $results = $this->searchClientResource('email', $rule),
- '$client.custom1' => $results = $this->searchClientResource('custom1', $rule),
- '$client.custom2' => $results = $this->searchClientResource('custom2', $rule),
- '$client.custom3' => $results = $this->searchClientResource('custom3', $rule),
- '$client.custom4' => $results = $this->searchClientResource('custom4', $rule),
- };
- }
-
- }
- }
-
- private function searchInvoiceResource(string $column, array $rule)
- {
-
- return Invoice::query()
+ $invoices = Invoice::query()
->withTrashed()
->where('company_id', $this->bank_transaction->company_id)
->whereIn('status_id', [1,2,3])
->where('is_deleted', 0)
- ->when($rule['search_key'] == 'description', function ($q) use ($rule, $column){
- return $q->cursor()->filter(function ($record) use ($rule, $column){
- return $this->matchStringOperator($this->bank_transaction->description, $record->{$column}, $rule['operator']);
- });
- })
- ->when($rule['search_key'] == 'amount', function ($q) use($rule,$column){
- return $q->cursor()->filter(function ($record) use ($rule, $column) {
- return $this->matchNumberOperator($this->bank_transaction->amount, $record->{$column}, $rule['operator']);
- });
- })->pluck("id");
-
- }
-
- private function searchPaymentResource()
- {
+ ->get();
+
+ $results = [];
+
+ match($rule['search_key']) {
+ '$payment.amount' => $results = [Payment::class, $this->searchPaymentResource('amount', $rule, $payments)],
+ '$payment.transaction_reference' => $results = [Payment::class, $this->searchPaymentResource('transaction_reference', $rule, $payments)],
+ '$payment.custom1' => $results = [Payment::class, $this->searchPaymentResource('custom1', $rule, $payments)],
+ '$payment.custom2' => $results = [Payment::class, $this->searchPaymentResource('custom2', $rule, $payments)],
+ '$payment.custom3' => $results = [Payment::class, $this->searchPaymentResource('custom3', $rule, $payments)],
+ '$payment.custom4' => $results = [Payment::class, $this->searchPaymentResource('custom4', $rule, $payments)],
+ '$invoice.amount' => $results = [Invoice::class, $this->searchInvoiceResource('amount', $rule, $invoices)],
+ '$invoice.number' => $results = [Invoice::class, $this->searchInvoiceResource('number', $rule, $invoices)],
+ '$invoice.po_number' => $results = [Invoice::class, $this->searchInvoiceResource('po_number', $rule, $invoices)],
+ '$invoice.custom1' => $results = [Invoice::class, $this->searchInvoiceResource('custom1', $rule, $invoices)],
+ '$invoice.custom2' => $results = [Invoice::class, $this->searchInvoiceResource('custom2', $rule, $invoices)],
+ '$invoice.custom3' => $results = [Invoice::class, $this->searchInvoiceResource('custom3', $rule, $invoices)],
+ '$invoice.custom4' => $results = [Invoice::class, $this->searchInvoiceResource('custom4', $rule, $invoices)],
+ '$client.id_number' => $results = [Client::class, $this->searchClientResource('id_number', $rule, $invoices, $payments)],
+ '$client.email' => $results = [Client::class, $this->searchClientResource('email', $rule, $invoices, $payments)],
+ '$client.custom1' => $results = [Client::class, $this->searchClientResource('custom1', $rule, $invoices, $payments)],
+ '$client.custom2' => $results = [Client::class, $this->searchClientResource('custom2', $rule, $invoices, $payments)],
+ '$client.custom3' => $results = [Client::class, $this->searchClientResource('custom3', $rule, $invoices, $payments)],
+ '$client.custom4' => $results = [Client::class, $this->searchClientResource('custom4', $rule, $invoices, $payments)],
+ default => $results = [Client::class, [collect([]), Invoice::class]],
+ };
+
+ if($results[0] == 'App\Models\Client') {
+ $set = $results[1];
+ $result_set = $set[0];
+ $entity = $set[1];
+
+ if($result_set->count() > 0) {
+ $match_set[] = [$entity, $result_set->pluck('id')];
+ }
+
+ } elseif($results[1]->count() > 0) {
+ $match_set[] = $results;
+ }
+ }
+
+ if (($bank_transaction_rule['matches_on_all'] && (count($match_set) == $rule_count)) || (!$bank_transaction_rule['matches_on_all'] && count($match_set) > 0)) {
+
+ $this->bank_transaction->vendor_id = $bank_transaction_rule->vendor_id;
+ $this->bank_transaction->ninja_category_id = $bank_transaction_rule->category_id;
+ $this->bank_transaction->status_id = BankTransaction::STATUS_MATCHED;
+ $this->bank_transaction->bank_transaction_rule_id = $bank_transaction_rule->id;
+ $this->bank_transaction->save();
+
+
+ //auto-convert
+ }
+
+ }
+
+
}
- private function searchClientResource()
+ private function searchInvoiceResource(string $column, array $rule, $invoices)
{
+ return $invoices->when($rule['search_key'] == 'description', function ($q) use ($rule, $column) {
+ return $q->cursor()->filter(function ($record) use ($rule, $column) {
+ return $this->matchStringOperator($this->bank_transaction->description, $record->{$column}, $rule['operator']);
+ });
+ })
+ ->when($rule['search_key'] == 'amount', function ($q) use ($rule, $column) {
+ return $q->cursor()->filter(function ($record) use ($rule, $column) {
+ return $this->matchNumberOperator($this->bank_transaction->amount, $record->{$column}, $rule['operator']);
+ });
+ })->pluck("id");
+
+ }
+
+ private function searchPaymentResource(string $column, array $rule, $payments)
+ {
+
+ return $payments->when($rule['search_key'] == 'description', function ($q) use ($rule, $column) {
+ return $q->cursor()->filter(function ($record) use ($rule, $column) {
+ return $this->matchStringOperator($this->bank_transaction->description, $record->{$column}, $rule['operator']);
+ });
+ })
+ ->when($rule['search_key'] == 'amount', function ($q) use ($rule, $column) {
+ return $q->cursor()->filter(function ($record) use ($rule, $column) {
+ return $this->matchNumberOperator($this->bank_transaction->amount, $record->{$column}, $rule['operator']);
+ });
+ })->pluck("id");
+
+ }
+
+ private function searchClientResource(string $column, array $rule, $invoices, $payments)
+ {
+
+ $invoice_matches = Client::query()
+ ->whereIn('id', $invoices->pluck('client_id'))
+ ->when($column == 'email', function ($q) {
+ return $q->whereHas('contacts', function ($qc) {
+ $qc->where('email', $this->bank_transaction->description);
+ });
+ })
+ ->when($column != 'email', function ($q) use ($rule, $column) {
+
+ return $q->cursor()->filter(function ($record) use ($rule, $column) {
+ return $this->matchStringOperator($this->bank_transaction->description, $record->{$column}, $rule['operator']);
+ });
+ })->pluck('id');
+
+
+ $intersection = $invoices->whereIn('client_id', $invoice_matches);
+
+ if($intersection->count() > 0) {
+ return [$intersection, Invoice::class];
+ }
+
+ $payments_matches = Client::query()
+ ->whereIn('id', $payments->pluck('client_id'))
+ ->when($column == 'email', function ($q) {
+ return $q->whereHas('contacts', function ($qc) {
+ $qc->where('email', $this->bank_transaction->description);
+ });
+ })
+ ->when($column != 'email', function ($q) use ($rule, $column) {
+
+ return $q->cursor()->filter(function ($record) use ($rule, $column) {
+ return $this->matchStringOperator($this->bank_transaction->description, $record->{$column}, $rule['operator']);
+ });
+ })->pluck('id');
+
+ $intersection = $payments->whereIn('client_id', $payments_matches);
+
+ if($intersection->count() > 0) {
+ return [$intersection, Payment::class];
+ }
+
+ return [Client::class, collect([])];
+
}
// $payment.amount => "Payment Amount", float
// $payment.transaction_reference => "Payment Transaction Reference", string
@@ -254,7 +342,7 @@ class ProcessBankRules extends AbstractService
// ->where('amount', $rule['operator'], $this->bank_transaction->amount)
// ->get();
-
+
// if($paymentAmounts->count() > 0) {
// $matches++;
@@ -297,7 +385,7 @@ class ProcessBankRules extends AbstractService
// }
// if ($rule['search_key'] == '$client.id_number') {
-
+
// $ref_search = $this->bank_transaction->description;
// switch ($rule['operator']) {
@@ -324,7 +412,7 @@ class ProcessBankRules extends AbstractService
// }
-
+
// if ($rule['search_key'] == '$client.email') {
// $clientEmails = Client::query()
@@ -348,7 +436,7 @@ class ProcessBankRules extends AbstractService
// if($invoiceNumber){
// $invoice_ids = $invoiceNumber->hashed_id;
// }
-
+
// if($invoicePONumbers && strlen($invoice_ids ?? '') == 0){
// if($clientEmails){ // @phpstan-ignore-line
@@ -356,7 +444,7 @@ class ProcessBankRules extends AbstractService
// $invoice_ids = $this->matchInvoiceAndClient($invoicePONumbers, $clientEmails);
// }
-
+
// if($clientIdNumbers && strlen($invoice_ids ?? '') == 0)
// {
@@ -422,7 +510,7 @@ class ProcessBankRules extends AbstractService
// $this->bank_transaction->status_id = BankTransaction::STATUS_MATCHED;
// $this->bank_transaction->bank_transaction_rule_id = $bank_transaction_rule->id;
// $this->bank_transaction->save();
-
+
// }
// }
@@ -444,7 +532,7 @@ class ProcessBankRules extends AbstractService
// if($payment->client_id == $client->id) {
// return $payment->id;
-
+
// }
// }
// }
@@ -460,7 +548,7 @@ class ProcessBankRules extends AbstractService
// if($invoice->client_id == $client->id) {
// return $invoice->hashed_id;
-
+
// }
// }
// }
diff --git a/app/Services/Chart/ChartCalculations.php b/app/Services/Chart/ChartCalculations.php
index c3d9487fe3c5..88a817c5bc1c 100644
--- a/app/Services/Chart/ChartCalculations.php
+++ b/app/Services/Chart/ChartCalculations.php
@@ -23,7 +23,6 @@ use Illuminate\Contracts\Database\Eloquent\Builder;
*/
trait ChartCalculations
{
-
public function getActiveInvoices($data): int|float
{
$result = 0;
@@ -34,8 +33,9 @@ trait ChartCalculations
->where('is_deleted', 0)
->whereIn('status_id', [2,3,4]);
- if(in_array($data['period'],['current,previous']))
+ if(in_array($data['period'], ['current,previous'])) {
$q->whereBetween('date', [$data['start_date'], $data['end_date']]);
+ }
match ($data['calculation']) {
'sum' => $result = $q->sum('amount'),
@@ -58,8 +58,9 @@ trait ChartCalculations
->where('is_deleted', 0)
->whereIn('status_id', [2,3]);
- if(in_array($data['period'],['current,previous']))
+ if(in_array($data['period'], ['current,previous'])) {
$q->whereBetween('date', [$data['start_date'], $data['end_date']]);
+ }
match ($data['calculation']) {
'sum' => $result = $q->sum('balance'),
@@ -82,8 +83,9 @@ trait ChartCalculations
->where('is_deleted', 0)
->where('status_id', 4);
- if(in_array($data['period'],['current,previous']))
+ if(in_array($data['period'], ['current,previous'])) {
$q->whereBetween('date', [$data['start_date'], $data['end_date']]);
+ }
match ($data['calculation']) {
'sum' => $result = $q->sum('amount'),
@@ -106,8 +108,9 @@ trait ChartCalculations
->where('is_deleted', 0)
->whereIn('status_id', [5,6]);
- if(in_array($data['period'],['current,previous']))
+ if(in_array($data['period'], ['current,previous'])) {
$q->whereBetween('date', [$data['start_date'], $data['end_date']]);
+ }
match ($data['calculation']) {
'sum' => $result = $q->sum('refunded'),
@@ -129,12 +132,13 @@ trait ChartCalculations
->where('company_id', $this->company->id)
->where('is_deleted', 0)
->whereIn('status_id', [2,3])
- ->where(function ($qq){
+ ->where(function ($qq) {
$qq->where('due_date', '>=', now()->toDateString())->orWhereNull('due_date');
});
- if(in_array($data['period'],['current,previous']))
+ if(in_array($data['period'], ['current,previous'])) {
$q->whereBetween('date', [$data['start_date'], $data['end_date']]);
+ }
match ($data['calculation']) {
'sum' => $result = $q->sum('refunded'),
@@ -156,12 +160,13 @@ trait ChartCalculations
->where('company_id', $this->company->id)
->where('is_deleted', 0)
->whereIn('status_id', [2])
- ->where(function ($qq){
+ ->where(function ($qq) {
$qq->where('due_date', '>=', now()->toDateString())->orWhereNull('due_date');
});
- if(in_array($data['period'],['current,previous']))
+ if(in_array($data['period'], ['current,previous'])) {
$q->whereBetween('date', [$data['start_date'], $data['end_date']]);
+ }
match ($data['calculation']) {
'sum' => $result = $q->sum('refunded'),
@@ -186,7 +191,7 @@ trait ChartCalculations
public function getPaidTasks($data): int|float
{
$q = $this->taskQuery($data);
- $q->whereHas('invoice', function ($query){
+ $q->whereHas('invoice', function ($query) {
$query->where('status_id', 4)->where('is_deleted', 0);
});
@@ -203,7 +208,7 @@ trait ChartCalculations
return $this->taskCalculations($q, $data);
}
-
+
/**
* All Expenses
*/
@@ -214,7 +219,7 @@ trait ChartCalculations
return $this->expenseCalculations($q, $data);
}
-
+
/**
* Expenses that should be invoiced - but are not yet invoiced.
*/
@@ -264,7 +269,7 @@ trait ChartCalculations
$result = 0;
$calculated = $this->expenseCalculator($query, $data);
-
+
match ($data['calculation']) {
'sum' => $result = $calculated->sum(),
'avg' => $result = $calculated->avg(),
@@ -279,7 +284,7 @@ trait ChartCalculations
private function expenseCalculator(Builder $query, array $data)
{
-
+
return $query->get()
->when($data['currency_id'] == '999', function ($collection) {
$collection->map(function ($e) {
@@ -290,7 +295,7 @@ trait ChartCalculations
->when($data['currency_id'] != '999', function ($collection) {
$collection->map(function ($e) {
-
+
/** @var \App\Models\Expense $e */
return $e->amount;
});
@@ -305,11 +310,11 @@ trait ChartCalculations
->withTrashed()
->where('company_id', $this->company->id)
->where('is_deleted', 0);
-
+
if(in_array($data['period'], ['current,previous'])) {
$query->whereBetween('date', [$data['start_date'], $data['end_date']]);
}
-
+
return $query;
}
@@ -339,7 +344,7 @@ trait ChartCalculations
->withTrashed()
->where('company_id', $this->company->id)
->where('is_deleted', 0);
-
+
if(in_array($data['period'], ['current,previous'])) {
$q->whereBetween('calculated_start_date', [$data['start_date'], $data['end_date']]);
}
@@ -350,7 +355,7 @@ trait ChartCalculations
private function taskCalculations(Builder $q, array $data): int|float
{
-
+
$result = 0;
$calculated = collect();
@@ -384,4 +389,4 @@ trait ChartCalculations
}
-}
\ No newline at end of file
+}
diff --git a/app/Services/Chart/ChartQueries.php b/app/Services/Chart/ChartQueries.php
index e6acbc6af44e..f1c2dbf9f18a 100644
--- a/app/Services/Chart/ChartQueries.php
+++ b/app/Services/Chart/ChartQueries.php
@@ -240,7 +240,7 @@ trait ChartQueries
public function getAggregateOutstandingQuery($start_date, $end_date)
{
-
+
$user_filter = $this->is_admin ? '' : 'AND clients.user_id = '.$this->user->id;
return DB::select("
diff --git a/app/Services/Chart/ChartService.php b/app/Services/Chart/ChartService.php
index 792fd87baa08..a342addfbf29 100644
--- a/app/Services/Chart/ChartService.php
+++ b/app/Services/Chart/ChartService.php
@@ -62,7 +62,7 @@ class ChartService
/* Merge and filter by unique */
$currencies = $currencies->merge($expense_currencies)->unique();
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$cache_currencies = app('currencies');
@@ -76,7 +76,7 @@ class ChartService
return $final_currencies;
}
-
+
/* Chart Data */
public function chart_summary($start_date, $end_date): array
{
@@ -186,7 +186,7 @@ class ChartService
private function addCurrencyCodes($data_set): array
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
@@ -217,15 +217,15 @@ class ChartService
/**
* calculatedField
- *
- * @param array $data -
- *
+ *
+ * @param array $data -
+ *
* field - list of fields for calculation
* period - current/previous
* calculation - sum/count/avg
*
* May require currency_id
- *
+ *
* date_range - this_month
* or
* start_date - end_date
@@ -234,19 +234,19 @@ class ChartService
{
$results = 0;
- match($data['field']){
- 'active_invoices' => $results = $this->getActiveInvoices($data),
- 'outstanding_invoices' => $results = $this->getOutstandingInvoices($data),
- 'completed_payments' => $results = $this->getCompletedPayments($data),
- 'refunded_payments' => $results = $this->getRefundedPayments($data),
- 'active_quotes' => $results = $this->getActiveQuotes($data),
- 'unapproved_quotes' => $results = $this->getUnapprovedQuotes($data),
- 'logged_tasks' => $results = $this->getLoggedTasks($data),
- 'invoiced_tasks' => $results = $this->getInvoicedTasks($data),
- 'paid_tasks' => $results = $this->getPaidTasks($data),
- 'logged_expenses' => $results = $this->getLoggedExpenses($data),
- 'pending_expenses' => $results = $this->getPendingExpenses($data),
- 'invoiced_expenses' => $results = $this->getInvoicedExpenses($data),
+ match($data['field']) {
+ 'active_invoices' => $results = $this->getActiveInvoices($data),
+ 'outstanding_invoices' => $results = $this->getOutstandingInvoices($data),
+ 'completed_payments' => $results = $this->getCompletedPayments($data),
+ 'refunded_payments' => $results = $this->getRefundedPayments($data),
+ 'active_quotes' => $results = $this->getActiveQuotes($data),
+ 'unapproved_quotes' => $results = $this->getUnapprovedQuotes($data),
+ 'logged_tasks' => $results = $this->getLoggedTasks($data),
+ 'invoiced_tasks' => $results = $this->getInvoicedTasks($data),
+ 'paid_tasks' => $results = $this->getPaidTasks($data),
+ 'logged_expenses' => $results = $this->getLoggedExpenses($data),
+ 'pending_expenses' => $results = $this->getPendingExpenses($data),
+ 'invoiced_expenses' => $results = $this->getInvoicedExpenses($data),
'invoice_paid_expenses' => $results = $this->getInvoicedPaidExpenses($data),
default => $results = 0,
};
diff --git a/app/Services/Chart/ChartServiceLegacy.php b/app/Services/Chart/ChartServiceLegacy.php
index 84b839ac11da..a04e99b12a47 100644
--- a/app/Services/Chart/ChartServiceLegacy.php
+++ b/app/Services/Chart/ChartServiceLegacy.php
@@ -53,7 +53,7 @@ class ChartServiceLegacy
/* Merge and filter by unique */
$currencies = $currencies->merge($expense_currencies)->unique();
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$cache_currencies = app('currencies');
@@ -137,7 +137,7 @@ class ChartServiceLegacy
private function addCurrencyCodes($data_set): array
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
diff --git a/app/Services/Client/Merge.php b/app/Services/Client/Merge.php
index 46e01704b16a..bef1bb521c3b 100644
--- a/app/Services/Client/Merge.php
+++ b/app/Services/Client/Merge.php
@@ -38,7 +38,7 @@ class Merge extends AbstractService
$this->client->balance += $this->mergable_client->balance;
$this->client->paid_to_date += $this->mergable_client->paid_to_date;
$this->client->save();
-
+
nlog("balance post {$this->client->balance}");
nlog("paid_to_date post {$this->client->paid_to_date}");
diff --git a/app/Services/Client/PaymentMethod.php b/app/Services/Client/PaymentMethod.php
index 680b57e775d1..3c19d6e46caf 100644
--- a/app/Services/Client/PaymentMethod.php
+++ b/app/Services/Client/PaymentMethod.php
@@ -46,8 +46,8 @@ class PaymentMethod
$keys = $pu->pluck('gateway_type_id');
$contains_both = $keys->contains('1') && $keys->contains('29'); //handle the case where PayPal Advanced cards + regular CC is present
- $this->payment_urls = $pu->when($contains_both, function ($methods){
- return $methods->reject(function ($item){
+ $this->payment_urls = $pu->when($contains_both, function ($methods) {
+ return $methods->reject(function ($item) {
return $item['gateway_type_id'] == '29';
});
})->toArray();
@@ -158,17 +158,15 @@ class PaymentMethod
$this->payment_methods = $payment_methods_collections->intersectByKeys($payment_methods_collections->flatten(1)->unique());
//@15-06-2024
- foreach($this->payment_methods as $key => $type)
- {
- foreach ($type as $gateway_id => $gateway_type_id)
- {
+ foreach($this->payment_methods as $key => $type) {
+ foreach ($type as $gateway_id => $gateway_type_id) {
$gate = $this->gateways->where('id', $gateway_id)->first();
$this->buildUrl($gate, $gateway_type_id);
}
}
-
+
//@15-06-2024
- $this->payment_methods =[];
+ $this->payment_methods = [];
/* Loop through custom gateways if any exist and append them to the methods collection*/
$this->getCustomGateways();
@@ -178,11 +176,6 @@ class PaymentMethod
foreach ($gateway->driver($this->client)->gatewayTypes() as $type) {
if (isset($gateway->fees_and_limits) && is_object($gateway->fees_and_limits) && property_exists($gateway->fees_and_limits, GatewayType::CREDIT_CARD)) { //@phpstan-ignore-line
if ($this->validGatewayForAmount($gateway->fees_and_limits->{GatewayType::CREDIT_CARD}, $this->amount)) {
-<<<<<<< HEAD
- // $this->payment_methods[] = [$gateway->id => $type];
- // @15-06-2024
-=======
->>>>>>> new_payment_flow
$this->buildUrl($gateway, $type);
}
} else {
@@ -190,14 +183,6 @@ class PaymentMethod
}
}
}
-
- if (($this->client->getSetting('use_credits_payment') == 'option' || $this->client->getSetting('use_credits_payment') == 'always') && $this->client->service()->getCreditBalance() > 0) {
- $this->payment_urls[] = [
- 'label' => ctrans('texts.apply_credit'),
- 'company_gateway_id' => CompanyGateway::GATEWAY_CREDIT,
- 'gateway_type_id' => GatewayType::CREDIT,
- ];
- }
if (($this->client->getSetting('use_credits_payment') == 'option' || $this->client->getSetting('use_credits_payment') == 'always') && $this->client->service()->getCreditBalance() > 0) {
// Show credits as only payment option if both statements are true.
@@ -218,11 +203,11 @@ class PaymentMethod
return $this;
}
-
+
//@15-06-2024
private function buildUrl(CompanyGateway $gateway, ?int $type = null)
{
-
+
$fee_label = $gateway->calcGatewayFeeLabel($this->amount, $this->client, $type);
if (! $type || (GatewayType::CUSTOM == $type)) {
@@ -244,55 +229,6 @@ class PaymentMethod
return $this;
}
-<<<<<<< HEAD
- //@deprecated as buildUrl() supercedes
- private function buildUrls()
- {
- foreach ($this->payment_methods as $key => $child_array) {
- foreach ($child_array as $gateway_id => $gateway_type_id) {
- $gateway = CompanyGateway::query()->find($gateway_id);
-
- $fee_label = $gateway->calcGatewayFeeLabel($this->amount, $this->client, $gateway_type_id);
-
- if (! $gateway_type_id || (GatewayType::CUSTOM == $gateway_type_id)) {
- $this->payment_urls[] = [
- 'label' => $gateway->getConfigField('name').$fee_label,
- 'company_gateway_id' => $gateway_id,
- 'gateway_type_id' => GatewayType::CREDIT_CARD,
- 'is_paypal' => $gateway->isPayPal(),
- ];
- } else {
- $this->payment_urls[] = [
- 'label' => $gateway->getTypeAlias($gateway_type_id).$fee_label,
- 'company_gateway_id' => $gateway_id,
- 'gateway_type_id' => $gateway_type_id,
- 'is_paypal' => $gateway->isPayPal(),
- ];
- }
- }
- }
-
- if (($this->client->getSetting('use_credits_payment') == 'option' || $this->client->getSetting('use_credits_payment') == 'always') && $this->client->service()->getCreditBalance() > 0) {
- // Show credits as only payment option if both statements are true.
- if (
- $this->client->service()->getCreditBalance() > $this->amount
- && $this->client->getSetting('use_credits_payment') == 'always') {
- $payment_urls = [];
- }
-
- $this->payment_urls[] = [
- 'label' => ctrans('texts.apply_credit'),
- 'company_gateway_id' => CompanyGateway::GATEWAY_CREDIT,
- 'gateway_type_id' => GatewayType::CREDIT,
- 'is_paypal' => false,
- ];
- }
-
- return $this;
- }
-
-=======
->>>>>>> new_payment_flow
private function validGatewayForAmount($fees_and_limits_for_payment_type): bool
{
if (isset($fees_and_limits_for_payment_type)) {
@@ -300,7 +236,7 @@ class PaymentMethod
} else {
return true;
}
-
+
if ((property_exists($fees_and_limits, 'min_limit')) && $fees_and_limits->min_limit !== null && $fees_and_limits->min_limit != -1 && ($this->amount < $fees_and_limits->min_limit && $this->amount != -1)) {
return false;
}
diff --git a/app/Services/Client/RFFService.php b/app/Services/Client/RFFService.php
index d2e323117514..a3983d7c9593 100644
--- a/app/Services/Client/RFFService.php
+++ b/app/Services/Client/RFFService.php
@@ -108,7 +108,7 @@ class RFFService
if ($return_errors) {
return $validator->getMessageBag()->getMessages();
}
-
+
session()->flash('validation_errors', $validator->getMessageBag()->getMessages());
return false;
@@ -129,7 +129,7 @@ class RFFService
$contact = [];
MultiDB::setDb($this->database);
-
+
foreach ($data as $field => $value) {
if (Str::startsWith($field, 'client_')) {
$client[$this->mappings[$field]] = $value;
@@ -186,4 +186,4 @@ class RFFService
return true;
}
-}
\ No newline at end of file
+}
diff --git a/app/Services/ClientPortal/InstantPayment.php b/app/Services/ClientPortal/InstantPayment.php
index f41e4ff1b45d..032c9a383a6f 100644
--- a/app/Services/ClientPortal/InstantPayment.php
+++ b/app/Services/ClientPortal/InstantPayment.php
@@ -51,7 +51,7 @@ class InstantPayment
$cc->email = $this->request->contact_email;
$cc->client->postal_code = strlen($cc->client->postal_code ?? '') > 1 ? $cc->client->postal_code : $this->request->client_postal_code;
$cc->client->city = strlen($cc->client->city ?? '') > 1 ? $cc->client->city : $this->request->client_city;
- $cc->client->shipping_postal_code = strlen($cc->client->shipping_postal_code ?? '') > 1 ? $cc->client->shipping_postal_code : $cc->client->postal_code;
+ $cc->client->shipping_postal_code = strlen($cc->client->shipping_postal_code ?? '') > 1 ? $cc->client->shipping_postal_code : $cc->client->postal_code;
$cc->client->shipping_city = strlen($cc->client->shipping_city ?? '') > 1 ? $cc->client->shipping_city : $cc->client->city;
$cc->pushQuietly();
@@ -242,7 +242,7 @@ class InstantPayment
$hash_data['billing_context'] = Cache::get($this->request->query('hash'));
} elseif ($this->request->hash) {
$hash_data['billing_context'] = Cache::get($this->request->hash);
- } elseif ($old_hash = PaymentHash::query()->where('fee_invoice_id', $first_invoice->id)->whereNull('payment_id')->orderBy('id','desc')->first()) {
+ } elseif ($old_hash = PaymentHash::query()->where('fee_invoice_id', $first_invoice->id)->whereNull('payment_id')->orderBy('id', 'desc')->first()) {
if (isset($old_hash->data->billing_context)) {
$hash_data['billing_context'] = $old_hash->data->billing_context;
}
diff --git a/app/Services/ClientPortal/LivewireInstantPayment.php b/app/Services/ClientPortal/LivewireInstantPayment.php
index 91cf490d2635..83b0a5e540b0 100644
--- a/app/Services/ClientPortal/LivewireInstantPayment.php
+++ b/app/Services/ClientPortal/LivewireInstantPayment.php
@@ -31,23 +31,23 @@ use Illuminate\Support\Str;
/**
* LivewireInstantPayment
- *
- * New entry point for livewire component
+ *
+ * New entry point for livewire component
* payments.
*/
class LivewireInstantPayment
{
use MakesHash;
use MakesDates;
-
- /**
- * (bool) success
+
+ /**
+ * (bool) success
* (string) error - "displayed back to the user, either in error div, or in with() on redirect"
* (string) redirect - ie client.invoices.index
* (array) payload - the data needed to complete the payment
* (string) component - the payment component to be displayed
- *
- * @var array $responder
+ *
+ * @var array $responder
*/
private array $responder = [
'success' => true,
@@ -56,7 +56,7 @@ class LivewireInstantPayment
'payload' => [],
'component' => '',
];
-
+
/**
* is_credit_payment
*
@@ -64,7 +64,7 @@ class LivewireInstantPayment
* @var bool
*/
private $is_credit_payment = false;
-
+
/**
* __construct
*
@@ -79,7 +79,7 @@ class LivewireInstantPayment
* ?remaining_cycles
* ?is_recurring
* ?hash
- *
+ *
* @param array $data
* @return void
*/
@@ -98,7 +98,7 @@ class LivewireInstantPayment
}
$payable_invoices = collect($this->data['payable_invoices']);
-
+
$tokens = [];
$invoices = Invoice::query()
@@ -240,7 +240,7 @@ class LivewireInstantPayment
$this->mergeResponder(['success' => true, 'component' => 'CreditPaymentComponent', 'payload' => $data]);
return $this->getResponder();
-
+
}
$this->mergeResponder(['success' => true, 'payload' => $data]);
@@ -260,4 +260,4 @@ class LivewireInstantPayment
return $this;
}
-}
\ No newline at end of file
+}
diff --git a/app/Services/Credit/CreditService.php b/app/Services/Credit/CreditService.php
index 927bc3c16a75..8f16c58e5aaa 100644
--- a/app/Services/Credit/CreditService.php
+++ b/app/Services/Credit/CreditService.php
@@ -267,7 +267,7 @@ class CreditService
public function restoreCredit()
{
-
+
$paid_to_date = $this->credit->invoice_id ? $this->credit->balance : 0;
$this->credit
diff --git a/app/Services/EDocument/Gateway/Storecove/Storecove.php b/app/Services/EDocument/Gateway/Storecove/Storecove.php
index be840d084625..cff98750761f 100644
--- a/app/Services/EDocument/Gateway/Storecove/Storecove.php
+++ b/app/Services/EDocument/Gateway/Storecove/Storecove.php
@@ -23,8 +23,8 @@ enum HttpVerb: string
case DELETE = 'delete';
}
-class Storecove {
-
+class Storecove
+{
private string $base_url = 'https://api.storecove.com/api/v2/';
private array $peppol_discovery = [
@@ -42,9 +42,11 @@ class Storecove {
"scheme" => "gln",
"identifier" => "1200109963131"
];
-
- public function __construct(){}
+
+ public function __construct()
+ {
+ }
//config('ninja.storecove_api_key');
@@ -67,16 +69,16 @@ class Storecove {
$r = $this->httpClient($uri, (HttpVerb::POST)->value, $network_data, $this->getHeaders());
return ($r->successful() && $r->json()['code'] == 'OK') ? true : false;
-
+
}
//response = "guid" : "xx",
/**
* If the receiver cannot be found, then an
- * email is sent to that user if a appropriate
+ * email is sent to that user if a appropriate
* email is included in the document payload
- *
+ *
* {
"routing": {
"emails": [
@@ -86,8 +88,8 @@ class Storecove {
}
}
*
- *
- *
+ *
+ *
// documentType : invoice/invoice_response/order
// rawDocumentData : {
// document: base64_encode($ubl)
@@ -113,12 +115,12 @@ class Storecove {
// "parseStrategy" => "ubl",
// ],
// ],
- "document"=> [
+ "document" => [
"documentType" => "invoice",
"invoice" => $document,
],
];
-
+
$uri = "document_submissions";
nlog($payload);
@@ -141,13 +143,13 @@ class Storecove {
$payload = [
"legalEntityId" => $routing_id,
- "idempotencyGuid"=> \Illuminate\Support\Str::uuid(),
+ "idempotencyGuid" => \Illuminate\Support\Str::uuid(),
"routing" => [
"eIdentifiers" => [],
"emails" => ["david@invoiceninja.com"]
],
- "document"=> [
-
+ "document" => [
+
],
];
@@ -156,22 +158,23 @@ class Storecove {
$payload['document']['documentType'] = 'invoice';
$payload['document']["rawDocumentData"] = [
- "document" => base64_encode($document),
+ "document" => base64_encode($document),
"parse" => true,
- "parseStrategy"=> "ubl",
+ "parseStrategy" => "ubl",
];
$uri = "document_submissions";
-
+
nlog($payload);
-
+
$r = $this->httpClient($uri, (HttpVerb::POST)->value, $payload, $this->getHeaders());
nlog($r->body());
nlog($r->json());
- if($r->successful())
+ if($r->successful()) {
return $r->json()['guid'];
+ }
return false;
@@ -210,13 +213,13 @@ class Storecove {
// "acts_as_sender": true,
// "acts_as_receiver": true,
// "tax_registered": true
- // }
+ // }
// acts_as_receiver - optional - Default : true
// acts_as_sender - optional - Default : true
// advertisements - optional < enum (invoice, invoice_response, order, ordering, order_response, selfbilling) > array
// city - required - Length : 2 - 64
- // country - required - ISO 3166-1 alpha-2
+ // country - required - ISO 3166-1 alpha-2
// county - optional - Maximal length : 64
// line1 - required - The first address line - Length : 2 - 192
// line2 - optional - The second address line, if applicable Maximal length : 192
@@ -224,11 +227,11 @@ class Storecove {
// public - optional - Whether or not this LegalEntity is public. Public means it will be entered into the PEPPOL directory at https://directory.peppol.eu/ Default : true
// rea - optional - The REA details for the LegalEntity. Only applies to IT (Italian) LegalEntities. - https://www.storecove.com/docs/#_openapi_rea (schema)
- // capital - optional - The captial for the company. - number
- // identifier - optional - The identifier. Length : 2 - 20
- // liquidation_status - optional - The liquidation status of the company. enum (LN, LS)
- // partners - optional - The number of partners. enum (SU, SM)
- // province - optional - The provincia of the ufficio that issued the identifier.enum (AG, AL, AN, AO, AQ, AR, AP, AT, AV, BA, BT, BL, BN, BG, BI, BO, BZ, BS, BR, CA, CL, CB, CI, CE, CT, CZ, CH, CO, CS, CR, KR, CN, EN, FM, FE, FI, FG, FC, FR, GE, GO, GR, IM, IS, SP, LT, LE, LC, LI, LO, LU, MC, MN, MS, MT, VS, ME, MI, MO, MB, NA, NO, NU, OG, OT, OR, PD, PA, PR, PV, PG, PU, PE, PC, PI, PT, PN, PZ, PO, RG, RA, RC, RE, RI, RN, RO, SA, SS, SV, SI, SR, SO, TA, TE, TR, TO, TP, TN, TV, TS, UD, VA, VE, VB, VC, VR, VV, VI, VT)
+ // capital - optional - The captial for the company. - number
+ // identifier - optional - The identifier. Length : 2 - 20
+ // liquidation_status - optional - The liquidation status of the company. enum (LN, LS)
+ // partners - optional - The number of partners. enum (SU, SM)
+ // province - optional - The provincia of the ufficio that issued the identifier.enum (AG, AL, AN, AO, AQ, AR, AP, AT, AV, BA, BT, BL, BN, BG, BI, BO, BZ, BS, BR, CA, CL, CB, CI, CE, CT, CZ, CH, CO, CS, CR, KR, CN, EN, FM, FE, FI, FG, FC, FR, GE, GO, GR, IM, IS, SP, LT, LE, LC, LI, LO, LU, MC, MN, MS, MT, VS, ME, MI, MO, MB, NA, NO, NU, OG, OT, OR, PD, PA, PR, PV, PG, PU, PE, PC, PI, PT, PN, PZ, PO, RG, RA, RC, RE, RI, RN, RO, SA, SS, SV, SI, SR, SO, TA, TE, TR, TO, TP, TN, TV, TS, UD, VA, VE, VB, VC, VR, VV, VI, VT)
// tax_registered - optional - Whether or not this LegalEntity is tax registered. This influences the validation of the data presented when sending documents. Default : true
// tenant_id - optional - The id of the tenant, to be used in case of single-tenant solutions that share webhook URLs. This property will included in webhook events. Maximal length : 64
@@ -238,7 +241,7 @@ class Storecove {
/**
* CreateLegalEntity
- *
+ *
* @url https://www.storecove.com/docs/#_openapi_legalentitycreate
* @return mixed
*/
@@ -265,8 +268,9 @@ class Storecove {
$r = $this->httpClient($uri, (HttpVerb::POST)->value, $payload);
- if($r->successful())
+ if($r->successful()) {
return $r->json();
+ }
return $r;
@@ -309,7 +313,7 @@ class Storecove {
$data = [
"identifier" => $identifier,
"scheme" => $scheme,
- "superscheme" => "iso6523-actorid-upis",
+ "superscheme" => "iso6523-actorid-upis",
];
$r = $this->httpClient($uri, (HttpVerb::POST)->value, $data);
@@ -335,12 +339,12 @@ class Storecove {
private function httpClient(string $uri, string $verb, array $data, ?array $headers = [])
{
-
+
$r = Http::withToken(config('ninja.storecove_api_key'))
->withHeaders($this->getHeaders($headers))
->{$verb}("{$this->base_url}{$uri}", $data);
return $r;
}
-
-}
\ No newline at end of file
+
+}
diff --git a/app/Services/EDocument/Imports/ZugferdEDocument.php b/app/Services/EDocument/Imports/ZugferdEDocument.php
index f03d298a66a5..354b7c5b717c 100644
--- a/app/Services/EDocument/Imports/ZugferdEDocument.php
+++ b/app/Services/EDocument/Imports/ZugferdEDocument.php
@@ -26,7 +26,8 @@ use horstoeko\zugferd\ZugferdDocumentReader;
use horstoeko\zugferdvisualizer\ZugferdVisualizer;
use horstoeko\zugferdvisualizer\renderer\ZugferdVisualizerLaravelRenderer;
-class ZugferdEDocument extends AbstractService {
+class ZugferdEDocument extends AbstractService
+{
public ZugferdDocumentReader|string $document;
/**
@@ -67,7 +68,7 @@ class ZugferdEDocument extends AbstractService {
$expense->currency_id = Currency::whereCode($invoiceCurrency)->first()->id ?? $this->company->settings->currency_id;
$expense->save();
- $origin_file = TempFile::UploadedFileFromRaw($this->tempdocument, $this->documentname, "application/xml");
+ $origin_file = TempFile::UploadedFileFromRaw($this->tempdocument, $this->documentname, "application/xml");
(new UploadFile($origin_file, UploadFile::DOCUMENT, $user, $expense->company, $expense, null, false))->handle();
$uploaded_file = TempFile::UploadedFileFromRaw($visualizer->renderPdf(), $documentno."_visualiser.pdf", "application/pdf");
(new UploadFile($uploaded_file, UploadFile::DOCUMENT, $user, $expense->company, $expense, null, false))->handle();
@@ -75,7 +76,7 @@ class ZugferdEDocument extends AbstractService {
if ($taxCurrency && $taxCurrency != $invoiceCurrency) {
$expense->private_notes = ctrans("texts.tax_currency_mismatch");
}
- $expense->uses_inclusive_taxes = True;
+ $expense->uses_inclusive_taxes = true;
$expense->amount = $grandTotalAmount;
$counter = 1;
if ($this->document->firstDocumentTax()) {
@@ -117,8 +118,7 @@ class ZugferdEDocument extends AbstractService {
$expense->vendor_id = $vendor->id;
}
$expense->transaction_reference = $documentno;
- }
- else {
+ } else {
// The document exists as an expense
// Handle accordingly
nlog("Document already exists");
@@ -128,4 +128,3 @@ class ZugferdEDocument extends AbstractService {
return $expense;
}
}
-
diff --git a/app/Services/EDocument/Standards/Peppol.php b/app/Services/EDocument/Standards/Peppol.php
index b797e58eaef0..f2d3722b1660 100644
--- a/app/Services/EDocument/Standards/Peppol.php
+++ b/app/Services/EDocument/Standards/Peppol.php
@@ -59,31 +59,31 @@ class Peppol extends AbstractService
{
use Taxer;
use NumberFormatter;
-
+
/**
- * Assumptions:
- *
+ * Assumptions:
+ *
* Line Item Taxes Only
* Exclusive Taxes
- *
- *
- * used as a proxy for
+ *
+ *
+ * used as a proxy for
* the schemeID of partyidentification
* property - for Storecove only:
- *
+ *
* Used in the format key:value
- *
+ *
* ie. IT:IVA / DE:VAT
- *
+ *
* Note there are multiple options for the following countries:
- *
+ *
* US (EIN/SSN) employer identification number / social security number
* IT (CF/IVA) Codice Fiscale (person/company identifier) / company vat number
*
* @var array
*/
private array $schemeIdIdentifiers = [
- 'US' => 'EIN',
+ 'US' => 'EIN',
'US' => 'SSN',
'NZ' => 'GST',
'CH' => 'VAT', // VAT number = CHE - 999999999 - MWST|IVA|VAT
@@ -96,7 +96,7 @@ class Peppol extends AbstractService
'BA' => 'VAT',
'BE' => 'VAT',
'BG' => 'VAT',
- 'AU' => 'ABN', //Australia
+ 'AU' => 'ABN', //Australia
'CA' => 'CBN', //Canada
'MX' => 'RFC', //Mexico
'NZ' => 'GST', //Nuuu zulund
@@ -157,7 +157,7 @@ class Peppol extends AbstractService
"896" => "Debit note related to self-billed invoice"
];
- // 0 1 2 3
+ // 0 1 2 3
// ["Country" => ["B2X","Legal","Tax","Routing"],
private array $routing_rules = [
"US" => [
@@ -261,7 +261,7 @@ class Peppol extends AbstractService
$this->e = new EInvoice();
$this->setSettings()->setInvoice();
}
-
+
/**
* Rehydrates an existing e invoice - or - scaffolds a new one
*
@@ -270,7 +270,7 @@ class Peppol extends AbstractService
private function setInvoice(): self
{
- if($this->invoice->e_invoice){
+ if($this->invoice->e_invoice) {
$this->p_invoice = $this->e->decode('Peppol', json_encode($this->invoice->e_invoice->Invoice), 'json');
@@ -284,7 +284,7 @@ class Peppol extends AbstractService
return $this;
}
-
+
/**
* Transforms the settings props into usable models we can merge.
*
@@ -293,7 +293,7 @@ class Peppol extends AbstractService
private function setSettings(): self
{
$this->_client_settings = isset($this->invoice->client->e_invoice->Invoice) ? $this->e->decode('Peppol', json_encode($this->invoice->client->e_invoice->Invoice), 'json') : null;
-
+
$this->_company_settings = isset($this->invoice->company->e_invoice->Invoice) ? $this->e->decode('Peppol', json_encode($this->invoice->company->e_invoice->Invoice), 'json') : null;
return $this;
@@ -328,7 +328,7 @@ class Peppol extends AbstractService
$json = $e->encode($this->p_invoice, 'json');
return $json;
-
+
}
public function toArray(): array
@@ -341,20 +341,21 @@ class Peppol extends AbstractService
$this->p_invoice->ID = $this->invoice->number;
$this->p_invoice->IssueDate = new \DateTime($this->invoice->date);
- if($this->invoice->due_date)
+ if($this->invoice->due_date) {
$this->p_invoice->DueDate = new \DateTime($this->invoice->due_date);
+ }
$this->p_invoice->InvoiceTypeCode = 380; //
$this->p_invoice->AccountingSupplierParty = $this->getAccountingSupplierParty();
$this->p_invoice->AccountingCustomerParty = $this->getAccountingCustomerParty();
$this->p_invoice->InvoiceLine = $this->getInvoiceLines();
-
+
// $this->p_invoice->TaxTotal = $this->getTotalTaxes(); it only wants the aggregate here!!
$this->p_invoice->LegalMonetaryTotal = $this->getLegalMonetaryTotal();
$this->senderSpecificLevelMutators()
->receiverSpecificLevelMutators();
-
+
return $this;
}
@@ -372,7 +373,7 @@ class Peppol extends AbstractService
$tea = new TaxExclusiveAmount();
$tea->currencyID = $this->invoice->client->currency()->code;
- $tea->amount = $this->invoice->uses_inclusive_taxes ? round($this->invoice->amount - $this->invoice->total_taxes,2) : $taxable;
+ $tea->amount = $this->invoice->uses_inclusive_taxes ? round($this->invoice->amount - $this->invoice->total_taxes, 2) : $taxable;
$lmt->TaxExclusiveAmount = $tea;
$tia = new TaxInclusiveAmount();
@@ -390,11 +391,12 @@ class Peppol extends AbstractService
private function getTotalTaxAmount(): float
{
- if(!$this->invoice->total_taxes)
+ if(!$this->invoice->total_taxes) {
return 0;
- elseif($this->invoice->uses_inclusive_taxes)
+ } elseif($this->invoice->uses_inclusive_taxes) {
return $this->invoice->total_taxes;
-
+ }
+
return $this->calcAmountLineTax($this->invoice->tax_rate1, $this->invoice->amount) ?? 0;
}
@@ -406,31 +408,31 @@ class Peppol extends AbstractService
// if(strlen($this->invoice->tax_name1 ?? '') > 1) {
- $tax_amount = new TaxAmount();
- $tax_amount->currencyID = $this->invoice->client->currency()->code;
- $tax_amount->amount = $this->getTotalTaxAmount();
+ $tax_amount = new TaxAmount();
+ $tax_amount->currencyID = $this->invoice->client->currency()->code;
+ $tax_amount->amount = $this->getTotalTaxAmount();
- $tax_subtotal = new TaxSubtotal();
- $tax_subtotal->TaxAmount = $tax_amount;
+ $tax_subtotal = new TaxSubtotal();
+ $tax_subtotal->TaxAmount = $tax_amount;
- $taxable_amount = new TaxableAmount();
- $taxable_amount->currencyID = $this->invoice->client->currency()->code;
- $taxable_amount->amount = $this->invoice->uses_inclusive_taxes ? $this->invoice->amount - $this->invoice->total_taxes : $this->invoice->amount;
- $tax_subtotal->TaxableAmount = $taxable_amount;
+ $taxable_amount = new TaxableAmount();
+ $taxable_amount->currencyID = $this->invoice->client->currency()->code;
+ $taxable_amount->amount = $this->invoice->uses_inclusive_taxes ? $this->invoice->amount - $this->invoice->total_taxes : $this->invoice->amount;
+ $tax_subtotal->TaxableAmount = $taxable_amount;
- $tc = new TaxCategory();
- $tc->ID = $type_id == '2' ? 'HUR' : 'C62';
- $tc->Percent = $this->invoice->tax_rate1;
- $ts = new PeppolTaxScheme();
- $ts->ID = strlen($this->invoice->tax_name1 ?? '') > 1 ? $this->invoice->tax_name1 : '0';
- $tc->TaxScheme = $ts;
- $tax_subtotal->TaxCategory = $tc;
+ $tc = new TaxCategory();
+ $tc->ID = $type_id == '2' ? 'HUR' : 'C62';
+ $tc->Percent = $this->invoice->tax_rate1;
+ $ts = new PeppolTaxScheme();
+ $ts->ID = strlen($this->invoice->tax_name1 ?? '') > 1 ? $this->invoice->tax_name1 : '0';
+ $tc->TaxScheme = $ts;
+ $tax_subtotal->TaxCategory = $tc;
- $tax_total = new TaxTotal();
- $tax_total->TaxAmount = $tax_amount;
- $tax_total->TaxSubtotal[] = $tax_subtotal;
+ $tax_total = new TaxTotal();
+ $tax_total->TaxAmount = $tax_amount;
+ $tax_total->TaxSubtotal[] = $tax_subtotal;
- $taxes[] = $tax_total;
+ $taxes[] = $tax_total;
// }
@@ -446,7 +448,7 @@ class Peppol extends AbstractService
$taxable_amount = new TaxableAmount();
$taxable_amount->currencyID = $this->invoice->client->currency()->code;
- $taxable_amount->amount = $this->invoice->uses_inclusive_taxes ? $this->invoice->amount- $this->invoice->total_taxes : $this->invoice->amount;
+ $taxable_amount->amount = $this->invoice->uses_inclusive_taxes ? $this->invoice->amount - $this->invoice->total_taxes : $this->invoice->amount;
$tax_subtotal->TaxableAmount = $taxable_amount;
@@ -536,7 +538,7 @@ class Peppol extends AbstractService
$price = new Price();
$pa = new PriceAmount();
$pa->currencyID = $this->invoice->client->currency()->code;
- $pa->amount = $this->costWithDiscount($item) - ( $this->invoice->uses_inclusive_taxes ? ($this->calcInclusiveLineTax($item->tax_rate1, $item->line_total)/$item->quantity) : 0);
+ $pa->amount = $this->costWithDiscount($item) - ($this->invoice->uses_inclusive_taxes ? ($this->calcInclusiveLineTax($item->tax_rate1, $item->line_total) / $item->quantity) : 0);
$price->PriceAmount = $pa;
$line->Price = $price;
@@ -630,7 +632,7 @@ class Peppol extends AbstractService
$tax_amount = new TaxAmount();
$tax_amount->currencyID = $this->invoice->client->currency()->code;
-
+
$tax_amount->amount = $this->invoice->uses_inclusive_taxes ? $this->calcInclusiveLineTax($item->tax_rate2, $item->line_total) : $this->calcAmountLineTax($item->tax_rate2, $item->line_total);
$tax_subtotal = new TaxSubtotal();
@@ -738,7 +740,7 @@ class Peppol extends AbstractService
$code = false;
- match($this->invoice->client->classification){
+ match($this->invoice->client->classification) {
"business" => $code = "B",
"government" => $code = "G",
"individual" => $code = "C",
@@ -746,11 +748,11 @@ class Peppol extends AbstractService
};
//single array
- if(is_array($rules) && !is_array($rules[0]))
+ if(is_array($rules) && !is_array($rules[0])) {
return $rules[2];
+ }
- foreach($rules as $rule)
- {
+ foreach($rules as $rule) {
if(stripos($rule[0], $code) !== false) {
return $rule[2];
}
@@ -763,18 +765,19 @@ class Peppol extends AbstractService
{
$acp = new AccountingCustomerParty();
-
+
$party = new Party();
if(strlen($this->invoice->client->vat_number ?? '') > 1) {
-
- $pi = new PartyIdentification;
- $vatID = new ID;
-
- if($scheme = $this->resolveTaxScheme())
+ $pi = new PartyIdentification();
+
+ $vatID = new ID();
+
+ if($scheme = $this->resolveTaxScheme()) {
$vatID->schemeID = $scheme;
-
+ }
+
$vatID->value = $this->invoice->client->vat_number;
$pi->ID = $vatID;
@@ -804,7 +807,8 @@ class Peppol extends AbstractService
$physical_location = new PhysicalLocation();
$physical_location->Address = $address;
- $party->PhysicalLocation = $physical_location;;
+ $party->PhysicalLocation = $physical_location;
+ ;
$contact = new Contact();
$contact->ElectronicMail = $this->invoice->client->present()->email();
@@ -861,7 +865,7 @@ class Peppol extends AbstractService
return $total;
}
-
+
///////////////// Helper Methods /////////////////////////
private function getClientRoutingCode(): string
@@ -871,18 +875,16 @@ class Peppol extends AbstractService
if(count($receiver_identifiers) > 1) {
- foreach($receiver_identifiers as $ident)
- {
- if(str_contains($ident[0], $client_classification))
- {
+ foreach($receiver_identifiers as $ident) {
+ if(str_contains($ident[0], $client_classification)) {
return $ident[3];
}
}
- }
- elseif(count($receiver_identifiers) == 1)
+ } elseif(count($receiver_identifiers) == 1) {
return $receiver_identifiers[3];
-
+ }
+
throw new \Exception("e-invoice generation halted:: Could not resolve the Tax Code for this client? {$this->invoice->client->hashed_id}");
}
@@ -912,32 +914,33 @@ class Peppol extends AbstractService
];
//only scans for top level props
- foreach($settings as $prop => $visibility){
+ foreach($settings as $prop => $visibility) {
- if($prop_value = $this->getSetting($prop))
+ if($prop_value = $this->getSetting($prop)) {
$this->p_invoice->{$prop} = $prop_value;
+ }
}
return $this;
}
-
+
/**
* getSetting
*
* Attempts to harvest and return a preconfigured prop from company / client / invoice settings
- *
+ *
* @param string $property_path
* @return mixed
*/
public function getSetting(string $property_path): mixed
{
-
+
if($prop_value = PropertyResolver::resolve($this->p_invoice, $property_path)) {
return $prop_value;
- }elseif($prop_value = PropertyResolver::resolve($this->_client_settings, $property_path)) {
+ } elseif($prop_value = PropertyResolver::resolve($this->_client_settings, $property_path)) {
return $prop_value;
- }elseif($prop_value = PropertyResolver::resolve($this->_company_settings, $property_path)) {
+ } elseif($prop_value = PropertyResolver::resolve($this->_company_settings, $property_path)) {
return $prop_value;
}
return null;
@@ -948,7 +951,7 @@ class Peppol extends AbstractService
{
return PropertyResolver::resolve($this->_client_settings, $property_path);
}
-
+
private function getCompanySetting(string $property_path): mixed
{
return PropertyResolver::resolve($this->_company_settings, $property_path);
@@ -957,33 +960,35 @@ class Peppol extends AbstractService
* senderSpecificLevelMutators
*
* Runs sender level specific requirements for the e-invoice,
- *
+ *
* ie, mutations that are required by the senders country.
- *
+ *
* @return self
*/
- private function senderSpecificLevelMutators():self
+ private function senderSpecificLevelMutators(): self
{
- if(method_exists($this, $this->invoice->company->country()->iso_3166_2))
+ if(method_exists($this, $this->invoice->company->country()->iso_3166_2)) {
$this->{$this->invoice->company->country()->iso_3166_2}();
+ }
return $this;
}
-
+
/**
* receiverSpecificLevelMutators
*
* Runs receiver level specific requirements for the e-invoice
- *
+ *
* ie mutations that are required by the receiving country
* @return self
*/
- private function receiverSpecificLevelMutators():self
+ private function receiverSpecificLevelMutators(): self
{
- if(method_exists($this, "client_{$this->invoice->company->country()->iso_3166_2}"))
+ if(method_exists($this, "client_{$this->invoice->company->country()->iso_3166_2}")) {
$this->{"client_{$this->invoice->company->country()->iso_3166_2}"}();
+ }
return $this;
}
@@ -999,9 +1004,9 @@ class Peppol extends AbstractService
private function setPaymentMeans(bool $required = false): self
{
- if(isset($this->p_invoice->PaymentMeans))
+ if(isset($this->p_invoice->PaymentMeans)) {
return $this;
- elseif($paymentMeans = $this->getSetting('Invoice.PaymentMeans')){
+ } elseif($paymentMeans = $this->getSetting('Invoice.PaymentMeans')) {
$this->p_invoice->PaymentMeans = is_array($paymentMeans) ? $paymentMeans : [$paymentMeans];
return $this;
}
@@ -1009,12 +1014,12 @@ class Peppol extends AbstractService
return $this->checkRequired($required, "Payment Means");
}
-
+
/**
* setOrderReference
*
* sets the order reference - if it exists (Never rely on settings for this)
- *
+ *
* @param bool $required
* @return self
*/
@@ -1022,8 +1027,7 @@ class Peppol extends AbstractService
{
$this->p_invoice->BuyerReference = $this->invoice->po_number ?? '';
- if(strlen($this->invoice->po_number ?? '') > 1)
- {
+ if(strlen($this->invoice->po_number ?? '') > 1) {
$order_reference = new OrderReference();
$id = new ID();
$id->value = $this->invoice->po_number;
@@ -1036,41 +1040,39 @@ class Peppol extends AbstractService
// "invoice" => [
// [
// "references" => [
- // "documentType" => "purchase_order",
+ // "documentType" => "purchase_order",
// "documentId" => $this->invoice->po_number,
// ],
// ],
// ],
- // ]
+ // ]
// ]);
return $this;
}
-
+
return $this->checkRequired($required, 'Order Reference');
}
-
+
/**
* setCustomerAssignedAccountId
*
* Sets the client id_number CAN rely on settings
- *
+ *
* @param bool $required
* @return self
*/
private function setCustomerAssignedAccountId(bool $required = false): self
{
//@phpstan-ignore-next-line
- if(isset($this->p_invoice->AccountingCustomerParty->CustomerAssignedAccountID)){
+ if(isset($this->p_invoice->AccountingCustomerParty->CustomerAssignedAccountID)) {
return $this;
- }
- elseif($customer_assigned_account_id = $this->getSetting('Invoice.AccountingCustomerParty.CustomerAssignedAccountID')){
-
+ } elseif($customer_assigned_account_id = $this->getSetting('Invoice.AccountingCustomerParty.CustomerAssignedAccountID')) {
+
$this->p_invoice->AccountingCustomerParty->CustomerAssignedAccountID = $customer_assigned_account_id;
return $this;
- }
- elseif(strlen($this->invoice->client->id_number ?? '') > 1){
+ } elseif(strlen($this->invoice->client->id_number ?? '') > 1) {
$customer_assigned_account_id = new CustomerAssignedAccountID();
$customer_assigned_account_id->value = $this->invoice->client->id_number;
@@ -1083,12 +1085,12 @@ class Peppol extends AbstractService
return $this->checkRequired($required, 'Client ID Number');
}
-
+
/**
* Check Required
*
* Throws if a required field is missing.
- *
+ *
* @param bool $required
* @param string $section
* @return self
@@ -1100,7 +1102,7 @@ class Peppol extends AbstractService
}
-
+
/**
* Builds the Routing object for StoreCove
*
@@ -1109,13 +1111,13 @@ class Peppol extends AbstractService
*/
private function buildRouting(array $identifiers): array
{
-
- return
+
+ return
[
"routing" => [
- "eIdentifiers" =>
+ "eIdentifiers" =>
$identifiers,
-
+
]
];
}
@@ -1126,12 +1128,11 @@ class Peppol extends AbstractService
$meta = $this->getStorecoveMeta();
- if(isset($meta['routing']['emails'])){
+ if(isset($meta['routing']['emails'])) {
$emails = $meta['routing']['emails'];
array_push($emails, $email);
$meta['routing']['emails'] = $emails;
- }
- else {
+ } else {
$meta['routing']['emails'] = [$email];
}
@@ -1144,13 +1145,13 @@ class Peppol extends AbstractService
* setStorecoveMeta
*
* updates the storecove payload for sending documents
- *
+ *
* @param array $meta
* @return self
*/
private function setStorecoveMeta(array $meta): self
{
-
+
$this->storecove_meta = array_merge($this->storecove_meta, $meta);
return $this;
@@ -1174,22 +1175,22 @@ class Peppol extends AbstractService
*
* @Completed
* @Tested
- *
+ *
* @return self
*/
private function DE(): self
{
-
+
$this->setPaymentMeans(true);
return $this;
}
-
+
/**
* CH
*
* @Completed
- *
+ *
* Completed - QR-Bill to be implemented at a later date.
* @return self
*/
@@ -1197,23 +1198,23 @@ class Peppol extends AbstractService
{
return $this;
}
-
+
/**
* AT
*
* @Pending
- *
+ *
* Need to ensure when sending to government entities that we route appropriately
* Also need to ensure customerAssignedAccountIdValue is set so that the sender can be resolved.
- *
+ *
* Need a way to define if the client is a government entity.
- *
+ *
* @return self
*/
private function AT(): self
{
//special fields for sending to AT:GOV
-
+
if($this->invoice->client->classification == 'government') {
//routing "b" for production "test" for test environment
$this->setStorecoveMeta($this->buildRouting(["scheme" => 'AT:GOV', "id" => 'b']));
@@ -1227,55 +1228,56 @@ class Peppol extends AbstractService
private function AU(): self
{
-
+
//if payment means are included, they must be the same `type`
return $this;
}
-
+
/**
* ES
*
- * @Pending
+ * @Pending
* B2G configuration
* B2G Testing
- *
+ *
* testing. // routing identifier - 293098
- *
+ *
* @return self
*/
private function ES(): self
{
- if(!isset($this->invoice->due_date))
+ if(!isset($this->invoice->due_date)) {
$this->p_invoice->DueDate = new \DateTime($this->invoice->date);
+ }
if($this->invoice->client->classification == 'business' && $this->invoice->company->getSetting('classification') == 'business') {
//must have a paymentmeans as credit_transfer
$this->setPaymentMeans(true);
}
-// For B2G, provide three ES:FACE identifiers in the routing object,
-// as well as the ES:VAT tax identifier in the accountingCustomerParty.publicIdentifiers.
-// The invoice will then be routed through the FACe network. The three required ES:FACE identifiers are as follows:
-// "routing": {
-// "eIdentifiers":[
-// {
-// "scheme": "ES:FACE",
-// "id": "L01234567",
-// "role": "ES-01-FISCAL"
-// },
-// {
-// "scheme": "ES:FACE",
-// "id": "L01234567",
-// "role": "ES-02-RECEPTOR"
-// },
-// {
-// "scheme": "ES:FACE",
-// "id": "L01234567",
-// "role": "ES-03-PAGADOR"
-// }
-// ]
-// }
+ // For B2G, provide three ES:FACE identifiers in the routing object,
+ // as well as the ES:VAT tax identifier in the accountingCustomerParty.publicIdentifiers.
+ // The invoice will then be routed through the FACe network. The three required ES:FACE identifiers are as follows:
+ // "routing": {
+ // "eIdentifiers":[
+ // {
+ // "scheme": "ES:FACE",
+ // "id": "L01234567",
+ // "role": "ES-01-FISCAL"
+ // },
+ // {
+ // "scheme": "ES:FACE",
+ // "id": "L01234567",
+ // "role": "ES-02-RECEPTOR"
+ // },
+ // {
+ // "scheme": "ES:FACE",
+ // "id": "L01234567",
+ // "role": "ES-03-PAGADOR"
+ // }
+ // ]
+ // }
return $this;
}
@@ -1283,13 +1285,13 @@ class Peppol extends AbstractService
private function FI(): self
{
- // For Finvoice, provide an FI:OPID routing identifier and an FI:OVT legal identifier.
- // An FI:VAT is recommended. In many cases (depending on the sender/receiver country and the type of service/goods)
+ // For Finvoice, provide an FI:OPID routing identifier and an FI:OVT legal identifier.
+ // An FI:VAT is recommended. In many cases (depending on the sender/receiver country and the type of service/goods)
// an FI:VAT is required. So we recommend always including this.
return $this;
}
-
+
/**
* FR
* @Pending - clarification on codes needed
@@ -1303,7 +1305,7 @@ class Peppol extends AbstractService
// All invoices have to be routed to SIRET 0009:11000201100044. There is no test environment for sending to public entities.
// The SIRET / 0009 identifier of the final recipient is to be included in the invoice.accountingCustomerParty.publicIdentifiers array.
- if($this->invoice->client->classification == 'government'){
+ if($this->invoice->client->classification == 'government') {
//route to SIRET 0009:11000201100044
$this->setStorecoveMeta($this->buildRouting([
["scheme" => 'FR:SIRET', "id" => '11000201100044']
@@ -1313,7 +1315,7 @@ class Peppol extends AbstractService
// The SIRET / 0009 identifier of the final recipient is to be included in the invoice.accountingCustomerParty.publicIdentifiers array.
$this->setCustomerAssignedAccountId(true);
-
+
}
if(strlen($this->invoice->client->id_number ?? '') == 9) {
@@ -1323,8 +1325,7 @@ class Peppol extends AbstractService
// ["scheme" => 'FR:SIRET', "id" => "0002:{$this->invoice->client->id_number}"]
]));
- }
- else {
+ } else {
//SIRET
$this->setStorecoveMeta($this->buildRouting([
["scheme" => 'FR:SIRET', "id" => "{$this->invoice->client->id_number}"]
@@ -1337,7 +1338,7 @@ class Peppol extends AbstractService
// sounds like it is optional
// The service code must be sent in invoice.buyerReference (deprecated) or the invoice.references array (documentType buyer_reference)
- if(strlen($this->invoice->po_number ?? '') >1) {
+ if(strlen($this->invoice->po_number ?? '') > 1) {
$this->setOrderReference(false);
}
@@ -1362,7 +1363,7 @@ class Peppol extends AbstractService
// IT Sender, IT Receiver, B2C
// Provide the receiver IT:CF and the receiver IT:CUUO (codice destinatario)
if($this->invoice->client->classification == 'individual' && $this->invoice->company->country()->iso_3166_2 == 'IT') {
-
+
$this->setStorecoveMeta($this->buildRouting([
["scheme" => 'IT:CF', "id" => $this->invoice->client->vat_number],
// ["scheme" => 'IT:CUUO', "id" => $this->invoice->client->routing_id]
@@ -1372,7 +1373,7 @@ class Peppol extends AbstractService
return $this;
}
-
+
// IT Sender, non-IT Receiver
// Provide the receiver tax identifier and any routing identifier applicable to the receiving country (see Receiver Identifiers).
if($this->invoice->client->country->iso_3166_2 != 'IT' && $this->invoice->company->country()->iso_3166_2 == 'IT') {
@@ -1450,7 +1451,7 @@ class Peppol extends AbstractService
// }
// ]
// }
- // Note this will only work if your LegalEntity has been setup for this network.
+ // Note this will only work if your LegalEntity has been setup for this network.
return $this;
}
@@ -1461,14 +1462,14 @@ class Peppol extends AbstractService
$meta = ["networks" => [
[
"application" => "ro-anaf",
- "settings"=> [
+ "settings" => [
"enabled" => true
],
],
]];
-
+
$this->setStorecoveMeta($meta);
-
+
$this->setStorecoveMeta($this->buildRouting([
["scheme" => 'RO:VAT', "id" => $this->invoice->client->vat_number],
]));
@@ -1482,7 +1483,7 @@ class Peppol extends AbstractService
$resolved_city = $ro->getSectorCode($client_city);
$this->p_invoice->AccountingCustomerParty->Party->PostalAddress->CountrySubentity = $resolved_state;
- $this->p_invoice->AccountingCustomerParty->Party->PostalAddress->CityName = $resolved_city;
+ $this->p_invoice->AccountingCustomerParty->Party->PostalAddress->CityName = $resolved_city;
$this->p_invoice->AccountingCustomerParty->Party->PhysicalLocation->Address->CountrySubentity = $resolved_state;
$this->p_invoice->AccountingCustomerParty->Party->PhysicalLocation->Address->CityName = $resolved_city;
@@ -1498,7 +1499,7 @@ class Peppol extends AbstractService
//Sweden
private function SE(): self
{
- // Deliver invoices to the "Svefaktura" co-operation of local Swedish service providers.
+ // Deliver invoices to the "Svefaktura" co-operation of local Swedish service providers.
// Routing is through the SE:ORGNR together with a network specification:
// "routing": {
diff --git a/app/Services/EDocument/Standards/Peppol/RO.php b/app/Services/EDocument/Standards/Peppol/RO.php
index 936fc413e0ad..bbf00b1b22d4 100644
--- a/app/Services/EDocument/Standards/Peppol/RO.php
+++ b/app/Services/EDocument/Standards/Peppol/RO.php
@@ -117,21 +117,24 @@ class RO
];
- public function __construct(protected Invoice $invoice){}
+ public function __construct(protected Invoice $invoice)
+ {
+ }
public function getStateCode(?string $state_code): string
{
$state_code = strlen($state_code ?? '') > 1 ? $state_code : $this->invoice->client->state;
//codes are configured by default
- if(isset($this->countrySubEntity[$state_code]))
+ if(isset($this->countrySubEntity[$state_code])) {
return $state_code;
+ }
$key = array_search($state_code, $this->countrySubEntity);
if ($key !== false) {
return $key;
- }
+ }
return 'RO-B';
}
@@ -140,10 +143,11 @@ class RO
{
$client_sector_code = $client_city ?? $this->invoice->client->city;
- if(in_array($this->getStateCode($this->invoice->client->state), ['BUCHAREST', 'RO-B']))
+ if(in_array($this->getStateCode($this->invoice->client->state), ['BUCHAREST', 'RO-B'])) {
return in_array(strtoupper($this->invoice->client->city), array_keys($this->sectorList)) ? strtoupper($this->invoice->client->city) : 'SECTOR1';
+ }
return $client_sector_code;
}
-}
\ No newline at end of file
+}
diff --git a/app/Services/EDocument/Standards/Settings/PropertyResolver.php b/app/Services/EDocument/Standards/Settings/PropertyResolver.php
index 2476a70b39a0..aa57e923c047 100644
--- a/app/Services/EDocument/Standards/Settings/PropertyResolver.php
+++ b/app/Services/EDocument/Standards/Settings/PropertyResolver.php
@@ -20,7 +20,8 @@ class PropertyResolver
return self::traverse($object, $pathSegments);
}
- private static function traverse($object, array $pathSegments) {
+ private static function traverse($object, array $pathSegments)
+ {
if (empty($pathSegments)) {
return null;
}
@@ -41,4 +42,4 @@ class PropertyResolver
return self::traverse($nextObject, $pathSegments);
}
-}
\ No newline at end of file
+}
diff --git a/app/Services/Email/EmailDefaults.php b/app/Services/Email/EmailDefaults.php
index 1c27b83ee483..898e49a03d14 100644
--- a/app/Services/Email/EmailDefaults.php
+++ b/app/Services/Email/EmailDefaults.php
@@ -327,13 +327,13 @@ class EmailDefaults
}
/** E-Invoice xml file */
if ($this->email->email_object->settings->enable_e_invoice && $this->email->email_object->settings->enable_e_invoice) {
-
- $xml_string = $this->email->email_object->entity->service()->getEDocument();
- if($xml_string) {
- $this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode($xml_string), 'name' => explode(".", $this->email->email_object->entity->getFileName('xml'))[0]."-e_invoice.xml"]]);
- }
-
+ $xml_string = $this->email->email_object->entity->service()->getEDocument();
+
+ if($xml_string) {
+ $this->email->email_object->attachments = array_merge($this->email->email_object->attachments, [['file' => base64_encode($xml_string), 'name' => explode(".", $this->email->email_object->entity->getFileName('xml'))[0]."-e_invoice.xml"]]);
+ }
+
}
if (!$this->email->email_object->settings->document_email_attachment || !$this->email->company->account->hasFeature(Account::FEATURE_DOCUMENTS)) {
diff --git a/app/Services/Import/Quickbooks/Contracts/SdkInterface.php b/app/Services/Import/Quickbooks/Contracts/SdkInterface.php
index 79320e338d30..48ed4b32e84f 100644
--- a/app/Services/Import/Quickbooks/Contracts/SdkInterface.php
+++ b/app/Services/Import/Quickbooks/Contracts/SdkInterface.php
@@ -4,11 +4,11 @@ namespace App\Services\Import\Quickbooks\Contracts;
interface SdkInterface
{
- function getAuthorizationUrl(): string;
- function accessToken(string $code, string $realm): array;
- function refreshToken(): array;
- function getAccessToken();
- function getRefreshToken(): array;
- function totalRecords(string $entity): int;
- function fetchRecords(string $entity, int $max): array;
+ public function getAuthorizationUrl(): string;
+ public function accessToken(string $code, string $realm): array;
+ public function refreshToken(): array;
+ public function getAccessToken();
+ public function getRefreshToken(): array;
+ public function totalRecords(string $entity): int;
+ public function fetchRecords(string $entity, int $max): array;
}
diff --git a/app/Services/Import/Quickbooks/QuickbooksService.php b/app/Services/Import/Quickbooks/QuickbooksService.php
index 8832ee15713f..320cafce7925 100644
--- a/app/Services/Import/Quickbooks/QuickbooksService.php
+++ b/app/Services/Import/Quickbooks/QuickbooksService.php
@@ -18,7 +18,7 @@ use QuickBooksOnline\API\DataService\DataService;
// quickbooks_refresh_token
// quickbooks_refresh_expires
class QuickbooksService
-{
+{
private DataService $sdk;
private Auth $auth;
@@ -26,12 +26,12 @@ class QuickbooksService
public function __construct(private Company $company)
{
$this->init()
- ->auth();
+ ->auth();
}
private function init(): self
{
-
+
$this->sdk = DataService::Configure([
'ClientID' => config('services.quickbooks.client_id'),
'ClientSecret' => config('services.quickbooks.client_secret'),
diff --git a/app/Services/Import/Quickbooks/Repositories/CompanyTokensRepository.php b/app/Services/Import/Quickbooks/Repositories/CompanyTokensRepository.php
index 3e6a18a3fc3a..92aef0c8e9e3 100644
--- a/app/Services/Import/Quickbooks/Repositories/CompanyTokensRepository.php
+++ b/app/Services/Import/Quickbooks/Repositories/CompanyTokensRepository.php
@@ -7,19 +7,20 @@ use App\Libraries\MultiDB;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Cache;
-class CompanyTokensRepository {
-
-
+class CompanyTokensRepository
+{
private $company_key;
private $store_key = "quickbooks-token";
- public function __construct(string $key = null) {
+ public function __construct(string $key = null)
+ {
$this->company_key = $key ?? auth()->user->company()->company_key ?? null;
$this->store_key .= $key;
$this->setCompanyDbByKey();
}
- public function save(array $tokens) {
+ public function save(array $tokens)
+ {
$this->updateAccessToken($tokens['access_token'], $tokens['access_token_expires']);
$this->updateRefreshToken($tokens['refresh_token'], $tokens['refresh_token_expires'], $tokens['realm']);
}
@@ -30,16 +31,17 @@ class CompanyTokensRepository {
return Company::where('company_key', $this->company_key)->first();
}
- public function setCompanyDbByKey()
+ public function setCompanyDbByKey()
{
MultiDB::findAndSetDbByCompanyKey($this->company_key);
}
- public function get() {
+ public function get()
+ {
return $this->getAccessToken() + $this->getRefreshToken();
}
-
+
protected function updateRefreshToken(string $token, string $expires, string $realm)
{
DB::table('companies')
@@ -49,16 +51,16 @@ class CompanyTokensRepository {
'quickbooks_refresh_expires' => $expires ]);
}
- protected function updateAccessToken(string $token, string $expires )
+ protected function updateAccessToken(string $token, string $expires)
{
Cache::put([$this->store_key => $token], $expires);
}
- protected function getAccessToken( )
+ protected function getAccessToken()
{
$result = Cache::get($this->store_key);
-
+
return $result ? ['access_token' => $result] : [];
}
@@ -66,11 +68,11 @@ class CompanyTokensRepository {
{
$result = (array) DB::table('companies')
->select('quickbooks_refresh_token', 'quickbooks_realm_id')
- ->where('company_key',$this->company_key)
- ->where('quickbooks_refresh_expires','>',now())
+ ->where('company_key', $this->company_key)
+ ->where('quickbooks_refresh_expires', '>', now())
->first();
-
- return $result? array_combine(['refresh_token','realm'], array_values($result) ) : [];
+
+ return $result ? array_combine(['refresh_token','realm'], array_values($result)) : [];
}
}
diff --git a/app/Services/Import/Quickbooks/SdkWrapper.php b/app/Services/Import/Quickbooks/SdkWrapper.php
index 6da25e476b5f..1cd8210c48ae 100644
--- a/app/Services/Import/Quickbooks/SdkWrapper.php
+++ b/app/Services/Import/Quickbooks/SdkWrapper.php
@@ -6,8 +6,7 @@ use App\Services\Import\Quickbooks\Contracts\SdkInterface as QuickbooksInterface
final class SdkWrapper implements QuickbooksInterface
{
-
- const MAXRESULTS = 10000;
+ public const MAXRESULTS = 10000;
private $sdk;
private $entities = ['Customer','Invoice','Payment','Item'];
@@ -18,12 +17,12 @@ final class SdkWrapper implements QuickbooksInterface
$this->sdk = $sdk;
}
- public function getAuthorizationUrl() : string
+ public function getAuthorizationUrl(): string
{
return ($this->sdk->getOAuth2LoginHelper())->getAuthorizationCodeURL();
}
- public function getState() : string
+ public function getState(): string
{
return ($this->sdk->getOAuth2LoginHelper())->getState();
}
@@ -33,21 +32,22 @@ final class SdkWrapper implements QuickbooksInterface
return $this->getTokens();
}
- public function getRefreshToken(): array{
+ public function getRefreshToken(): array
+ {
return $this->getTokens();
}
- public function accessToken(string $code, string $realm) : array
+ public function accessToken(string $code, string $realm): array
{
- $token = ($this->sdk->getOAuth2LoginHelper())->exchangeAuthorizationCodeForToken($code,$realm);
-
+ $token = ($this->sdk->getOAuth2LoginHelper())->exchangeAuthorizationCodeForToken($code, $realm);
+
return $this->getTokens();
}
private function getTokens()
{
-
- $token =($this->sdk->getOAuth2LoginHelper())->getAccessToken();
+
+ $token = ($this->sdk->getOAuth2LoginHelper())->getAccessToken();
return $token;
// $access_token = $token->getAccessToken();
@@ -66,40 +66,49 @@ final class SdkWrapper implements QuickbooksInterface
return $this->getTokens();
}
- public function handleCallbacks(array $data): void {
+ public function handleCallbacks(array $data): void
+ {
}
- public function totalRecords(string $entity) : int {
+ public function totalRecords(string $entity): int
+ {
return $this->sdk->Query("select count(*) from $entity");
}
- private function queryData(string $query, int $start = 1, $limit = 100) : array
+ private function queryData(string $query, int $start = 1, $limit = 100): array
{
return (array) $this->sdk->Query($query, $start, $limit);
}
- public function fetchRecords( string $entity, int $max = 1000): array {
-
- if(!in_array($entity, $this->entities)) return [];
-
+ public function fetchRecords(string $entity, int $max = 1000): array
+ {
+
+ if(!in_array($entity, $this->entities)) {
+ return [];
+ }
+
$records = [];
$start = 0;
$limit = 100;
try {
$total = $this->totalRecords($entity);
$total = min($max, $total);
-
+
// Step 3 & 4: Get chunks of records until the total required records are retrieved
do {
$limit = min(self::MAXRESULTS, $total - $start);
$recordsChunk = $this->queryData("select * from $entity", $start, $limit);
- if(empty($recordsChunk)) break;
+ if(empty($recordsChunk)) {
+ break;
+ }
- $records = array_merge($records,$recordsChunk);
+ $records = array_merge($records, $recordsChunk);
$start += $limit;
} while ($start < $total);
- if(empty($records)) throw new \Exception("No records retrieved!");
+ if(empty($records)) {
+ throw new \Exception("No records retrieved!");
+ }
} catch (\Throwable $th) {
nlog("Fetch Quickbooks API Error: {$th->getMessage()}");
diff --git a/app/Services/Import/Quickbooks/Service.php b/app/Services/Import/Quickbooks/Service.php
index 04bcae0a9a03..5002bd9e16af 100644
--- a/app/Services/Import/Quickbooks/Service.php
+++ b/app/Services/Import/Quickbooks/Service.php
@@ -1,31 +1,33 @@
sdk = $quickbooks;
}
- public function getOAuth() : Auth
+ public function getOAuth(): Auth
{
return new Auth($this->sdk);
}
- public function getAccessToken() : array
+ public function getAccessToken(): array
{
- return $this->getOAuth()->getAccessToken();
+ return $this->getOAuth()->getAccessToken();
}
- public function getRefreshToken() : array
+ public function getRefreshToken(): array
{
// TODO: Check if token is Cached otherwise fetch a new one and Cache token and expire
return $this->getAccessToken();
@@ -60,11 +62,12 @@ final class Service
return $this->fetchRecords('Item', $max) ;
}
- protected function fetchRecords(string $entity, $max = 100) : Collection {
+ protected function fetchRecords(string $entity, $max = 100): Collection
+ {
return (self::RepositoryFactory($entity))->get($max);
}
- private static function RepositoryFactory(string $entity) : RepositoryInterface
+ private static function RepositoryFactory(string $entity): RepositoryInterface
{
return app("\\App\\Repositories\\Import\Quickbooks\\{$entity}Repository");
}
@@ -79,8 +82,8 @@ final class Service
return $this->fetchRecords('Customer', $max) ;
}
- public function totalRecords(string $entity) : int
+ public function totalRecords(string $entity): int
{
return (self::RepositoryFactory($entity))->count();
}
-}
\ No newline at end of file
+}
diff --git a/app/Services/Invoice/AutoBillInvoice.php b/app/Services/Invoice/AutoBillInvoice.php
index 53c51145d859..15e4ef6454d1 100644
--- a/app/Services/Invoice/AutoBillInvoice.php
+++ b/app/Services/Invoice/AutoBillInvoice.php
@@ -42,7 +42,7 @@ class AutoBillInvoice extends AbstractService
public function __construct(private Invoice $invoice, protected string $db)
{
-
+
$this->client = $this->invoice->client;
}
@@ -52,7 +52,7 @@ class AutoBillInvoice extends AbstractService
MultiDB::setDb($this->db);
/* @var \App\Modesl\Client $client */
-
+
$is_partial = false;
/* Is the invoice payable? */
@@ -286,7 +286,7 @@ class AutoBillInvoice extends AbstractService
->get();
$available_unapplied_balance = $unapplied_payments->sum('amount') - $unapplied_payments->sum('applied');
-
+
nlog($this->client->id);
nlog($this->invoice->id);
nlog($unapplied_payments->sum('amount'));
diff --git a/app/Services/Invoice/MarkInvoiceDeleted.php b/app/Services/Invoice/MarkInvoiceDeleted.php
index 65125740d0cb..56f3ee99e561 100644
--- a/app/Services/Invoice/MarkInvoiceDeleted.php
+++ b/app/Services/Invoice/MarkInvoiceDeleted.php
@@ -187,7 +187,7 @@ class MarkInvoiceDeleted extends AbstractService
private function triggeredActions(): self
{
- if($this->invoice->quote){
+ if($this->invoice->quote) {
$this->invoice->quote->invoice_id = null;
$this->invoice->quote->status_id = Quote::STATUS_SENT;
$this->invoice->pushQuietly();
diff --git a/app/Services/Payment/RefundPayment.php b/app/Services/Payment/RefundPayment.php
index ed7b51deed20..a353c50791f2 100644
--- a/app/Services/Payment/RefundPayment.php
+++ b/app/Services/Payment/RefundPayment.php
@@ -53,7 +53,7 @@ class RefundPayment
$is_gateway_refund = ($this->refund_data['gateway_refund'] !== false || $this->refund_failed || (isset($this->refund_data['via_webhook']) && $this->refund_data['via_webhook'] !== false)) ? ctrans('texts.yes') : ctrans('texts.no');
$notes = ctrans('texts.refunded') . " : {$this->total_refund} - " . ctrans('texts.gateway_refund') . " : " . $is_gateway_refund;
-
+
$this->createActivity($notes);
$this->finalize();
@@ -178,7 +178,7 @@ class RefundPayment
*/
private function setStatus()
{
- if ($this->total_refund == $this->payment->amount || floatval($this->payment->amount) == floatval($this->payment->refunded)) {
+ if ($this->total_refund == $this->payment->amount || floatval($this->payment->amount) == floatval($this->payment->refunded)) {
$this->payment->status_id = Payment::STATUS_REFUNDED;
} else {
$this->payment->status_id = Payment::STATUS_PARTIALLY_REFUNDED;
diff --git a/app/Services/Pdf/PdfConfiguration.php b/app/Services/Pdf/PdfConfiguration.php
index 2adc2d1105d4..ac6c7a43e7a7 100644
--- a/app/Services/Pdf/PdfConfiguration.php
+++ b/app/Services/Pdf/PdfConfiguration.php
@@ -457,7 +457,7 @@ class PdfConfiguration
*/
public function setDateFormat(): self
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\DateFormat> */
$date_formats = app('date_formats');
diff --git a/app/Services/PurchaseOrder/CreateInvitations.php b/app/Services/PurchaseOrder/CreateInvitations.php
index 9813f13ba6a2..d10e1f0cc093 100644
--- a/app/Services/PurchaseOrder/CreateInvitations.php
+++ b/app/Services/PurchaseOrder/CreateInvitations.php
@@ -42,8 +42,9 @@ class CreateInvitations extends AbstractService
public function run()
{
- if(!$this->purchase_order->vendor)
+ if(!$this->purchase_order->vendor) {
return $this->purchase_order;
+ }
$contacts = $this->purchase_order->vendor->contacts()->get();
diff --git a/app/Services/PurchaseOrder/MarkSent.php b/app/Services/PurchaseOrder/MarkSent.php
index c357684be697..bb332cb02c3a 100644
--- a/app/Services/PurchaseOrder/MarkSent.php
+++ b/app/Services/PurchaseOrder/MarkSent.php
@@ -17,7 +17,6 @@ use App\Models\PurchaseOrder;
class MarkSent
{
-
public function __construct(public Vendor $vendor, public PurchaseOrder $purchase_order)
{
}
diff --git a/app/Services/Report/ProfitLoss.php b/app/Services/Report/ProfitLoss.php
index b5d2158231bd..15d6df0c038f 100644
--- a/app/Services/Report/ProfitLoss.php
+++ b/app/Services/Report/ProfitLoss.php
@@ -431,14 +431,14 @@ class ProfitLoss
// private function paymentIncome()
// {
// return \DB::select('
- // SELECT
+ // SELECT
// SUM(coalesce(payments.amount - payments.refunded,0)) as payments,
// SUM(coalesce(payments.amount - payments.refunded,0)) * IFNULL(payments.exchange_rate ,1) as payments_converted,
// payments.currency_id as currency_id
- // FROM clients
+ // FROM clients
// INNER JOIN
- // payments ON
- // clients.id=payments.client_id
+ // payments ON
+ // clients.id=payments.client_id
// WHERE payments.status_id IN (1,4,5,6)
// AND clients.is_deleted = false
// AND payments.is_deleted = false
diff --git a/app/Services/Template/TemplateAction.php b/app/Services/Template/TemplateAction.php
index 2a892ad2b0b2..853991760e7e 100644
--- a/app/Services/Template/TemplateAction.php
+++ b/app/Services/Template/TemplateAction.php
@@ -220,7 +220,7 @@ class TemplateAction implements ShouldQueue
Project::class => 'projects',
Client::class => 'clients',
Vendor::class => 'vendors',
- default =>'invoices',
+ default => 'invoices',
};
}
diff --git a/app/Services/Template/TemplateService.php b/app/Services/Template/TemplateService.php
index 016a91783fd0..dd578ca6ee17 100644
--- a/app/Services/Template/TemplateService.php
+++ b/app/Services/Template/TemplateService.php
@@ -319,7 +319,7 @@ class TemplateService
nlog("error = " . $e->getMessage());
throw ($e);
}
-
+
$template = $template->render($this->data);
$f = $this->document->createDocumentFragment();
@@ -916,7 +916,7 @@ class TemplateService
'custom_value4' => $entity->client->custom_value4 ?? '',
'address' => $entity->client->present()->address(),
'shipping_address' => $entity->client->present()->shipping_address(),
- 'locale' => substr($entity->client->locale(), 0, 2),
+ 'locale' => substr($entity->client->locale(), 0, 2),
] : [];
}
/**
diff --git a/app/Services/Vendor/VendorService.php b/app/Services/Vendor/VendorService.php
index 5d4bb5bd6dee..f347006406c4 100644
--- a/app/Services/Vendor/VendorService.php
+++ b/app/Services/Vendor/VendorService.php
@@ -17,7 +17,6 @@ use Illuminate\Database\QueryException;
class VendorService
{
-
use GeneratesCounter;
private bool $completed = true;
diff --git a/app/Transformers/ProjectTransformer.php b/app/Transformers/ProjectTransformer.php
index c9eb2dbc20a4..20715f392d69 100644
--- a/app/Transformers/ProjectTransformer.php
+++ b/app/Transformers/ProjectTransformer.php
@@ -48,7 +48,7 @@ class ProjectTransformer extends EntityTransformer
$transformer = new DocumentTransformer($this->serializer);
// if($project->documents->count() > 0) {
- return $this->includeCollection($project->documents, $transformer, Document::class);
+ return $this->includeCollection($project->documents, $transformer, Document::class);
// }
// return null;
diff --git a/app/Transformers/UserTransformer.php b/app/Transformers/UserTransformer.php
index 35b76ff0622f..23b72d0853ba 100644
--- a/app/Transformers/UserTransformer.php
+++ b/app/Transformers/UserTransformer.php
@@ -40,7 +40,7 @@ class UserTransformer extends EntityTransformer
public function transform(User $user)
{
- $ref = new \stdClass;
+ $ref = new \stdClass();
$ref->free = 0;
$ref->pro = 0;
$ref->enterprise = 0;
diff --git a/app/Utils/Helpers.php b/app/Utils/Helpers.php
index e0e7d9e64e21..57c764144c59 100644
--- a/app/Utils/Helpers.php
+++ b/app/Utils/Helpers.php
@@ -97,15 +97,15 @@ class Helpers
switch ($custom_field) {
case 'date':
return is_null($entity) ? $value : $this->translateDate($value, $entity->date_format(), $entity->locale());
-
+
case 'switch':
return trim($value ?? '') == 'yes' ? ctrans('texts.yes') : ctrans('texts.no');
-
+
default:
return is_null($value) ? '' : $this->processReservedKeywords($value, $entity);
-
+
}
}
@@ -253,43 +253,43 @@ class Helpers
}
// if (Str::contains($match, '|')) {
- $parts = explode('|', $match); // [ '[MONTH', 'MONTH+2]' ]
+ $parts = explode('|', $match); // [ '[MONTH', 'MONTH+2]' ]
- $left = substr($parts[0], 1); // 'MONTH'
- $right = substr($parts[1], 0, -1); // MONTH+2
+ $left = substr($parts[0], 1); // 'MONTH'
+ $right = substr($parts[1], 0, -1); // MONTH+2
- // If left side is not part of replacements, skip.
- if (! array_key_exists($left, $replacements['ranges'])) {
- continue;
- }
+ // If left side is not part of replacements, skip.
+ if (! array_key_exists($left, $replacements['ranges'])) {
+ continue;
+ }
- $_left = Carbon::createFromDate($currentDateTime->year, $currentDateTime->month)->translatedFormat('F Y');
- $_right = '';
+ $_left = Carbon::createFromDate($currentDateTime->year, $currentDateTime->month)->translatedFormat('F Y');
+ $_right = '';
- // If right side doesn't have any calculations, replace with raw ranges keyword.
- if (! Str::contains(str_replace("", "", $right), ['-', '+', '/', '*'])) {
- $_right = Carbon::createFromDate($currentDateTime->year, $currentDateTime->month)->translatedFormat('F Y');
- }
+ // If right side doesn't have any calculations, replace with raw ranges keyword.
+ if (! Str::contains(str_replace("", "", $right), ['-', '+', '/', '*'])) {
+ $_right = Carbon::createFromDate($currentDateTime->year, $currentDateTime->month)->translatedFormat('F Y');
+ }
- // If right side contains one of math operations, calculate.
- if (Str::contains(str_replace("", "", $right), ['+'])) {
- $operation = preg_match_all('/(?!^-)[+*\/-](\s?-)?/', $right, $_matches);
+ // If right side contains one of math operations, calculate.
+ if (Str::contains(str_replace("", "", $right), ['+'])) {
+ $operation = preg_match_all('/(?!^-)[+*\/-](\s?-)?/', $right, $_matches);
- $_operation = array_shift($_matches)[0]; // + -
+ $_operation = array_shift($_matches)[0]; // + -
- $_value = explode($_operation, $right); // [MONTHYEAR, 4]
+ $_value = explode($_operation, $right); // [MONTHYEAR, 4]
- $_right = Carbon::createFromDate($currentDateTime->year, $currentDateTime->month)->addMonths($_value[1])->translatedFormat('F Y'); //@phpstan-ignore-line
- }
+ $_right = Carbon::createFromDate($currentDateTime->year, $currentDateTime->month)->addMonths($_value[1])->translatedFormat('F Y'); //@phpstan-ignore-line
+ }
- $replacement = sprintf('%s to %s', $_left, $_right);
+ $replacement = sprintf('%s to %s', $_left, $_right);
- $value = preg_replace(
- sprintf('/%s/', preg_quote($match)),
- $replacement,
- $value,
- 1
- );
+ $value = preg_replace(
+ sprintf('/%s/', preg_quote($match)),
+ $replacement,
+ $value,
+ 1
+ );
// }
}
diff --git a/app/Utils/HtmlEngine.php b/app/Utils/HtmlEngine.php
index 2af143290827..aadea2190f25 100644
--- a/app/Utils/HtmlEngine.php
+++ b/app/Utils/HtmlEngine.php
@@ -1017,98 +1017,98 @@ class HtmlEngine
* of Repeating headers and footers on the PDF.
* @return string The css string
*/
-// private function generateCustomCSS(): string
-// {
-// $header_and_footer = '
-// .header, .header-space {
-// height: 160px;
-// }
+ // private function generateCustomCSS(): string
+ // {
+ // $header_and_footer = '
+ // .header, .header-space {
+ // height: 160px;
+ // }
-// .footer, .footer-space {
-// height: 160px;
-// }
+ // .footer, .footer-space {
+ // height: 160px;
+ // }
-// .footer {
-// position: fixed;
-// bottom: 0;
-// width: 100%;
-// }
+ // .footer {
+ // position: fixed;
+ // bottom: 0;
+ // width: 100%;
+ // }
-// .header {
-// position: fixed;
-// top: 0mm;
-// width: 100%;
-// }
+ // .header {
+ // position: fixed;
+ // top: 0mm;
+ // width: 100%;
+ // }
-// @media print {
-// thead {display: table-header-group;}
-// tfoot {display: table-footer-group;}
-// button {display: none;}
-// body {margin: 0;}
-// }';
+ // @media print {
+ // thead {display: table-header-group;}
+ // tfoot {display: table-footer-group;}
+ // button {display: none;}
+ // body {margin: 0;}
+ // }';
-// $header = '
-// .header, .header-space {
-// height: 160px;
-// }
+ // $header = '
+ // .header, .header-space {
+ // height: 160px;
+ // }
-// .header {
-// position: fixed;
-// top: 0mm;
-// width: 100%;
-// }
+ // .header {
+ // position: fixed;
+ // top: 0mm;
+ // width: 100%;
+ // }
-// @media print {
-// thead {display: table-header-group;}
-// button {display: none;}
-// body {margin: 0;}
-// }';
+ // @media print {
+ // thead {display: table-header-group;}
+ // button {display: none;}
+ // body {margin: 0;}
+ // }';
-// $footer = '
+ // $footer = '
-// .footer, .footer-space {
-// height: 160px;
-// }
+ // .footer, .footer-space {
+ // height: 160px;
+ // }
-// .footer {
-// position: fixed;
-// bottom: 0;
-// width: 100%;
-// }
+ // .footer {
+ // position: fixed;
+ // bottom: 0;
+ // width: 100%;
+ // }
-// @media print {
-// tfoot {display: table-footer-group;}
-// button {display: none;}
-// body {margin: 0;}
-// }';
-// $css = '';
+ // @media print {
+ // tfoot {display: table-footer-group;}
+ // button {display: none;}
+ // body {margin: 0;}
+ // }';
+ // $css = '';
-// if ($this->settings->all_pages_header && $this->settings->all_pages_footer) {
-// $css .= $header_and_footer;
-// } elseif ($this->settings->all_pages_header && ! $this->settings->all_pages_footer) {
-// $css .= $header;
-// } elseif (! $this->settings->all_pages_header && $this->settings->all_pages_footer) {
-// $css .= $footer;
-// }
+ // if ($this->settings->all_pages_header && $this->settings->all_pages_footer) {
+ // $css .= $header_and_footer;
+ // } elseif ($this->settings->all_pages_header && ! $this->settings->all_pages_footer) {
+ // $css .= $header;
+ // } elseif (! $this->settings->all_pages_header && $this->settings->all_pages_footer) {
+ // $css .= $footer;
+ // }
-// $css .= '
-// .page {
-// page-break-after: always;
-// }
+ // $css .= '
+ // .page {
+ // page-break-after: always;
+ // }
-// @page {
-// margin: 0mm
-// }
+ // @page {
+ // margin: 0mm
+ // }
-// html {
-// ';
+ // html {
+ // ';
-// $css .= 'font-size:'.$this->settings->font_size.'px;';
+ // $css .= 'font-size:'.$this->settings->font_size.'px;';
-// $css .= '}';
+ // $css .= '}';
-// return $css;
-// }
+ // return $css;
+ // }
/**
* Generate markup for HTML images on entity.
diff --git a/app/Utils/PaymentHtmlEngine.php b/app/Utils/PaymentHtmlEngine.php
index b28641606c86..2984467d481c 100644
--- a/app/Utils/PaymentHtmlEngine.php
+++ b/app/Utils/PaymentHtmlEngine.php
@@ -358,7 +358,7 @@ class PaymentHtmlEngine
// return '
//
//
- //
+ // |
// '. $text .'
// |
//
diff --git a/app/Utils/Statics.php b/app/Utils/Statics.php
index 8a0d109bc2cc..79c81b786df2 100644
--- a/app/Utils/Statics.php
+++ b/app/Utils/Statics.php
@@ -66,10 +66,10 @@ class Statics
public static function company($locale = 'en'): array
{
$data = [];
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Industry> */
$industries = app('industries');
-
+
$data['industries'] = $industries->each(function ($industry) {
$industry->name = ctrans('texts.industry_'.$industry->name);
})->sortBy(function ($industry) {
@@ -88,14 +88,14 @@ class Statics
/** @var \Illuminate\Support\Collection<\App\Models\PaymentType> */
$payment_types = app('payment_types');
-
+
$data['payment_types'] = $payment_types->each(function ($pType) {
$pType->name = ctrans('texts.payment_type_'.$pType->name);
$pType->id = (string) $pType->id;
})->sortBy(function ($pType) {
return $pType->name;
})->values();
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Language> */
$languages = app('languages');
@@ -105,7 +105,7 @@ class Statics
return $lang->name;
})->values();
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
$currencies = app('currencies');
@@ -121,7 +121,7 @@ class Statics
$data['timezones'] = app('timezones');
$data['date_formats'] = app('date_formats');
$data['templates'] = app('templates');
-
+
$data['bulk_updates'] = [
'client' => \App\Models\Client::$bulk_update_columns,
];
diff --git a/app/Utils/TempFile.php b/app/Utils/TempFile.php
index 1d9d6da9392d..1d2498d9f929 100644
--- a/app/Utils/TempFile.php
+++ b/app/Utils/TempFile.php
@@ -13,10 +13,7 @@ namespace App\Utils;
use Illuminate\Http\File;
use Illuminate\Http\UploadedFile;
-<<<<<<< HEAD
-=======
->>>>>>> new_payment_flow
class TempFile
{
public static function path($url): string
@@ -68,7 +65,6 @@ class TempFile
// return UploadedFile object
return $file;
}
-<<<<<<< HEAD
/* create a tmp file from a raw string: https://gist.github.com/waska14/8b3bcebfad1f86f7fcd3b82927576e38*/
public static function UploadedFileFromUrl(string $url, string|null $fileName = null, string|null $mimeType = null): UploadedFile
@@ -98,6 +94,4 @@ class TempFile
// return UploadedFile object
return $file;
}
-=======
->>>>>>> new_payment_flow
}
diff --git a/app/Utils/TemplateEngine.php b/app/Utils/TemplateEngine.php
index 3b697e203c25..d9d388c03465 100644
--- a/app/Utils/TemplateEngine.php
+++ b/app/Utils/TemplateEngine.php
@@ -241,7 +241,7 @@ class TemplateEngine
$data['signature'] = $this->settings->email_signature;
$data['settings'] = $this->settings;
// $data['whitelabel'] = $this->entity_obj ? $this->entity_obj->company->account->isPaid() : true;
- // $data['company'] = $this->entity_obj ? $this->entity_obj->company : '';
+ // $data['company'] = $this->entity_obj ? $this->entity_obj->company : '';
$data['whitelabel'] = $this->entity_obj->company->account->isPaid();
$data['company'] = $this->entity_obj->company;
$data['settings'] = $this->settings;
diff --git a/app/Utils/Traits/AppSetup.php b/app/Utils/Traits/AppSetup.php
index 00c656e7861f..8de54f7d719e 100644
--- a/app/Utils/Traits/AppSetup.php
+++ b/app/Utils/Traits/AppSetup.php
@@ -29,7 +29,7 @@ trait AppSetup
return $check['system_health'] == 'true';
}
-
+
/**
* @deprecated
*
diff --git a/app/Utils/Traits/MakesDates.php b/app/Utils/Traits/MakesDates.php
index 1e7b551ad6a3..a35dc2abd444 100644
--- a/app/Utils/Traits/MakesDates.php
+++ b/app/Utils/Traits/MakesDates.php
@@ -177,7 +177,7 @@ trait MakesDates
}
}
-
+
return match ($data['date_range']) {
EmailStatement::LAST7 => [now()->startOfDay()->subDays(14)->format('Y-m-d'), now()->subDays(7)->startOfDay()->format('Y-m-d')],
EmailStatement::LAST30 => [now()->startOfDay()->subDays(60)->format('Y-m-d'), now()->subDays(30)->startOfDay()->format('Y-m-d')],
diff --git a/app/Utils/Traits/MakesReminders.php b/app/Utils/Traits/MakesReminders.php
index ca8d2b14d151..e02892ec3a1c 100644
--- a/app/Utils/Traits/MakesReminders.php
+++ b/app/Utils/Traits/MakesReminders.php
@@ -84,9 +84,10 @@ trait MakesReminders
{
$interval = $this->addTimeInterval($last_sent_date, $endless_reminder_frequency_id);
- if(is_null($interval))
+ if(is_null($interval)) {
return false;
-
+ }
+
if (Carbon::now()->startOfDay()->eq($interval)) {
return true;
}
diff --git a/app/Utils/Traits/Pdf/PDF.php b/app/Utils/Traits/Pdf/PDF.php
index 31d1e529c706..dd8d2dab6c1f 100644
--- a/app/Utils/Traits/Pdf/PDF.php
+++ b/app/Utils/Traits/Pdf/PDF.php
@@ -20,7 +20,7 @@ class PDF extends FPDI
public function Footer()
{
$this->SetXY(0, -6);
-
+
$this->SetFont('Arial', 'I', 9);
$this->SetTextColor(135, 135, 135);
@@ -28,10 +28,10 @@ class PDF extends FPDI
$trans = ctrans('texts.pdf_page_info', ['current' => $this->PageNo(), 'total' => '{nb}']);
try {
- $trans = mb_convert_encoding($trans, 'ISO-8859-1', 'UTF-8');
+ $trans = mb_convert_encoding($trans, 'ISO-8859-1', 'UTF-8');
+ } catch(\Exception $e) {
}
- catch(\Exception $e){}
-
+
$this->Cell(0, 5, $trans, 0, 0, $this->text_alignment);
}
diff --git a/app/Utils/TranslationHelper.php b/app/Utils/TranslationHelper.php
index ad0f06d7b1df..6a9538e8161d 100644
--- a/app/Utils/TranslationHelper.php
+++ b/app/Utils/TranslationHelper.php
@@ -19,7 +19,7 @@ class TranslationHelper
{
// public static function getIndustries()
// {
-
+
// /** @var \Illuminate\Support\Collection<\App\Models\Currency> */
// $industries = app('industries');
@@ -32,7 +32,7 @@ class TranslationHelper
public static function getCountries()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Country> */
return app('countries');
@@ -40,7 +40,7 @@ class TranslationHelper
// public static function getPaymentTypes()
// {
-
+
// /** @var \Illuminate\Support\Collection<\App\Models\PaymentType> */
// // $payment_types = app('payment_types');
@@ -53,7 +53,7 @@ class TranslationHelper
// public static function getLanguages()
// {
-
+
// /** @var \Illuminate\Support\Collection<\App\Models\Language> */
// // $languages = app('languages');
@@ -66,7 +66,7 @@ class TranslationHelper
public static function getCurrencies()
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Currency> */
return app('currencies');
diff --git a/app/Utils/VendorHtmlEngine.php b/app/Utils/VendorHtmlEngine.php
index 1b2b435df2c2..3cb6996cbc3c 100644
--- a/app/Utils/VendorHtmlEngine.php
+++ b/app/Utils/VendorHtmlEngine.php
@@ -567,14 +567,14 @@ class VendorHtmlEngine
private function getCountryName(): string
{
-
+
/** @var \Illuminate\Support\Collection<\App\Models\Country> */
$countries = app('countries');
$country = $countries->first(function ($item) {
return $item->id == $this->settings->country_id;
});
-
+
return $country ? ctrans('texts.country_' . $country->name) : ' ';
}
diff --git a/composer.lock b/composer.lock
index 824caee0acdd..99bd45a9d6b3 100644
--- a/composer.lock
+++ b/composer.lock
@@ -535,29 +535,16 @@
},
{
"name": "aws/aws-sdk-php",
-<<<<<<< HEAD
- "version": "3.320.4",
+ "version": "3.320.5",
"source": {
"type": "git",
"url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "e6af3e760864d43a30d8b7deb4f9dc6a49a5f66a"
+ "reference": "afda5aefd59da90208d2f59427ce81e91535b1f2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/e6af3e760864d43a30d8b7deb4f9dc6a49a5f66a",
- "reference": "e6af3e760864d43a30d8b7deb4f9dc6a49a5f66a",
-=======
- "version": "3.315.1",
- "source": {
- "type": "git",
- "url": "https://github.com/aws/aws-sdk-php.git",
- "reference": "13871330833e167d098240dab74b8b069b9b07e3"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/13871330833e167d098240dab74b8b069b9b07e3",
- "reference": "13871330833e167d098240dab74b8b069b9b07e3",
->>>>>>> new_payment_flow
+ "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/afda5aefd59da90208d2f59427ce81e91535b1f2",
+ "reference": "afda5aefd59da90208d2f59427ce81e91535b1f2",
"shasum": ""
},
"require": {
@@ -640,15 +627,9 @@
"support": {
"forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80",
"issues": "https://github.com/aws/aws-sdk-php/issues",
-<<<<<<< HEAD
- "source": "https://github.com/aws/aws-sdk-php/tree/3.320.4"
+ "source": "https://github.com/aws/aws-sdk-php/tree/3.320.5"
},
- "time": "2024-08-20T18:20:32+00:00"
-=======
- "source": "https://github.com/aws/aws-sdk-php/tree/3.315.1"
- },
- "time": "2024-06-27T18:03:53+00:00"
->>>>>>> new_payment_flow
+ "time": "2024-08-21T18:14:31+00:00"
},
{
"name": "bacon/bacon-qr-code",
@@ -2541,7 +2522,6 @@
},
{
"name": "google/apiclient-services",
-<<<<<<< HEAD
"version": "v0.369.0",
"source": {
"type": "git",
@@ -2552,18 +2532,6 @@
"type": "zip",
"url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/002f610e4c3acf0636b4fb1f46314a2097e1c8b4",
"reference": "002f610e4c3acf0636b4fb1f46314a2097e1c8b4",
-=======
- "version": "v0.361.0",
- "source": {
- "type": "git",
- "url": "https://github.com/googleapis/google-api-php-client-services.git",
- "reference": "f90e9a059ce5a6076b4fc8571a4fac6564012782"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/f90e9a059ce5a6076b4fc8571a4fac6564012782",
- "reference": "f90e9a059ce5a6076b4fc8571a4fac6564012782",
->>>>>>> new_payment_flow
"shasum": ""
},
"require": {
@@ -2592,15 +2560,9 @@
],
"support": {
"issues": "https://github.com/googleapis/google-api-php-client-services/issues",
-<<<<<<< HEAD
"source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.369.0"
},
"time": "2024-08-14T20:31:16+00:00"
-=======
- "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.361.0"
- },
- "time": "2024-06-23T01:02:19+00:00"
->>>>>>> new_payment_flow
},
{
"name": "google/auth",
@@ -4589,7 +4551,6 @@
},
{
"name": "laravel/framework",
-<<<<<<< HEAD
"version": "v11.21.0",
"source": {
"type": "git",
@@ -4600,18 +4561,6 @@
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/9d9d36708d56665b12185493f684abce38ad2d30",
"reference": "9d9d36708d56665b12185493f684abce38ad2d30",
-=======
- "version": "v11.13.0",
- "source": {
- "type": "git",
- "url": "https://github.com/laravel/framework.git",
- "reference": "92deaa4f037ff100e36809443811301819a8cf84"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/laravel/framework/zipball/92deaa4f037ff100e36809443811301819a8cf84",
- "reference": "92deaa4f037ff100e36809443811301819a8cf84",
->>>>>>> new_payment_flow
"shasum": ""
},
"require": {
@@ -4804,11 +4753,7 @@
"issues": "https://github.com/laravel/framework/issues",
"source": "https://github.com/laravel/framework"
},
-<<<<<<< HEAD
"time": "2024-08-20T15:00:52+00:00"
-=======
- "time": "2024-06-27T09:04:50+00:00"
->>>>>>> new_payment_flow
},
{
"name": "laravel/pint",
@@ -6448,7 +6393,6 @@
},
{
"name": "mollie/mollie-api-php",
-<<<<<<< HEAD
"version": "v2.71.0",
"source": {
"type": "git",
@@ -6459,18 +6403,6 @@
"type": "zip",
"url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/dff324f0621ff134fbefffa42ee511833a58578f",
"reference": "dff324f0621ff134fbefffa42ee511833a58578f",
-=======
- "version": "v2.69.0",
- "source": {
- "type": "git",
- "url": "https://github.com/mollie/mollie-api-php.git",
- "reference": "9a53f8bd6c89ae3e62982921a2f9d8ed68f9900d"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/mollie/mollie-api-php/zipball/9a53f8bd6c89ae3e62982921a2f9d8ed68f9900d",
- "reference": "9a53f8bd6c89ae3e62982921a2f9d8ed68f9900d",
->>>>>>> new_payment_flow
"shasum": ""
},
"require": {
@@ -6547,103 +6479,9 @@
],
"support": {
"issues": "https://github.com/mollie/mollie-api-php/issues",
-<<<<<<< HEAD
"source": "https://github.com/mollie/mollie-api-php/tree/v2.71.0"
},
"time": "2024-07-17T08:02:14+00:00"
-=======
- "source": "https://github.com/mollie/mollie-api-php/tree/v2.69.0"
- },
- "time": "2024-06-24T11:52:46+00:00"
- },
- {
- "name": "moneyphp/money",
- "version": "v4.5.0",
- "source": {
- "type": "git",
- "url": "https://github.com/moneyphp/money.git",
- "reference": "a1daa7daf159b4044e3d0c34c41fe2be5860e850"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/moneyphp/money/zipball/a1daa7daf159b4044e3d0c34c41fe2be5860e850",
- "reference": "a1daa7daf159b4044e3d0c34c41fe2be5860e850",
- "shasum": ""
- },
- "require": {
- "ext-bcmath": "*",
- "ext-filter": "*",
- "ext-json": "*",
- "php": "~8.1.0 || ~8.2.0 || ~8.3.0"
- },
- "require-dev": {
- "cache/taggable-cache": "^1.1.0",
- "doctrine/coding-standard": "^12.0",
- "doctrine/instantiator": "^1.5.0 || ^2.0",
- "ext-gmp": "*",
- "ext-intl": "*",
- "florianv/exchanger": "^2.8.1",
- "florianv/swap": "^4.3.0",
- "moneyphp/crypto-currencies": "^1.1.0",
- "moneyphp/iso-currencies": "^3.4",
- "php-http/message": "^1.16.0",
- "php-http/mock-client": "^1.6.0",
- "phpbench/phpbench": "^1.2.5",
- "phpunit/phpunit": "^10.5.9",
- "psalm/plugin-phpunit": "^0.18.4",
- "psr/cache": "^1.0.1 || ^2.0 || ^3.0",
- "vimeo/psalm": "~5.20.0"
- },
- "suggest": {
- "ext-gmp": "Calculate without integer limits",
- "ext-intl": "Format Money objects with intl",
- "florianv/exchanger": "Exchange rates library for PHP",
- "florianv/swap": "Exchange rates library for PHP",
- "psr/cache-implementation": "Used for Currency caching"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Money\\": "src/"
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Mathias Verraes",
- "email": "mathias@verraes.net",
- "homepage": "http://verraes.net"
- },
- {
- "name": "Márk Sági-Kazár",
- "email": "mark.sagikazar@gmail.com"
- },
- {
- "name": "Frederik Bosch",
- "email": "f.bosch@genkgo.nl"
- }
- ],
- "description": "PHP implementation of Fowler's Money pattern",
- "homepage": "http://moneyphp.org",
- "keywords": [
- "Value Object",
- "money",
- "vo"
- ],
- "support": {
- "issues": "https://github.com/moneyphp/money/issues",
- "source": "https://github.com/moneyphp/money/tree/v4.5.0"
- },
- "time": "2024-02-15T19:47:21+00:00"
->>>>>>> new_payment_flow
},
{
"name": "monolog/monolog",
@@ -8444,7 +8282,6 @@
},
{
"name": "phpseclib/phpseclib",
-<<<<<<< HEAD
"version": "3.0.41",
"source": {
"type": "git",
@@ -8455,18 +8292,6 @@
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/621c73f7dcb310b61de34d1da4c4204e8ace6ceb",
"reference": "621c73f7dcb310b61de34d1da4c4204e8ace6ceb",
-=======
- "version": "3.0.39",
- "source": {
- "type": "git",
- "url": "https://github.com/phpseclib/phpseclib.git",
- "reference": "211ebc399c6e73c225a018435fe5ae209d1d1485"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/211ebc399c6e73c225a018435fe5ae209d1d1485",
- "reference": "211ebc399c6e73c225a018435fe5ae209d1d1485",
->>>>>>> new_payment_flow
"shasum": ""
},
"require": {
@@ -8547,11 +8372,7 @@
],
"support": {
"issues": "https://github.com/phpseclib/phpseclib/issues",
-<<<<<<< HEAD
"source": "https://github.com/phpseclib/phpseclib/tree/3.0.41"
-=======
- "source": "https://github.com/phpseclib/phpseclib/tree/3.0.39"
->>>>>>> new_payment_flow
},
"funding": [
{
@@ -8567,11 +8388,7 @@
"type": "tidelift"
}
],
-<<<<<<< HEAD
"time": "2024-08-12T00:13:54+00:00"
-=======
- "time": "2024-06-24T06:27:33+00:00"
->>>>>>> new_payment_flow
},
{
"name": "phpstan/phpdoc-parser",
@@ -9095,16 +8912,16 @@
},
{
"name": "psr/log",
- "version": "3.0.0",
+ "version": "3.0.1",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
+ "reference": "79dff0b268932c640297f5208d6298f71855c03e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
- "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/79dff0b268932c640297f5208d6298f71855c03e",
+ "reference": "79dff0b268932c640297f5208d6298f71855c03e",
"shasum": ""
},
"require": {
@@ -9139,9 +8956,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/3.0.0"
+ "source": "https://github.com/php-fig/log/tree/3.0.1"
},
- "time": "2021-07-14T16:46:02+00:00"
+ "time": "2024-08-21T13:31:24+00:00"
},
{
"name": "psr/simple-cache",
@@ -18599,7 +18416,6 @@
},
{
"name": "spatie/error-solutions",
-<<<<<<< HEAD
"version": "1.1.1",
"source": {
"type": "git",
@@ -18610,18 +18426,6 @@
"type": "zip",
"url": "https://api.github.com/repos/spatie/error-solutions/zipball/ae7393122eda72eed7cc4f176d1e96ea444f2d67",
"reference": "ae7393122eda72eed7cc4f176d1e96ea444f2d67",
-=======
- "version": "1.0.3",
- "source": {
- "type": "git",
- "url": "https://github.com/spatie/error-solutions.git",
- "reference": "55ea4117e0fde89d520883734ab9b71064c48876"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/spatie/error-solutions/zipball/55ea4117e0fde89d520883734ab9b71064c48876",
- "reference": "55ea4117e0fde89d520883734ab9b71064c48876",
->>>>>>> new_payment_flow
"shasum": ""
},
"require": {
@@ -18674,11 +18478,7 @@
],
"support": {
"issues": "https://github.com/spatie/error-solutions/issues",
-<<<<<<< HEAD
"source": "https://github.com/spatie/error-solutions/tree/1.1.1"
-=======
- "source": "https://github.com/spatie/error-solutions/tree/1.0.3"
->>>>>>> new_payment_flow
},
"funding": [
{
@@ -18686,11 +18486,7 @@
"type": "github"
}
],
-<<<<<<< HEAD
"time": "2024-07-25T11:06:04+00:00"
-=======
- "time": "2024-06-27T12:22:48+00:00"
->>>>>>> new_payment_flow
},
{
"name": "spatie/flare-client-php",
diff --git a/package-lock.json b/package-lock.json
index 4cab29e54b90..19ed6616d33e 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -4,6 +4,7 @@
"requires": true,
"packages": {
"": {
+ "name": "invoiceninja",
"dependencies": {
"@invoiceninja/simple-card": "^0.0.2",
"axios": "^0.25",
@@ -64,11 +65,12 @@
}
},
"node_modules/@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"dependencies": {
- "@babel/highlight": "^7.18.6"
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
@@ -113,13 +115,13 @@
}
},
"node_modules/@babel/generator": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz",
- "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==",
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz",
+ "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
"dependencies": {
- "@babel/types": "^7.21.3",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
+ "@babel/types": "^7.25.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
},
"engines": {
@@ -127,13 +129,13 @@
}
},
"node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"dependencies": {
- "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/trace-mapping": "^0.3.24"
},
"engines": {
"node": ">=6.0.0"
@@ -408,17 +410,17 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+ "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==",
"engines": {
"node": ">=6.9.0"
}
@@ -459,22 +461,26 @@
}
},
"node_modules/@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"dependencies": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz",
- "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==",
+ "version": "7.25.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz",
+ "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+ "dependencies": {
+ "@babel/types": "^7.25.2"
+ },
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -1553,32 +1559,29 @@
}
},
"node_modules/@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
+ "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
"dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.25.0",
+ "@babel/types": "^7.25.0"
},
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/traverse": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz",
- "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==",
+ "version": "7.25.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz",
+ "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==",
"dependencies": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.21.3",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.3",
- "@babel/types": "^7.21.3",
- "debug": "^4.1.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.0",
+ "@babel/parser": "^7.25.3",
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.2",
+ "debug": "^4.3.1",
"globals": "^11.1.0"
},
"engines": {
@@ -1586,12 +1589,12 @@
}
},
"node_modules/@babel/types": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz",
- "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==",
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
+ "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
"dependencies": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/helper-string-parser": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
},
"engines": {
@@ -1608,9 +1611,9 @@
}
},
"node_modules/@cypress/request": {
- "version": "2.88.11",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz",
- "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==",
+ "version": "2.88.12",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz",
+ "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==",
"dev": true,
"dependencies": {
"aws-sign2": "~0.7.0",
@@ -1628,7 +1631,7 @@
"performance-now": "^2.1.0",
"qs": "~6.10.3",
"safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
+ "tough-cookie": "^4.1.3",
"tunnel-agent": "^0.6.0",
"uuid": "^8.3.2"
},
@@ -2284,9 +2287,9 @@
}
},
"node_modules/@tailwindcss/typography": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
- "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
+ "version": "0.5.14",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.14.tgz",
+ "integrity": "sha512-ZvOCjUbsJBjL9CxQBn+VEnFpouzuKhxh2dH8xMIWHILL+HfOYtlAkWcyoon8LlzE53d2Yo6YO6pahKKNW3q1YQ==",
"dev": true,
"dependencies": {
"lodash.castarray": "^4.4.0",
@@ -2517,9 +2520,9 @@
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="
},
"node_modules/@types/node": {
- "version": "14.18.40",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.40.tgz",
- "integrity": "sha512-pGteXO/JQX7wPxGR8lyT+doqjMa7XvlVowwrDwLfX92k5SdLkk4cwC7CYSLBxrenw/R5oQwKioVIak7ZgplM3g=="
+ "version": "16.18.105",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.105.tgz",
+ "integrity": "sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA=="
},
"node_modules/@types/parse-json": {
"version": "4.0.0",
@@ -2584,9 +2587,9 @@
"integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug=="
},
"node_modules/@types/ws": {
- "version": "8.5.4",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
- "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
+ "version": "8.5.12",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
+ "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
"dependencies": {
"@types/node": "*"
}
@@ -3004,14 +3007,13 @@
}
},
"node_modules/asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
"dependencies": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
+ "minimalistic-assert": "^1.0.0"
}
},
"node_modules/asn1.js/node_modules/bn.js": {
@@ -3126,9 +3128,9 @@
}
},
"node_modules/aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz",
+ "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==",
"dev": true
},
"node_modules/axios": {
@@ -3273,12 +3275,12 @@
"integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
},
"node_modules/body-parser": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
- "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"dependencies": {
"bytes": "3.1.2",
- "content-type": "~1.0.4",
+ "content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
@@ -3286,7 +3288,7 @@
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
- "raw-body": "2.5.1",
+ "raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
@@ -3348,11 +3350,11 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -3407,32 +3409,35 @@
}
},
"node_modules/browserify-sign": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz",
+ "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==",
"dependencies": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
+ "elliptic": "^6.5.5",
+ "hash-base": "~3.0",
"inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
- }
- },
- "node_modules/browserify-sign/node_modules/readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
- "dependencies": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "parse-asn1": "^5.1.7",
+ "readable-stream": "^2.3.8",
+ "safe-buffer": "^5.2.1"
},
"engines": {
- "node": ">= 6"
+ "node": ">= 0.12"
+ }
+ },
+ "node_modules/browserify-sign/node_modules/hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/browserify-zlib": {
@@ -3853,9 +3858,9 @@
}
},
"node_modules/commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
"dev": true,
"engines": {
"node": ">= 6"
@@ -4001,9 +4006,9 @@
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
},
"node_modules/cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==",
"engines": {
"node": ">= 0.6"
}
@@ -4203,17 +4208,6 @@
"webpack": "^4.27.0 || ^5.0.0"
}
},
- "node_modules/css-loader/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/css-loader/node_modules/schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -4232,12 +4226,9 @@
}
},
"node_modules/css-loader/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -4245,11 +4236,6 @@
"node": ">=10"
}
},
- "node_modules/css-loader/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/css-select": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz",
@@ -4398,15 +4384,15 @@
}
},
"node_modules/cypress": {
- "version": "12.8.1",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.8.1.tgz",
- "integrity": "sha512-lIFbKdaSYAOarNLHNFa2aPZu6YSF+8UY4VRXMxJrFUnk6RvfG0AWsZ7/qle/aIz30TNUD4aOihz2ZgS4vuQVSA==",
+ "version": "12.17.4",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz",
+ "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
- "@cypress/request": "^2.88.10",
+ "@cypress/request": "2.88.12",
"@cypress/xvfb": "^1.2.4",
- "@types/node": "^14.14.31",
+ "@types/node": "^16.18.39",
"@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2",
"arch": "^2.2.0",
@@ -4418,7 +4404,7 @@
"check-more-types": "^2.24.0",
"cli-cursor": "^3.1.0",
"cli-table3": "~0.6.1",
- "commander": "^5.1.0",
+ "commander": "^6.2.1",
"common-tags": "^1.8.0",
"dayjs": "^1.10.4",
"debug": "^4.3.4",
@@ -4436,12 +4422,13 @@
"listr2": "^3.8.3",
"lodash": "^4.17.21",
"log-symbols": "^4.0.0",
- "minimist": "^1.2.6",
+ "minimist": "^1.2.8",
"ospath": "^1.2.2",
"pretty-bytes": "^5.6.0",
+ "process": "^0.11.10",
"proxy-from-env": "1.0.0",
"request-progress": "^3.0.0",
- "semver": "^7.3.2",
+ "semver": "^7.5.3",
"supports-color": "^8.1.1",
"tmp": "~0.2.1",
"untildify": "^4.0.0",
@@ -4524,26 +4511,11 @@
"node": ">=8"
}
},
- "node_modules/cypress/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/cypress/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"dev": true,
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
"bin": {
"semver": "bin/semver.js"
},
@@ -4566,12 +4538,6 @@
"url": "https://github.com/chalk/supports-color?sponsor=1"
}
},
- "node_modules/cypress/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
- },
"node_modules/dashdash": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
@@ -4908,9 +4874,9 @@
"integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA=="
},
"node_modules/elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "version": "6.5.7",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz",
+ "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==",
"dependencies": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -5200,16 +5166,16 @@
}
},
"node_modules/express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "version": "4.19.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"dependencies": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.1",
+ "body-parser": "1.20.2",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.5.0",
+ "cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
@@ -5332,6 +5298,11 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
+ "node_modules/fast-uri": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz",
+ "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw=="
+ },
"node_modules/fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -5428,9 +5399,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dependencies": {
"to-regex-range": "^5.0.1"
},
@@ -5497,9 +5468,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "version": "1.15.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==",
"funding": [
{
"type": "individual",
@@ -5610,9 +5581,9 @@
}
},
"node_modules/fs-monkey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
- "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
+ "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg=="
},
"node_modules/fs.realpath": {
"version": "1.0.0",
@@ -6859,24 +6830,10 @@
"node": ">=8"
}
},
- "node_modules/laravel-mix/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/laravel-mix/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -6895,11 +6852,6 @@
"node": ">=8"
}
},
- "node_modules/laravel-mix/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/laravel-vite-plugin": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/laravel-vite-plugin/-/laravel-vite-plugin-0.8.0.tgz",
@@ -7296,11 +7248,11 @@
}
},
"node_modules/memfs": {
- "version": "3.4.13",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz",
- "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
+ "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
"dependencies": {
- "fs-monkey": "^1.0.3"
+ "fs-monkey": "^1.0.4"
},
"engines": {
"node": ">= 4.0.0"
@@ -7333,11 +7285,11 @@
}
},
"node_modules/micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"dependencies": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
},
"engines": {
@@ -7611,24 +7563,10 @@
"which": "^2.0.2"
}
},
- "node_modules/node-notifier/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/node-notifier/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -7636,11 +7574,6 @@
"node": ">=10"
}
},
- "node_modules/node-notifier/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/node-releases": {
"version": "2.0.14",
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
@@ -7890,15 +7823,31 @@
}
},
"node_modules/parse-asn1": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz",
+ "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==",
"dependencies": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
+ "asn1.js": "^4.10.1",
+ "browserify-aes": "^1.2.0",
+ "evp_bytestokey": "^1.0.3",
+ "hash-base": "~3.0",
+ "pbkdf2": "^3.1.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "engines": {
+ "node": ">= 0.10"
+ }
+ },
+ "node_modules/parse-asn1/node_modules/hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==",
+ "dependencies": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=4"
}
},
"node_modules/parse-json": {
@@ -8279,24 +8228,10 @@
"webpack": "^5.0.0"
}
},
- "node_modules/postcss-loader/node_modules/lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dependencies": {
- "yallist": "^4.0.0"
- },
- "engines": {
- "node": ">=10"
- }
- },
"node_modules/postcss-loader/node_modules/semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dependencies": {
- "lru-cache": "^6.0.0"
- },
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
"bin": {
"semver": "bin/semver.js"
},
@@ -8304,11 +8239,6 @@
"node": ">=10"
}
},
- "node_modules/postcss-loader/node_modules/yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
- },
"node_modules/postcss-merge-longhand": {
"version": "5.1.7",
"resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.7.tgz",
@@ -8815,15 +8745,6 @@
"purgecss": "bin/purgecss.js"
}
},
- "node_modules/purgecss/node_modules/commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true,
- "engines": {
- "node": ">= 6"
- }
- },
"node_modules/qs": {
"version": "6.10.4",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.10.4.tgz",
@@ -8856,6 +8777,12 @@
"node": ">=0.4.x"
}
},
+ "node_modules/querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true
+ },
"node_modules/queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -8901,9 +8828,9 @@
}
},
"node_modules/raw-body": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
- "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"dependencies": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
@@ -9400,9 +9327,9 @@
}
},
"node_modules/semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
"bin": {
"semver": "bin/semver.js"
}
@@ -9765,9 +9692,9 @@
}
},
"node_modules/sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
+ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
"dev": true,
"dependencies": {
"asn1": "~0.2.3",
@@ -10115,9 +10042,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
- "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
+ "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
"dev": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
@@ -10128,7 +10055,7 @@
"fast-glob": "^3.3.0",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
- "jiti": "^1.19.1",
+ "jiti": "^1.21.0",
"lilconfig": "^2.1.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
@@ -10412,27 +10339,38 @@
}
},
"node_modules/tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
"dev": true,
"dependencies": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
},
"engines": {
- "node": ">=0.8"
+ "node": ">=6"
}
},
"node_modules/tough-cookie/node_modules/punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
"dev": true,
"engines": {
"node": ">=6"
}
},
+ "node_modules/tough-cookie/node_modules/universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
+ "dev": true,
+ "engines": {
+ "node": ">= 4.0.0"
+ }
+ },
"node_modules/ts-interface-checker": {
"version": "0.1.13",
"resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",
@@ -10605,6 +10543,16 @@
"querystring": "0.2.0"
}
},
+ "node_modules/url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "dependencies": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
"node_modules/url/node_modules/punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
@@ -10673,9 +10621,9 @@
"dev": true
},
"node_modules/vite": {
- "version": "4.4.9",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
- "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz",
+ "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==",
"dev": true,
"dependencies": {
"esbuild": "^0.18.10",
@@ -10741,9 +10689,9 @@
}
},
"node_modules/vite-plugin-static-copy": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.0.tgz",
- "integrity": "sha512-2HpNbHfDt8SDy393AGXh9llHkc8FJMQkI8s3T5WsH3SWLMO+f5cFIyPErl4yGKU9Uh3Vaqsd4lHZYTf042fQ2A==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.1.tgz",
+ "integrity": "sha512-9h3iaVs0bqnqZOM5YHJXGHqdC5VAVlTZ2ARYsuNpzhEJUHmFqXY7dAK4ZFpjEQ4WLFKcaN8yWbczr81n01U4sQ==",
"dev": true,
"dependencies": {
"chokidar": "^3.5.3",
@@ -10755,7 +10703,7 @@
"node": "^14.18.0 || >=16.0.0"
},
"peerDependencies": {
- "vite": "^3.0.0 || ^4.0.0"
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0"
}
},
"node_modules/vite-plugin-static-copy/node_modules/fs-extra": {
@@ -10811,9 +10759,9 @@
}
},
"node_modules/vue-template-compiler": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
- "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
"dev": true,
"dependencies": {
"de-indent": "^1.0.2",
@@ -10941,9 +10889,9 @@
}
},
"node_modules/webpack-dev-middleware": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
- "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz",
+ "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==",
"dependencies": {
"colorette": "^2.0.10",
"memfs": "^3.4.3",
@@ -10963,14 +10911,14 @@
}
},
"node_modules/webpack-dev-middleware/node_modules/ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"dependencies": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
},
"funding": {
"type": "github",
@@ -10994,14 +10942,14 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"node_modules/webpack-dev-middleware/node_modules/schema-utils": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
- "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
"dependencies": {
"@types/json-schema": "^7.0.9",
- "ajv": "^8.8.0",
+ "ajv": "^8.9.0",
"ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.0.0"
+ "ajv-keywords": "^5.1.0"
},
"engines": {
"node": ">= 12.13.0"
@@ -11012,9 +10960,9 @@
}
},
"node_modules/webpack-dev-server": {
- "version": "4.13.1",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.1.tgz",
- "integrity": "sha512-5tWg00bnWbYgkN+pd5yISQKDejRBYGEw15RaEEslH+zdbNDxxaZvEAO2WulaSaFKb5n3YG8JXsGaDsut1D0xdA==",
+ "version": "4.15.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz",
+ "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==",
"dependencies": {
"@types/bonjour": "^3.5.9",
"@types/connect-history-api-fallback": "^1.3.5",
@@ -11022,7 +10970,7 @@
"@types/serve-index": "^1.9.1",
"@types/serve-static": "^1.13.10",
"@types/sockjs": "^0.3.33",
- "@types/ws": "^8.5.1",
+ "@types/ws": "^8.5.5",
"ansi-html-community": "^0.0.8",
"bonjour-service": "^1.0.11",
"chokidar": "^3.5.3",
@@ -11044,7 +10992,7 @@
"serve-index": "^1.9.1",
"sockjs": "^0.3.24",
"spdy": "^4.0.2",
- "webpack-dev-middleware": "^5.3.1",
+ "webpack-dev-middleware": "^5.3.4",
"ws": "^8.13.0"
},
"bin": {
@@ -11424,9 +11372,9 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"node_modules/ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"engines": {
"node": ">=10.0.0"
},
@@ -11525,11 +11473,12 @@
}
},
"@babel/code-frame": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz",
- "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz",
+ "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==",
"requires": {
- "@babel/highlight": "^7.18.6"
+ "@babel/highlight": "^7.24.7",
+ "picocolors": "^1.0.0"
}
},
"@babel/compat-data": {
@@ -11561,24 +11510,24 @@
}
},
"@babel/generator": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.21.3.tgz",
- "integrity": "sha512-QS3iR1GYC/YGUnW7IdggFeN5c1poPUurnGttOV/bZgPGV+izC/D8HnD6DLwod0fsatNyVn1G3EVWMYIF0nHbeA==",
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz",
+ "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==",
"requires": {
- "@babel/types": "^7.21.3",
- "@jridgewell/gen-mapping": "^0.3.2",
- "@jridgewell/trace-mapping": "^0.3.17",
+ "@babel/types": "^7.25.0",
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.25",
"jsesc": "^2.5.1"
},
"dependencies": {
"@jridgewell/gen-mapping": {
- "version": "0.3.2",
- "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz",
- "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz",
+ "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==",
"requires": {
- "@jridgewell/set-array": "^1.0.1",
+ "@jridgewell/set-array": "^1.2.1",
"@jridgewell/sourcemap-codec": "^1.4.10",
- "@jridgewell/trace-mapping": "^0.3.9"
+ "@jridgewell/trace-mapping": "^0.3.24"
}
}
}
@@ -11779,14 +11728,14 @@
}
},
"@babel/helper-string-parser": {
- "version": "7.19.4",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
- "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
+ "version": "7.24.8",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz",
+ "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ=="
},
"@babel/helper-validator-identifier": {
- "version": "7.19.1",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz",
- "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w=="
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz",
+ "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w=="
},
"@babel/helper-validator-option": {
"version": "7.21.0",
@@ -11815,19 +11764,23 @@
}
},
"@babel/highlight": {
- "version": "7.18.6",
- "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz",
- "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==",
+ "version": "7.24.7",
+ "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz",
+ "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==",
"requires": {
- "@babel/helper-validator-identifier": "^7.18.6",
- "chalk": "^2.0.0",
- "js-tokens": "^4.0.0"
+ "@babel/helper-validator-identifier": "^7.24.7",
+ "chalk": "^2.4.2",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.0.0"
}
},
"@babel/parser": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz",
- "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ=="
+ "version": "7.25.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz",
+ "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==",
+ "requires": {
+ "@babel/types": "^7.25.2"
+ }
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.18.6",
@@ -12529,39 +12482,36 @@
}
},
"@babel/template": {
- "version": "7.20.7",
- "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz",
- "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==",
+ "version": "7.25.0",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz",
+ "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==",
"requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/parser": "^7.20.7",
- "@babel/types": "^7.20.7"
+ "@babel/code-frame": "^7.24.7",
+ "@babel/parser": "^7.25.0",
+ "@babel/types": "^7.25.0"
}
},
"@babel/traverse": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.21.3.tgz",
- "integrity": "sha512-XLyopNeaTancVitYZe2MlUEvgKb6YVVPXzofHgqHijCImG33b/uTurMS488ht/Hbsb2XK3U2BnSTxKVNGV3nGQ==",
+ "version": "7.25.3",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz",
+ "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==",
"requires": {
- "@babel/code-frame": "^7.18.6",
- "@babel/generator": "^7.21.3",
- "@babel/helper-environment-visitor": "^7.18.9",
- "@babel/helper-function-name": "^7.21.0",
- "@babel/helper-hoist-variables": "^7.18.6",
- "@babel/helper-split-export-declaration": "^7.18.6",
- "@babel/parser": "^7.21.3",
- "@babel/types": "^7.21.3",
- "debug": "^4.1.0",
+ "@babel/code-frame": "^7.24.7",
+ "@babel/generator": "^7.25.0",
+ "@babel/parser": "^7.25.3",
+ "@babel/template": "^7.25.0",
+ "@babel/types": "^7.25.2",
+ "debug": "^4.3.1",
"globals": "^11.1.0"
}
},
"@babel/types": {
- "version": "7.21.3",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz",
- "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==",
+ "version": "7.25.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz",
+ "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==",
"requires": {
- "@babel/helper-string-parser": "^7.19.4",
- "@babel/helper-validator-identifier": "^7.19.1",
+ "@babel/helper-string-parser": "^7.24.8",
+ "@babel/helper-validator-identifier": "^7.24.7",
"to-fast-properties": "^2.0.0"
}
},
@@ -12572,9 +12522,9 @@
"optional": true
},
"@cypress/request": {
- "version": "2.88.11",
- "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.11.tgz",
- "integrity": "sha512-M83/wfQ1EkspjkE2lNWNV5ui2Cv7UCv1swW1DqljahbzLVWltcsexQh8jYtuS/vzFXP+HySntGM83ZXA9fn17w==",
+ "version": "2.88.12",
+ "resolved": "https://registry.npmjs.org/@cypress/request/-/request-2.88.12.tgz",
+ "integrity": "sha512-tOn+0mDZxASFM+cuAP9szGUGPI1HwWVSvdzm7V4cCsPdFTx6qMj29CwaQmRAMIEhORIUBFBsYROYJcveK4uOjA==",
"dev": true,
"requires": {
"aws-sign2": "~0.7.0",
@@ -12592,7 +12542,7 @@
"performance-now": "^2.1.0",
"qs": "~6.10.3",
"safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
+ "tough-cookie": "^4.1.3",
"tunnel-agent": "^0.6.0",
"uuid": "^8.3.2"
}
@@ -12984,9 +12934,9 @@
"requires": {}
},
"@tailwindcss/typography": {
- "version": "0.5.10",
- "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.10.tgz",
- "integrity": "sha512-Pe8BuPJQJd3FfRnm6H0ulKIGoMEQS+Vq01R6M5aCrFB/ccR/shT+0kXLjouGC1gFLm9hopTFN+DMP0pfwRWzPw==",
+ "version": "0.5.14",
+ "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.14.tgz",
+ "integrity": "sha512-ZvOCjUbsJBjL9CxQBn+VEnFpouzuKhxh2dH8xMIWHILL+HfOYtlAkWcyoon8LlzE53d2Yo6YO6pahKKNW3q1YQ==",
"dev": true,
"requires": {
"lodash.castarray": "^4.4.0",
@@ -13210,9 +13160,9 @@
"integrity": "sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA=="
},
"@types/node": {
- "version": "14.18.40",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-14.18.40.tgz",
- "integrity": "sha512-pGteXO/JQX7wPxGR8lyT+doqjMa7XvlVowwrDwLfX92k5SdLkk4cwC7CYSLBxrenw/R5oQwKioVIak7ZgplM3g=="
+ "version": "16.18.105",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.105.tgz",
+ "integrity": "sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA=="
},
"@types/parse-json": {
"version": "4.0.0",
@@ -13277,9 +13227,9 @@
"integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug=="
},
"@types/ws": {
- "version": "8.5.4",
- "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.4.tgz",
- "integrity": "sha512-zdQDHKUgcX/zBc4GrwsE/7dVdAD8JR4EuiAXiiUhhfyIJXXb2+PrGshFyeXWQPMmmZ2XxgaqclgpIC7eTXc1mg==",
+ "version": "8.5.12",
+ "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz",
+ "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==",
"requires": {
"@types/node": "*"
}
@@ -13614,14 +13564,13 @@
}
},
"asn1.js": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
- "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+ "version": "4.10.1",
+ "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-4.10.1.tgz",
+ "integrity": "sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==",
"requires": {
"bn.js": "^4.0.0",
"inherits": "^2.0.1",
- "minimalistic-assert": "^1.0.0",
- "safer-buffer": "^2.1.0"
+ "minimalistic-assert": "^1.0.0"
},
"dependencies": {
"bn.js": {
@@ -13705,9 +13654,9 @@
"dev": true
},
"aws4": {
- "version": "1.12.0",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz",
- "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==",
+ "version": "1.13.1",
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.13.1.tgz",
+ "integrity": "sha512-u5w79Rd7SU4JaIlA/zFqG+gOiuq25q5VLyZ8E+ijJeILuTxVzZgp2CaGw/UTw6pXYN9XMO9yiqj/nEHmhTG5CA==",
"dev": true
},
"axios": {
@@ -13815,12 +13764,12 @@
"integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ=="
},
"body-parser": {
- "version": "1.20.1",
- "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz",
- "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==",
+ "version": "1.20.2",
+ "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz",
+ "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==",
"requires": {
"bytes": "3.1.2",
- "content-type": "~1.0.4",
+ "content-type": "~1.0.5",
"debug": "2.6.9",
"depd": "2.0.0",
"destroy": "1.2.0",
@@ -13828,7 +13777,7 @@
"iconv-lite": "0.4.24",
"on-finished": "2.4.1",
"qs": "6.11.0",
- "raw-body": "2.5.1",
+ "raw-body": "2.5.2",
"type-is": "~1.6.18",
"unpipe": "1.0.0"
},
@@ -13882,11 +13831,11 @@
}
},
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"requires": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
}
},
"brorand": {
@@ -13938,29 +13887,29 @@
}
},
"browserify-sign": {
- "version": "4.2.1",
- "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
- "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.3.tgz",
+ "integrity": "sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==",
"requires": {
- "bn.js": "^5.1.1",
- "browserify-rsa": "^4.0.1",
+ "bn.js": "^5.2.1",
+ "browserify-rsa": "^4.1.0",
"create-hash": "^1.2.0",
"create-hmac": "^1.1.7",
- "elliptic": "^6.5.3",
+ "elliptic": "^6.5.5",
+ "hash-base": "~3.0",
"inherits": "^2.0.4",
- "parse-asn1": "^5.1.5",
- "readable-stream": "^3.6.0",
- "safe-buffer": "^5.2.0"
+ "parse-asn1": "^5.1.7",
+ "readable-stream": "^2.3.8",
+ "safe-buffer": "^5.2.1"
},
"dependencies": {
- "readable-stream": {
- "version": "3.6.2",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
- "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==",
"requires": {
- "inherits": "^2.0.3",
- "string_decoder": "^1.1.1",
- "util-deprecate": "^1.0.1"
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
}
}
}
@@ -14256,9 +14205,9 @@
}
},
"commander": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz",
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
+ "version": "6.2.1",
+ "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
+ "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
"dev": true
},
"common-tags": {
@@ -14378,9 +14327,9 @@
"integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
},
"cookie": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz",
- "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw=="
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz",
+ "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw=="
},
"cookie-signature": {
"version": "1.0.6",
@@ -14533,14 +14482,6 @@
"semver": "^7.3.5"
},
"dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"schema-utils": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz",
@@ -14552,17 +14493,9 @@
}
},
"semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="
}
}
},
@@ -14668,14 +14601,14 @@
}
},
"cypress": {
- "version": "12.8.1",
- "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.8.1.tgz",
- "integrity": "sha512-lIFbKdaSYAOarNLHNFa2aPZu6YSF+8UY4VRXMxJrFUnk6RvfG0AWsZ7/qle/aIz30TNUD4aOihz2ZgS4vuQVSA==",
+ "version": "12.17.4",
+ "resolved": "https://registry.npmjs.org/cypress/-/cypress-12.17.4.tgz",
+ "integrity": "sha512-gAN8Pmns9MA5eCDFSDJXWKUpaL3IDd89N9TtIupjYnzLSmlpVr+ZR+vb4U/qaMp+lB6tBvAmt7504c3Z4RU5KQ==",
"dev": true,
"requires": {
- "@cypress/request": "^2.88.10",
+ "@cypress/request": "2.88.12",
"@cypress/xvfb": "^1.2.4",
- "@types/node": "^14.14.31",
+ "@types/node": "^16.18.39",
"@types/sinonjs__fake-timers": "8.1.1",
"@types/sizzle": "^2.3.2",
"arch": "^2.2.0",
@@ -14687,7 +14620,7 @@
"check-more-types": "^2.24.0",
"cli-cursor": "^3.1.0",
"cli-table3": "~0.6.1",
- "commander": "^5.1.0",
+ "commander": "^6.2.1",
"common-tags": "^1.8.0",
"dayjs": "^1.10.4",
"debug": "^4.3.4",
@@ -14705,12 +14638,13 @@
"listr2": "^3.8.3",
"lodash": "^4.17.21",
"log-symbols": "^4.0.0",
- "minimist": "^1.2.6",
+ "minimist": "^1.2.8",
"ospath": "^1.2.2",
"pretty-bytes": "^5.6.0",
+ "process": "^0.11.10",
"proxy-from-env": "1.0.0",
"request-progress": "^3.0.0",
- "semver": "^7.3.2",
+ "semver": "^7.5.3",
"supports-color": "^8.1.1",
"tmp": "~0.2.1",
"untildify": "^4.0.0",
@@ -14768,23 +14702,11 @@
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "dev": true,
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "dev": true,
- "requires": {
- "lru-cache": "^6.0.0"
- }
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==",
+ "dev": true
},
"supports-color": {
"version": "8.1.1",
@@ -14794,12 +14716,6 @@
"requires": {
"has-flag": "^4.0.0"
}
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
- "dev": true
}
}
},
@@ -15062,9 +14978,9 @@
"integrity": "sha512-+2OAGjUx68xElQhydpcbqH50hE8Vs2K6TkAeLhICYfndb67CVH0UsZaijmRUE3rHlIxU1u0jxwhgVe6fK3YANA=="
},
"elliptic": {
- "version": "6.5.4",
- "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
- "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+ "version": "6.5.7",
+ "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.7.tgz",
+ "integrity": "sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==",
"requires": {
"bn.js": "^4.11.9",
"brorand": "^1.1.0",
@@ -15288,16 +15204,16 @@
}
},
"express": {
- "version": "4.18.2",
- "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz",
- "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==",
+ "version": "4.19.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz",
+ "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==",
"requires": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
- "body-parser": "1.20.1",
+ "body-parser": "1.20.2",
"content-disposition": "0.5.4",
"content-type": "~1.0.4",
- "cookie": "0.5.0",
+ "cookie": "0.6.0",
"cookie-signature": "1.0.6",
"debug": "2.6.9",
"depd": "2.0.0",
@@ -15399,6 +15315,11 @@
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw=="
},
+ "fast-uri": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz",
+ "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw=="
+ },
"fastest-levenshtein": {
"version": "1.0.16",
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
@@ -15465,9 +15386,9 @@
"integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg=="
},
"fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"requires": {
"to-regex-range": "^5.0.1"
}
@@ -15521,9 +15442,9 @@
}
},
"follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
+ "version": "1.15.6",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz",
+ "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA=="
},
"foreground-child": {
"version": "3.1.1",
@@ -15588,9 +15509,9 @@
}
},
"fs-monkey": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz",
- "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q=="
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.6.tgz",
+ "integrity": "sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg=="
},
"fs.realpath": {
"version": "1.0.0",
@@ -16477,21 +16398,10 @@
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="
},
"supports-color": {
"version": "7.2.0",
@@ -16500,11 +16410,6 @@
"requires": {
"has-flag": "^4.0.0"
}
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
}
}
},
@@ -16819,11 +16724,11 @@
"integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ=="
},
"memfs": {
- "version": "3.4.13",
- "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.13.tgz",
- "integrity": "sha512-omTM41g3Skpvx5dSYeZIbXKcXoAVc/AoMNwn9TKx++L/gaen/+4TTttmu8ZSch5vfVJ8uJvGbroTsIlslRg6lg==",
+ "version": "3.5.3",
+ "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz",
+ "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==",
"requires": {
- "fs-monkey": "^1.0.3"
+ "fs-monkey": "^1.0.4"
}
},
"merge-descriptors": {
@@ -16847,11 +16752,11 @@
"integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w=="
},
"micromatch": {
- "version": "4.0.5",
- "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz",
- "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==",
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",
+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",
"requires": {
- "braces": "^3.0.2",
+ "braces": "^3.0.3",
"picomatch": "^2.3.1"
}
},
@@ -17060,26 +16965,10 @@
"which": "^2.0.2"
},
"dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="
}
}
},
@@ -17257,15 +17146,27 @@
}
},
"parse-asn1": {
- "version": "5.1.6",
- "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
- "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+ "version": "5.1.7",
+ "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.7.tgz",
+ "integrity": "sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==",
"requires": {
- "asn1.js": "^5.2.0",
- "browserify-aes": "^1.0.0",
- "evp_bytestokey": "^1.0.0",
- "pbkdf2": "^3.0.3",
- "safe-buffer": "^5.1.1"
+ "asn1.js": "^4.10.1",
+ "browserify-aes": "^1.2.0",
+ "evp_bytestokey": "^1.0.3",
+ "hash-base": "~3.0",
+ "pbkdf2": "^3.1.2",
+ "safe-buffer": "^5.2.1"
+ },
+ "dependencies": {
+ "hash-base": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
+ "integrity": "sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==",
+ "requires": {
+ "inherits": "^2.0.1",
+ "safe-buffer": "^5.0.1"
+ }
+ }
}
},
"parse-json": {
@@ -17502,26 +17403,10 @@
"semver": "^7.3.5"
},
"dependencies": {
- "lru-cache": {
- "version": "6.0.0",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
- "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
- "requires": {
- "yallist": "^4.0.0"
- }
- },
"semver": {
- "version": "7.3.8",
- "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
- "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
- "requires": {
- "lru-cache": "^6.0.0"
- }
- },
- "yallist": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
- "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
+ "version": "7.6.3",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz",
+ "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A=="
}
}
},
@@ -17854,14 +17739,6 @@
"glob": "^7.0.0",
"postcss": "^8.2.1",
"postcss-selector-parser": "^6.0.2"
- },
- "dependencies": {
- "commander": {
- "version": "6.2.1",
- "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
- "integrity": "sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==",
- "dev": true
- }
}
},
"qs": {
@@ -17883,6 +17760,12 @@
"resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
"integrity": "sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA=="
},
+ "querystringify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+ "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+ "dev": true
+ },
"queue-microtask": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",
@@ -17911,9 +17794,9 @@
"integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg=="
},
"raw-body": {
- "version": "2.5.1",
- "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz",
- "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==",
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz",
+ "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==",
"requires": {
"bytes": "3.1.2",
"http-errors": "2.0.0",
@@ -18253,9 +18136,9 @@
}
},
"semver": {
- "version": "6.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
- "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw=="
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA=="
},
"send": {
"version": "0.18.0",
@@ -18562,9 +18445,9 @@
}
},
"sshpk": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz",
- "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==",
+ "version": "1.18.0",
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz",
+ "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==",
"dev": true,
"requires": {
"asn1": "~0.2.3",
@@ -18810,9 +18693,9 @@
}
},
"tailwindcss": {
- "version": "3.4.1",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz",
- "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==",
+ "version": "3.4.10",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz",
+ "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==",
"dev": true,
"requires": {
"@alloc/quick-lru": "^5.2.0",
@@ -18823,7 +18706,7 @@
"fast-glob": "^3.3.0",
"glob-parent": "^6.0.2",
"is-glob": "^4.0.3",
- "jiti": "^1.19.1",
+ "jiti": "^1.21.0",
"lilconfig": "^2.1.0",
"micromatch": "^4.0.5",
"normalize-path": "^3.0.0",
@@ -19007,19 +18890,27 @@
"integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA=="
},
"tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
+ "version": "4.1.4",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz",
+ "integrity": "sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==",
"dev": true,
"requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
+ "psl": "^1.1.33",
+ "punycode": "^2.1.1",
+ "universalify": "^0.2.0",
+ "url-parse": "^1.5.3"
},
"dependencies": {
"punycode": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
- "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true
+ },
+ "universalify": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz",
+ "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==",
"dev": true
}
}
@@ -19149,6 +19040,16 @@
}
}
},
+ "url-parse": {
+ "version": "1.5.10",
+ "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz",
+ "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==",
+ "dev": true,
+ "requires": {
+ "querystringify": "^2.1.1",
+ "requires-port": "^1.0.0"
+ }
+ },
"util": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
@@ -19204,9 +19105,9 @@
}
},
"vite": {
- "version": "4.4.9",
- "resolved": "https://registry.npmjs.org/vite/-/vite-4.4.9.tgz",
- "integrity": "sha512-2mbUn2LlUmNASWwSCNSJ/EG2HuSRTnVNaydp6vMCm5VIqJsjMfbIWtbH2kDuwUVW5mMUKKZvGPX/rqeqVvv1XA==",
+ "version": "4.5.3",
+ "resolved": "https://registry.npmjs.org/vite/-/vite-4.5.3.tgz",
+ "integrity": "sha512-kQL23kMeX92v3ph7IauVkXkikdDRsYMGTVl5KY2E9OY4ONLvkHf04MDTbnfo6NKxZiDLWzVpP5oTa8hQD8U3dg==",
"dev": true,
"requires": {
"esbuild": "^0.18.10",
@@ -19226,9 +19127,9 @@
}
},
"vite-plugin-static-copy": {
- "version": "0.17.0",
- "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.0.tgz",
- "integrity": "sha512-2HpNbHfDt8SDy393AGXh9llHkc8FJMQkI8s3T5WsH3SWLMO+f5cFIyPErl4yGKU9Uh3Vaqsd4lHZYTf042fQ2A==",
+ "version": "0.17.1",
+ "resolved": "https://registry.npmjs.org/vite-plugin-static-copy/-/vite-plugin-static-copy-0.17.1.tgz",
+ "integrity": "sha512-9h3iaVs0bqnqZOM5YHJXGHqdC5VAVlTZ2ARYsuNpzhEJUHmFqXY7dAK4ZFpjEQ4WLFKcaN8yWbczr81n01U4sQ==",
"dev": true,
"requires": {
"chokidar": "^3.5.3",
@@ -19285,9 +19186,9 @@
}
},
"vue-template-compiler": {
- "version": "2.7.14",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.14.tgz",
- "integrity": "sha512-zyA5Y3ArvVG0NacJDkkzJuPQDF8RFeRlzV2vLeSnhSpieO6LK2OVbdLPi5MPPs09Ii+gMO8nY4S3iKQxBxDmWQ==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
"dev": true,
"requires": {
"de-indent": "^1.0.2",
@@ -19397,9 +19298,9 @@
}
},
"webpack-dev-middleware": {
- "version": "5.3.3",
- "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz",
- "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==",
+ "version": "5.3.4",
+ "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz",
+ "integrity": "sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==",
"requires": {
"colorette": "^2.0.10",
"memfs": "^3.4.3",
@@ -19409,14 +19310,14 @@
},
"dependencies": {
"ajv": {
- "version": "8.12.0",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
- "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==",
+ "version": "8.17.1",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz",
+ "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==",
"requires": {
- "fast-deep-equal": "^3.1.1",
+ "fast-deep-equal": "^3.1.3",
+ "fast-uri": "^3.0.1",
"json-schema-traverse": "^1.0.0",
- "require-from-string": "^2.0.2",
- "uri-js": "^4.2.2"
+ "require-from-string": "^2.0.2"
}
},
"ajv-keywords": {
@@ -19433,22 +19334,22 @@
"integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug=="
},
"schema-utils": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz",
- "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz",
+ "integrity": "sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==",
"requires": {
"@types/json-schema": "^7.0.9",
- "ajv": "^8.8.0",
+ "ajv": "^8.9.0",
"ajv-formats": "^2.1.1",
- "ajv-keywords": "^5.0.0"
+ "ajv-keywords": "^5.1.0"
}
}
}
},
"webpack-dev-server": {
- "version": "4.13.1",
- "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.13.1.tgz",
- "integrity": "sha512-5tWg00bnWbYgkN+pd5yISQKDejRBYGEw15RaEEslH+zdbNDxxaZvEAO2WulaSaFKb5n3YG8JXsGaDsut1D0xdA==",
+ "version": "4.15.2",
+ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz",
+ "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==",
"requires": {
"@types/bonjour": "^3.5.9",
"@types/connect-history-api-fallback": "^1.3.5",
@@ -19456,7 +19357,7 @@
"@types/serve-index": "^1.9.1",
"@types/serve-static": "^1.13.10",
"@types/sockjs": "^0.3.33",
- "@types/ws": "^8.5.1",
+ "@types/ws": "^8.5.5",
"ansi-html-community": "^0.0.8",
"bonjour-service": "^1.0.11",
"chokidar": "^3.5.3",
@@ -19478,7 +19379,7 @@
"serve-index": "^1.9.1",
"sockjs": "^0.3.24",
"spdy": "^4.0.2",
- "webpack-dev-middleware": "^5.3.1",
+ "webpack-dev-middleware": "^5.3.4",
"ws": "^8.13.0"
},
"dependencies": {
@@ -19706,9 +19607,9 @@
"integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="
},
"ws": {
- "version": "8.13.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.13.0.tgz",
- "integrity": "sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"requires": {}
},
"xtend": {
diff --git a/public/build/assets/app-06521fee.css b/public/build/assets/app-06521fee.css
deleted file mode 100644
index c48d601e31ca..000000000000
--- a/public/build/assets/app-06521fee.css
+++ /dev/null
@@ -1,5 +0,0 @@
-<<<<<<<< HEAD:public/build/assets/app-06521fee.css
-*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-radio{border-radius:100%}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-radio:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-radio:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.button-secondary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.button-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.button-link{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.button-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.button-link:focus{text-decoration-line:underline;outline:2px solid transparent;outline-offset:2px}.validation{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.25rem .75rem}.validation-fail{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.validation-pass{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.input-label{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.form-checkbox{cursor:pointer;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.form-select{border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.alert{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.alert-success{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.alert-failure{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.badge-secondary{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.badge-info{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}@media (min-width: 640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width: 1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{margin-left:.5rem!important;margin-right:.5rem!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_length select:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_filter input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width: 1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{margin-right:.25rem!important;cursor:pointer!important;border-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;font-weight:500!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important;border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dataTables_paginate .current{--tw-bg-opacity: 1 !important;background-color:rgb(37 99 235 / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.dataTables_info{font-size:.875rem!important;line-height:1.25rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;display:inline-flex!important;cursor:pointer!important;align-items:center!important;border-top-width:2px!important;border-color:transparent!important;padding-left:1rem!important;padding-right:1rem!important;padding-top:1rem!important;font-size:.875rem!important;font-weight:500!important;line-height:1.25rem!important;--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.pagination .page-link:hover{--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.pagination .page-link:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px}.pagination .active>span{--tw-border-opacity: 1 !important;border-color:rgb(37 99 235 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(37 99 235 / var(--tw-text-opacity))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.top-0{top:0}.top-1{top:.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-8{grid-column:span 8 / span 8}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-\[22px\]{margin-left:22px;margin-right:22px}.mx-\[40px\]{margin-left:40px;margin-right:40px}.mx-\[auto\],.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[11px\]{margin-bottom:11px}.mb-\[20px\]{margin-bottom:20px}.mb-\[25px\]{margin-bottom:25px}.mb-\[26px\]{margin-bottom:26px}.mb-\[36px\]{margin-bottom:36px}.mb-\[40px\]{margin-bottom:40px}.mb-\[5px\]{margin-bottom:5px}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[auto\]{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[450px\]{min-height:450px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[87px\]{width:87px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[212px\]{max-width:212px}.max-w-\[450px\]{max-width:450px}.max-w-\[625px\]{max-width:625px}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/2{flex-basis:50%}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-end{place-content:end}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[13px\]{gap:13px}.gap-\[44px\]{gap:44px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-\[20px\]{row-gap:20px}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-\[0px\]{border-top-width:0px}.border-t-\[10px\]{border-top-width:10px}.border-t-\[1px\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity: 1;border-color:rgb(192 38 211 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-opacity-50{--tw-border-opacity: .5}.bg-\[\#F2F9FE\]{--tw-bg-opacity: 1;background-color:rgb(242 249 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-100{--tw-bg-opacity: 1}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.p-\[12px\]{padding:12px}.p-\[20px\]{padding:20px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[33px\]{padding-top:33px;padding-bottom:33px}.py-\[36px\]{padding-top:36px;padding-bottom:36px}.py-\[9\.5px\]{padding-top:9.5px;padding-bottom:9.5px}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\[20px\]{padding-bottom:20px}.pb-\[56px\]{padding-bottom:56px}.pb-\[58px\]{padding-bottom:58px}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-\[18px\]{padding-left:18px}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-\[18px\]{padding-right:18px}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[20px\]{padding-top:20px}.pt-\[29px\]{padding-top:29px}.pt-\[35px\]{padding-top:35px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-\[\'Open_Sans\'\]{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[35px\]{font-size:35px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-\[16px\]{font-weight:16px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-\[1\.2rem\]{line-height:1.2rem}.leading-\[1\.35em\]{line-height:1.35em}.leading-\[1\.36em\]{line-height:1.36em}.leading-\[1\.375em\]{line-height:1.375em}.leading-\[1\.3em\]{line-height:1.3em}.leading-\[1\.5em\]{line-height:1.5em}.leading-\[1\.75em\]{line-height:1.75em}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#212529\]{--tw-text-opacity: 1;color:rgb(33 37 41 / var(--tw-text-opacity))}.text-\[\#6C727F\]{--tw-text-opacity: 1;color:rgb(108 114 127 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[8px\]:after{content:var(--tw-content);left:8px}.after\:top-\[5px\]:after{content:var(--tw-content);top:5px}.after\:h-\[30px\]:after{content:var(--tw-content);height:30px}.after\:w-\[30px\]:after{content:var(--tw-content);width:30px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.focus-within\:z-10:focus-within{z-index:10}.hover\:list-disc:hover{list-style-type:disc}.hover\:border-blue-600:hover{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:font-semibold:hover{font-weight:600}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-fuchsia-300:focus{--tw-border-opacity: 1;border-color:rgb(240 171 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-600:focus{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:font-semibold:focus{font-weight:600}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-600:focus{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.focus\:text-gray-900:focus{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:underline:focus{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-gray-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.active\:bg-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.active\:outline-none:active{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.disabled\:opacity-75:disabled{opacity:.75}.group:hover .group-hover\:border-transparent{border-color:transparent}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:after\:translate-x-\[140\%\]:after{content:var(--tw-content);--tw-translate-x: 140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-4{margin-top:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-shrink-0{flex-shrink:0}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}.md\:mx-0,.md\:mx-\[0\]{margin-left:0;margin-right:0}.md\:-mr-1{margin-right:-.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-\[46px\]{margin-bottom:46px}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mr-0{margin-right:0}.md\:mr-2{margin-right:.5rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-5{margin-top:1.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:min-h-\[411px\]{min-height:411px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:max-w-3xl{max-width:48rem}.md\:max-w-xl{max-width:36rem}.md\:flex-shrink-0{flex-shrink:0}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-1\/2{flex-basis:50%}.md\:basis-\[449px\]{flex-basis:449px}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-x-\[21px\]{-moz-column-gap:21px;column-gap:21px}.md\:gap-y-6{row-gap:1.5rem}.md\:border-r{border-right-width:1px}.md\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.md\:p-24{padding:6rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[40px\]{padding-left:40px;padding-right:40px}.md\:pb-\[40px\]{padding-bottom:40px}.md\:pl-4{padding-left:1rem}.md\:pl-\[52px\]{padding-left:52px}.md\:pl-\[61px\]{padding-left:61px}.md\:pr-\[20px\]{padding-right:20px}.md\:pr-\[48px\]{padding-right:48px}.md\:pt-0{padding-top:0}.md\:pt-\[58px\]{padding-top:58px}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-\[30px\]{font-size:30px}.md\:text-\[32px\]{font-size:32px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-4{grid-column-start:4}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.333333%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:max-w-\[80\%\]{max-width:80%}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}}@media (min-width: 1280px){.xl\:col-span-4{grid-column:span 4 / span 4}.xl\:col-span-6{grid-column:span 6 / span 6}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:col-span-9{grid-column:span 9 / span 9}.xl\:col-start-4{grid-column-start:4}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-0{margin-top:0}.xl\:mt-32{margin-top:8rem}.xl\:flex{display:flex}.xl\:w-auto{width:auto}.xl\:basis-auto{flex-basis:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:justify-center{justify-content:center}.xl\:border-r{border-right-width:1px}.xl\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:pr-20{padding-right:5rem}}@media (prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}}
-========
-*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-radio{border-radius:100%}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-radio:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-radio:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.button-secondary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.button-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.button-link{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.button-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.button-link:focus{text-decoration-line:underline;outline:2px solid transparent;outline-offset:2px}.validation{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.25rem .75rem}.validation-fail{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.validation-pass{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.input-label{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.form-checkbox{cursor:pointer;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.form-select{border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.alert{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.alert-success{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.alert-failure{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.badge-secondary{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.badge-info{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}@media (min-width: 640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width: 1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{margin-left:.5rem!important;margin-right:.5rem!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_length select:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_filter input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width: 1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{margin-right:.25rem!important;cursor:pointer!important;border-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;font-weight:500!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important;border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dataTables_paginate .current{--tw-bg-opacity: 1 !important;background-color:rgb(37 99 235 / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.dataTables_info{font-size:.875rem!important;line-height:1.25rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;display:inline-flex!important;cursor:pointer!important;align-items:center!important;border-top-width:2px!important;border-color:transparent!important;padding-left:1rem!important;padding-right:1rem!important;padding-top:1rem!important;font-size:.875rem!important;font-weight:500!important;line-height:1.25rem!important;--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.pagination .page-link:hover{--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.pagination .page-link:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px}.pagination .active>span{--tw-border-opacity: 1 !important;border-color:rgb(37 99 235 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(37 99 235 / var(--tw-text-opacity))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.top-0{top:0}.top-1{top:.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-8{grid-column:span 8 / span 8}.float-end{float:inline-end}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-\[22px\]{margin-left:22px;margin-right:22px}.mx-\[40px\]{margin-left:40px;margin-right:40px}.mx-\[auto\],.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[11px\]{margin-bottom:11px}.mb-\[20px\]{margin-bottom:20px}.mb-\[25px\]{margin-bottom:25px}.mb-\[26px\]{margin-bottom:26px}.mb-\[36px\]{margin-bottom:36px}.mb-\[40px\]{margin-bottom:40px}.mb-\[5px\]{margin-bottom:5px}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-6{margin-right:1.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[auto\]{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[1px\]{height:1px}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[450px\]{min-height:450px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[87px\]{width:87px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[212px\]{max-width:212px}.max-w-\[450px\]{max-width:450px}.max-w-\[625px\]{max-width:625px}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/2{flex-basis:50%}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-end{place-content:end}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[13px\]{gap:13px}.gap-\[44px\]{gap:44px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-\[20px\]{row-gap:20px}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-\[0px\]{border-top-width:0px}.border-t-\[10px\]{border-top-width:10px}.border-t-\[1px\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity: 1;border-color:rgb(192 38 211 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-opacity-50{--tw-border-opacity: .5}.bg-\[\#F2F9FE\]{--tw-bg-opacity: 1;background-color:rgb(242 249 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-100{--tw-bg-opacity: 1}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[12px\]{padding:12px}.p-\[20px\]{padding:20px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[33px\]{padding-top:33px;padding-bottom:33px}.py-\[36px\]{padding-top:36px;padding-bottom:36px}.py-\[9\.5px\]{padding-top:9.5px;padding-bottom:9.5px}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pb-\[20px\]{padding-bottom:20px}.pb-\[56px\]{padding-bottom:56px}.pb-\[58px\]{padding-bottom:58px}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-\[18px\]{padding-left:18px}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-\[18px\]{padding-right:18px}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[20px\]{padding-top:20px}.pt-\[29px\]{padding-top:29px}.pt-\[35px\]{padding-top:35px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-\[\'Open_Sans\'\]{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[35px\]{font-size:35px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-\[16px\]{font-weight:16px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-\[1\.2rem\]{line-height:1.2rem}.leading-\[1\.35em\]{line-height:1.35em}.leading-\[1\.36em\]{line-height:1.36em}.leading-\[1\.375em\]{line-height:1.375em}.leading-\[1\.3em\]{line-height:1.3em}.leading-\[1\.5em\]{line-height:1.5em}.leading-\[1\.75em\]{line-height:1.75em}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#212529\]{--tw-text-opacity: 1;color:rgb(33 37 41 / var(--tw-text-opacity))}.text-\[\#6C727F\]{--tw-text-opacity: 1;color:rgb(108 114 127 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[8px\]:after{content:var(--tw-content);left:8px}.after\:top-\[5px\]:after{content:var(--tw-content);top:5px}.after\:h-\[30px\]:after{content:var(--tw-content);height:30px}.after\:w-\[30px\]:after{content:var(--tw-content);width:30px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.focus-within\:z-10:focus-within{z-index:10}.hover\:list-disc:hover{list-style-type:disc}.hover\:border-blue-600:hover{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:font-semibold:hover{font-weight:600}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-fuchsia-300:focus{--tw-border-opacity: 1;border-color:rgb(240 171 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-600:focus{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:font-semibold:focus{font-weight:600}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-600:focus{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.focus\:text-gray-900:focus{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:underline:focus{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.active\:bg-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.active\:outline-none:active{outline:2px solid transparent;outline-offset:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:border-transparent{border-color:transparent}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.peer:checked~.peer-checked\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:after\:translate-x-\[140\%\]:after{content:var(--tw-content);--tw-translate-x: 140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-4{margin-top:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-shrink-0{flex-shrink:0}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}.md\:mx-0,.md\:mx-\[0\]{margin-left:0;margin-right:0}.md\:-mr-1{margin-right:-.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-\[46px\]{margin-bottom:46px}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mr-0{margin-right:0}.md\:mr-2{margin-right:.5rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-5{margin-top:1.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:min-h-\[411px\]{min-height:411px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:max-w-3xl{max-width:48rem}.md\:max-w-xl{max-width:36rem}.md\:flex-shrink-0{flex-shrink:0}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-1\/2{flex-basis:50%}.md\:basis-\[449px\]{flex-basis:449px}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-x-\[21px\]{-moz-column-gap:21px;column-gap:21px}.md\:gap-y-6{row-gap:1.5rem}.md\:border-r{border-right-width:1px}.md\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.md\:p-24{padding:6rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[40px\]{padding-left:40px;padding-right:40px}.md\:pb-\[40px\]{padding-bottom:40px}.md\:pl-4{padding-left:1rem}.md\:pl-\[52px\]{padding-left:52px}.md\:pl-\[61px\]{padding-left:61px}.md\:pr-\[20px\]{padding-right:20px}.md\:pr-\[48px\]{padding-right:48px}.md\:pt-0{padding-top:0}.md\:pt-\[58px\]{padding-top:58px}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-\[30px\]{font-size:30px}.md\:text-\[32px\]{font-size:32px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-4{grid-column-start:4}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:-mb-1{margin-bottom:-.25rem}.lg\:-ml-5{margin-left:-1.25rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:w-1\/2{width:50%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:max-w-\[80\%\]{max-width:80%}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}}@media (min-width: 1280px){.xl\:col-span-4{grid-column:span 4 / span 4}.xl\:col-span-6{grid-column:span 6 / span 6}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:col-span-9{grid-column:span 9 / span 9}.xl\:col-start-4{grid-column-start:4}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-0{margin-top:0}.xl\:mt-32{margin-top:8rem}.xl\:flex{display:flex}.xl\:w-auto{width:auto}.xl\:basis-auto{flex-basis:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:justify-center{justify-content:center}.xl\:border-r{border-right-width:1px}.xl\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:pr-20{padding-right:5rem}}@media (prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}}
->>>>>>>> new_payment_flow:public/build/assets/app-4e969b65.css
diff --git a/public/build/assets/app-4e969b65.css b/public/build/assets/app-4e969b65.css
deleted file mode 100644
index c48d601e31ca..000000000000
--- a/public/build/assets/app-4e969b65.css
+++ /dev/null
@@ -1,5 +0,0 @@
-<<<<<<<< HEAD:public/build/assets/app-06521fee.css
-*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-radio{border-radius:100%}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-radio:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-radio:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.button-secondary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.button-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.button-link{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.button-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.button-link:focus{text-decoration-line:underline;outline:2px solid transparent;outline-offset:2px}.validation{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.25rem .75rem}.validation-fail{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.validation-pass{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.input-label{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.form-checkbox{cursor:pointer;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.form-select{border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.alert{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.alert-success{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.alert-failure{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.badge-secondary{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.badge-info{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}@media (min-width: 640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width: 1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{margin-left:.5rem!important;margin-right:.5rem!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_length select:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_filter input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width: 1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{margin-right:.25rem!important;cursor:pointer!important;border-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;font-weight:500!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important;border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dataTables_paginate .current{--tw-bg-opacity: 1 !important;background-color:rgb(37 99 235 / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.dataTables_info{font-size:.875rem!important;line-height:1.25rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;display:inline-flex!important;cursor:pointer!important;align-items:center!important;border-top-width:2px!important;border-color:transparent!important;padding-left:1rem!important;padding-right:1rem!important;padding-top:1rem!important;font-size:.875rem!important;font-weight:500!important;line-height:1.25rem!important;--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.pagination .page-link:hover{--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.pagination .page-link:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px}.pagination .active>span{--tw-border-opacity: 1 !important;border-color:rgb(37 99 235 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(37 99 235 / var(--tw-text-opacity))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.top-0{top:0}.top-1{top:.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-8{grid-column:span 8 / span 8}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-\[22px\]{margin-left:22px;margin-right:22px}.mx-\[40px\]{margin-left:40px;margin-right:40px}.mx-\[auto\],.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[11px\]{margin-bottom:11px}.mb-\[20px\]{margin-bottom:20px}.mb-\[25px\]{margin-bottom:25px}.mb-\[26px\]{margin-bottom:26px}.mb-\[36px\]{margin-bottom:36px}.mb-\[40px\]{margin-bottom:40px}.mb-\[5px\]{margin-bottom:5px}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[auto\]{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[450px\]{min-height:450px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/4{width:25%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[87px\]{width:87px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[212px\]{max-width:212px}.max-w-\[450px\]{max-width:450px}.max-w-\[625px\]{max-width:625px}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/2{flex-basis:50%}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-end{place-content:end}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[13px\]{gap:13px}.gap-\[44px\]{gap:44px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-\[20px\]{row-gap:20px}.space-x-0>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(0px * var(--tw-space-x-reverse));margin-left:calc(0px * calc(1 - var(--tw-space-x-reverse)))}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-\[0px\]{border-top-width:0px}.border-t-\[10px\]{border-top-width:10px}.border-t-\[1px\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity: 1;border-color:rgb(192 38 211 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-500{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-opacity-50{--tw-border-opacity: .5}.bg-\[\#F2F9FE\]{--tw-bg-opacity: 1;background-color:rgb(242 249 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-100{--tw-bg-opacity: 1}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-8{padding:2rem}.p-\[12px\]{padding:12px}.p-\[20px\]{padding:20px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[33px\]{padding-top:33px;padding-bottom:33px}.py-\[36px\]{padding-top:36px;padding-bottom:36px}.py-\[9\.5px\]{padding-top:9.5px;padding-bottom:9.5px}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-\[20px\]{padding-bottom:20px}.pb-\[56px\]{padding-bottom:56px}.pb-\[58px\]{padding-bottom:58px}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-\[18px\]{padding-left:18px}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-\[18px\]{padding-right:18px}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[20px\]{padding-top:20px}.pt-\[29px\]{padding-top:29px}.pt-\[35px\]{padding-top:35px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-\[\'Open_Sans\'\]{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[35px\]{font-size:35px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-\[16px\]{font-weight:16px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-\[1\.2rem\]{line-height:1.2rem}.leading-\[1\.35em\]{line-height:1.35em}.leading-\[1\.36em\]{line-height:1.36em}.leading-\[1\.375em\]{line-height:1.375em}.leading-\[1\.3em\]{line-height:1.3em}.leading-\[1\.5em\]{line-height:1.5em}.leading-\[1\.75em\]{line-height:1.75em}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#212529\]{--tw-text-opacity: 1;color:rgb(33 37 41 / var(--tw-text-opacity))}.text-\[\#6C727F\]{--tw-text-opacity: 1;color:rgb(108 114 127 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[8px\]:after{content:var(--tw-content);left:8px}.after\:top-\[5px\]:after{content:var(--tw-content);top:5px}.after\:h-\[30px\]:after{content:var(--tw-content);height:30px}.after\:w-\[30px\]:after{content:var(--tw-content);width:30px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.focus-within\:z-10:focus-within{z-index:10}.hover\:list-disc:hover{list-style-type:disc}.hover\:border-blue-600:hover{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:font-semibold:hover{font-weight:600}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-fuchsia-300:focus{--tw-border-opacity: 1;border-color:rgb(240 171 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-600:focus{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:font-semibold:focus{font-weight:600}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-600:focus{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.focus\:text-gray-900:focus{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:underline:focus{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-gray-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.active\:bg-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.active\:outline-none:active{outline:2px solid transparent;outline-offset:2px}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.disabled\:opacity-75:disabled{opacity:.75}.group:hover .group-hover\:border-transparent{border-color:transparent}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:after\:translate-x-\[140\%\]:after{content:var(--tw-content);--tw-translate-x: 140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-4{margin-top:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-shrink-0{flex-shrink:0}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}.md\:mx-0,.md\:mx-\[0\]{margin-left:0;margin-right:0}.md\:-mr-1{margin-right:-.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-\[46px\]{margin-bottom:46px}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mr-0{margin-right:0}.md\:mr-2{margin-right:.5rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-5{margin-top:1.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:min-h-\[411px\]{min-height:411px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:max-w-3xl{max-width:48rem}.md\:max-w-xl{max-width:36rem}.md\:flex-shrink-0{flex-shrink:0}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-1\/2{flex-basis:50%}.md\:basis-\[449px\]{flex-basis:449px}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-x-\[21px\]{-moz-column-gap:21px;column-gap:21px}.md\:gap-y-6{row-gap:1.5rem}.md\:border-r{border-right-width:1px}.md\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.md\:p-24{padding:6rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[40px\]{padding-left:40px;padding-right:40px}.md\:pb-\[40px\]{padding-bottom:40px}.md\:pl-4{padding-left:1rem}.md\:pl-\[52px\]{padding-left:52px}.md\:pl-\[61px\]{padding-left:61px}.md\:pr-\[20px\]{padding-right:20px}.md\:pr-\[48px\]{padding-right:48px}.md\:pt-0{padding-top:0}.md\:pt-\[58px\]{padding-top:58px}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-\[30px\]{font-size:30px}.md\:text-\[32px\]{font-size:32px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-4{grid-column-start:4}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:w-1\/2{width:50%}.lg\:w-1\/3{width:33.333333%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:max-w-\[80\%\]{max-width:80%}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}}@media (min-width: 1280px){.xl\:col-span-4{grid-column:span 4 / span 4}.xl\:col-span-6{grid-column:span 6 / span 6}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:col-span-9{grid-column:span 9 / span 9}.xl\:col-start-4{grid-column-start:4}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-0{margin-top:0}.xl\:mt-32{margin-top:8rem}.xl\:flex{display:flex}.xl\:w-auto{width:auto}.xl\:basis-auto{flex-basis:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:justify-center{justify-content:center}.xl\:border-r{border-right-width:1px}.xl\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:pr-20{padding-right:5rem}}@media (prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}}
-========
-*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Open Sans,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}[type=text],input:where(:not([type])),[type=email],[type=url],[type=password],[type=number],[type=date],[type=datetime-local],[type=month],[type=search],[type=tel],[type=time],[type=week],[multiple],textarea,select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}[type=text]:focus,input:where(:not([type])):focus,[type=email]:focus,[type=url]:focus,[type=password]:focus,[type=number]:focus,[type=date]:focus,[type=datetime-local]:focus,[type=month]:focus,[type=search]:focus,[type=tel]:focus,[type=time]:focus,[type=week]:focus,[multiple]:focus,textarea:focus,select:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}input::-moz-placeholder,textarea::-moz-placeholder{color:#6b7280;opacity:1}input::placeholder,textarea::placeholder{color:#6b7280;opacity:1}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-date-and-time-value{min-height:1.5em;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-top:0;padding-bottom:0}select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}[multiple],[size]:where(select:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}[type=checkbox],[type=radio]{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}[type=checkbox]{border-radius:0}[type=radio]{border-radius:100%}[type=checkbox]:focus,[type=radio]:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}[type=checkbox]:checked,[type=radio]:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}[type=checkbox]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=checkbox]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=radio]:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){[type=radio]:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:checked:hover,[type=checkbox]:checked:focus,[type=radio]:checked:hover,[type=radio]:checked:focus{border-color:transparent;background-color:currentColor}[type=checkbox]:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){[type=checkbox]:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}[type=checkbox]:indeterminate:hover,[type=checkbox]:indeterminate:focus{border-color:transparent;background-color:currentColor}[type=file]{background:unset;border-color:inherit;border-width:0;border-radius:0;padding:0;font-size:unset;line-height:inherit}[type=file]:focus{outline:1px solid ButtonText;outline:1px auto -webkit-focus-ring-color}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }.container{width:100%}@media (min-width: 640px){.container{max-width:640px}}@media (min-width: 768px){.container{max-width:768px}}@media (min-width: 1024px){.container{max-width:1024px}}@media (min-width: 1280px){.container{max-width:1280px}}@media (min-width: 1536px){.container{max-width:1536px}}.form-input,.form-textarea,.form-select,.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#6b7280;border-width:1px;border-radius:0;padding:.5rem .75rem;font-size:1rem;line-height:1.5rem;--tw-shadow: 0 0 #0000}.form-input:focus,.form-textarea:focus,.form-select:focus,.form-multiselect:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow);border-color:#2563eb}.form-select{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 20 20'%3e%3cpath stroke='%236b7280' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' d='M6 8l4 4 4-4'/%3e%3c/svg%3e");background-position:right .5rem center;background-repeat:no-repeat;background-size:1.5em 1.5em;padding-right:2.5rem;-webkit-print-color-adjust:exact;print-color-adjust:exact}.form-select:where([size]:not([size="1"])){background-image:initial;background-position:initial;background-repeat:unset;background-size:initial;padding-right:.75rem;-webkit-print-color-adjust:unset;print-color-adjust:unset}.form-checkbox,.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:0;-webkit-print-color-adjust:exact;print-color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;user-select:none;flex-shrink:0;height:1rem;width:1rem;color:#2563eb;background-color:#fff;border-color:#6b7280;border-width:1px;--tw-shadow: 0 0 #0000}.form-checkbox{border-radius:0}.form-radio{border-radius:100%}.form-checkbox:focus,.form-radio:focus{outline:2px solid transparent;outline-offset:2px;--tw-ring-inset: var(--tw-empty, );--tw-ring-offset-width: 2px;--tw-ring-offset-color: #fff;--tw-ring-color: #2563eb;--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.form-checkbox:checked,.form-radio:checked{border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}.form-checkbox:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3cpath d='M12.207 4.793a1 1 0 010 1.414l-5 5a1 1 0 01-1.414 0l-2-2a1 1 0 011.414-1.414L6.5 9.086l4.293-4.293a1 1 0 011.414 0z'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-checkbox:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-radio:checked{background-image:url("data:image/svg+xml,%3csvg viewBox='0 0 16 16' fill='white' xmlns='http://www.w3.org/2000/svg'%3e%3ccircle cx='8' cy='8' r='3'/%3e%3c/svg%3e")}@media (forced-colors: active){.form-radio:checked{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:checked:hover,.form-checkbox:checked:focus,.form-radio:checked:hover,.form-radio:checked:focus{border-color:transparent;background-color:currentColor}.form-checkbox:indeterminate{background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' fill='none' viewBox='0 0 16 16'%3e%3cpath stroke='white' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M4 8h8'/%3e%3c/svg%3e");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:center;background-repeat:no-repeat}@media (forced-colors: active){.form-checkbox:indeterminate{-webkit-appearance:auto;-moz-appearance:auto;appearance:auto}}.form-checkbox:indeterminate:hover,.form-checkbox:indeterminate:focus{border-color:transparent;background-color:currentColor}.prose{color:var(--tw-prose-body);max-width:65ch}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where([class~=lead]):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-lead);font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose :where(a):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-decoration:underline;font-weight:500}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:600}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ul):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:disc;margin-top:1.25em;margin-bottom:1.25em;padding-left:1.625em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{font-weight:400;color:var(--tw-prose-counters)}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.25em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-style:italic;color:var(--tw-prose-quotes);border-left-width:.25rem;border-left-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:900;color:inherit}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:800;color:inherit}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:700;color:inherit}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){display:block;margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){font-weight:500;font-family:inherit;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px rgb(var(--tw-prose-kbd-shadows) / 10%),0 3px 0 rgb(var(--tw-prose-kbd-shadows) / 10%);font-size:.875em;border-radius:.3125rem;padding:.1875em .375em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-code);font-weight:600;font-size:.875em}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:"`"}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:"`"}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(pre):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-pre-code);background-color:var(--tw-prose-pre-bg);overflow-x:auto;font-weight:400;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding:.8571429em 1.1428571em}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)){background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:inherit;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:none}.prose :where(pre code):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:none}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose :where(thead):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600;vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose :where(tbody tr):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-td-borders)}.prose :where(tbody tr:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:0}.prose :where(tbody td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:baseline}.prose :where(tfoot):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){vertical-align:top}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose{--tw-prose-body: #374151;--tw-prose-headings: #111827;--tw-prose-lead: #4b5563;--tw-prose-links: #111827;--tw-prose-bold: #111827;--tw-prose-counters: #6b7280;--tw-prose-bullets: #d1d5db;--tw-prose-hr: #e5e7eb;--tw-prose-quotes: #111827;--tw-prose-quote-borders: #e5e7eb;--tw-prose-captions: #6b7280;--tw-prose-kbd: #111827;--tw-prose-kbd-shadows: 17 24 39;--tw-prose-code: #111827;--tw-prose-pre-code: #e5e7eb;--tw-prose-pre-bg: #1f2937;--tw-prose-th-borders: #d1d5db;--tw-prose-td-borders: #e5e7eb;--tw-prose-invert-body: #d1d5db;--tw-prose-invert-headings: #fff;--tw-prose-invert-lead: #9ca3af;--tw-prose-invert-links: #fff;--tw-prose-invert-bold: #fff;--tw-prose-invert-counters: #9ca3af;--tw-prose-invert-bullets: #4b5563;--tw-prose-invert-hr: #374151;--tw-prose-invert-quotes: #f3f4f6;--tw-prose-invert-quote-borders: #374151;--tw-prose-invert-captions: #9ca3af;--tw-prose-invert-kbd: #fff;--tw-prose-invert-kbd-shadows: 255 255 255;--tw-prose-invert-code: #fff;--tw-prose-invert-pre-code: #d1d5db;--tw-prose-invert-pre-bg: rgb(0 0 0 / 50%);--tw-prose-invert-th-borders: #4b5563;--tw-prose-invert-td-borders: #374151;font-size:1rem;line-height:1.75}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(li):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;margin-bottom:.5em}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:.375em}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>*:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>*:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-left:1.625em}.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(thead th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(thead th:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(tbody td,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){padding:.5714286em}.prose :where(tbody td:first-child,tfoot td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-left:0}.prose :where(tbody td:last-child,tfoot td:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){padding-right:0}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.button{border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-primary:hover{font-weight:600}.button-block{display:block;width:100%}.button-danger{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.button-danger:hover{--tw-bg-opacity: 1;background-color:rgb(220 38 38 / var(--tw-bg-opacity))}.button-secondary{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.button-secondary:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.button-link{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.button-link:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity));text-decoration-line:underline}.button-link:focus{text-decoration-line:underline;outline:2px solid transparent;outline-offset:2px}.validation{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.25rem .75rem}.validation-fail{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.validation-pass{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity));font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.input-label{font-size:.875rem;line-height:1.25rem;--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.input-slim{padding-top:.5rem;padding-bottom:.5rem}.form-checkbox{cursor:pointer;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.form-select{border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.alert{margin-top:.5rem;margin-bottom:.25rem;border-left-width:2px;--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem}.alert-success{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.alert-failure{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.badge{display:inline-flex;align-items:center;border-radius:9999px;padding:.125rem .625rem;font-size:.75rem;font-weight:500;line-height:1rem}.badge-light{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.badge-primary{--tw-bg-opacity: 1;background-color:rgb(191 219 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.badge-danger{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.badge-success{--tw-bg-opacity: 1;background-color:rgb(209 250 229 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(16 185 129 / var(--tw-text-opacity))}.badge-secondary{--tw-bg-opacity: 1;background-color:rgb(31 41 55 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(229 231 235 / var(--tw-text-opacity))}.badge-warning{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(217 119 6 / var(--tw-text-opacity))}.badge-info{--tw-bg-opacity: 1;background-color:rgb(219 234 254 / var(--tw-bg-opacity));--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}@media (min-width: 640px){.dataTables_length{margin-top:1.25rem!important;margin-bottom:1.25rem!important}}@media (min-width: 1024px){.dataTables_length{margin-top:1rem!important;margin-bottom:1rem!important}}.dataTables_length select{margin-left:.5rem!important;margin-right:.5rem!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_length select:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}.dataTables_filter{margin-bottom:1rem}.dataTables_filter input{margin-top:.5rem;align-items:center;border-radius:.25rem;border-width:1px;--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity));padding:.5rem 1rem;font-size:.875rem;line-height:1.25rem}.dataTables_filter input:focus{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity));outline:2px solid transparent;outline-offset:2px}@media (min-width: 1024px){.dataTables_filter{margin-top:-3rem!important}}.dataTables_paginate{padding-bottom:1.5rem!important;padding-top:.5rem!important}.dataTables_paginate .paginate_button{margin-right:.25rem!important;cursor:pointer!important;border-width:1px!important;--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important;font-weight:500!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important;border-radius:.25rem;padding:.75rem 1rem;font-size:.875rem;line-height:1rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.dataTables_paginate .current{--tw-bg-opacity: 1 !important;background-color:rgb(37 99 235 / var(--tw-bg-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(255 255 255 / var(--tw-text-opacity))!important}.dataTables_info{font-size:.875rem!important;line-height:1.25rem!important}.dataTables_empty{padding-top:1rem!important;padding-bottom:1rem!important}.pagination{display:flex!important;align-items:center!important}.pagination .page-link{margin-top:-1px!important;display:inline-flex!important;cursor:pointer!important;align-items:center!important;border-top-width:2px!important;border-color:transparent!important;padding-left:1rem!important;padding-right:1rem!important;padding-top:1rem!important;font-size:.875rem!important;font-weight:500!important;line-height:1.25rem!important;--tw-text-opacity: 1 !important;color:rgb(107 114 128 / var(--tw-text-opacity))!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter!important;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter!important;transition-duration:.15s!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important}.pagination .page-link:hover{--tw-border-opacity: 1 !important;border-color:rgb(209 213 219 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(55 65 81 / var(--tw-text-opacity))!important}.pagination .page-link:focus{--tw-border-opacity: 1;border-color:rgb(156 163 175 / var(--tw-border-opacity));--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity));outline:2px solid transparent;outline-offset:2px}.pagination .active>span{--tw-border-opacity: 1 !important;border-color:rgb(37 99 235 / var(--tw-border-opacity))!important;--tw-text-opacity: 1 !important;color:rgb(37 99 235 / var(--tw-text-opacity))!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.collapse{visibility:collapse}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.inset-x-0{left:0;right:0}.inset-y-0{top:0;bottom:0}.bottom-0{bottom:0}.left-0{left:0}.left-1{left:.25rem}.right-0{right:0}.top-0{top:0}.top-1{top:.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.col-auto{grid-column:auto}.col-span-1{grid-column:span 1 / span 1}.col-span-12{grid-column:span 12 / span 12}.col-span-2{grid-column:span 2 / span 2}.col-span-3{grid-column:span 3 / span 3}.col-span-4{grid-column:span 4 / span 4}.col-span-6{grid-column:span 6 / span 6}.col-span-8{grid-column:span 8 / span 8}.float-end{float:inline-end}.float-right{float:right}.m-0{margin:0}.m-auto{margin:auto}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.-my-6{margin-top:-1.5rem;margin-bottom:-1.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.mx-4{margin-left:1rem;margin-right:1rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.mx-\[22px\]{margin-left:22px;margin-right:22px}.mx-\[40px\]{margin-left:40px;margin-right:40px}.mx-\[auto\],.mx-auto{margin-left:auto;margin-right:auto}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.-ml-1{margin-left:-.25rem}.-ml-4{margin-left:-1rem}.-ml-px{margin-left:-1px}.-mr-1{margin-right:-.25rem}.-mr-14{margin-right:-3.5rem}.-mt-4{margin-top:-1rem}.-mt-6{margin-top:-1.5rem}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-\[10px\]{margin-bottom:10px}.mb-\[11px\]{margin-bottom:11px}.mb-\[20px\]{margin-bottom:20px}.mb-\[25px\]{margin-bottom:25px}.mb-\[26px\]{margin-bottom:26px}.mb-\[36px\]{margin-bottom:36px}.mb-\[40px\]{margin-bottom:40px}.mb-\[5px\]{margin-bottom:5px}.ml-0{margin-left:0}.ml-1{margin-left:.25rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-\[10px\]{margin-left:10px}.mr-0{margin-right:0}.mr-1{margin-right:.25rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-5{margin-right:1.25rem}.mr-6{margin-right:1.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-20{margin-top:5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-\[30px\]{margin-top:30px}.mt-\[50px\]{margin-top:50px}.mt-\[auto\]{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-0{height:0px}.h-10{height:2.5rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-64{height:16rem}.h-8{height:2rem}.h-\[1px\]{height:1px}.h-\[40px\]{height:40px}.h-auto{height:auto}.h-fit{height:-moz-fit-content;height:fit-content}.h-full{height:100%}.h-screen{height:100vh}.min-h-\[450px\]{min-height:450px}.min-h-screen{min-height:100vh}.w-0{width:0px}.w-1{width:.25rem}.w-1\/2{width:50%}.w-1\/6{width:16.666667%}.w-10{width:2.5rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-3\/4{width:75%}.w-4{width:1rem}.w-4\/5{width:80%}.w-4\/6{width:66.666667%}.w-48{width:12rem}.w-5{width:1.25rem}.w-5\/6{width:83.333333%}.w-56{width:14rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-8{width:2rem}.w-80{width:20rem}.w-\[100\%\]{width:100%}.w-\[87px\]{width:87px}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.min-w-full{min-width:100%}.max-w-2xl{max-width:42rem}.max-w-4xl{max-width:56rem}.max-w-\[212px\]{max-width:212px}.max-w-\[450px\]{max-width:450px}.max-w-\[625px\]{max-width:625px}.max-w-xl{max-width:36rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-shrink{flex-shrink:1}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.flex-grow,.grow{flex-grow:1}.grow-0{flex-grow:0}.basis-1\/2{flex-basis:50%}.basis-full{flex-basis:100%}.table-auto{table-layout:auto}.border-collapse{border-collapse:collapse}.origin-top-right{transform-origin:top right}.-translate-x-full{--tw-translate-x: -100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-x-0{--tw-translate-x: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.translate-y-4{--tw-translate-y: 1rem;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite}.cursor-pointer{cursor:pointer}.resize{resize:both}.list-none{list-style-type:none}.appearance-none{-webkit-appearance:none;-moz-appearance:none;appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-row{flex-direction:row}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-content-end{place-content:end}.place-items-center{place-items:center}.content-center{align-content:center}.content-start{align-content:flex-start}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-stretch{align-items:stretch}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-stretch{justify-content:stretch}.gap-0{gap:0px}.gap-0\.5{gap:.125rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[13px\]{gap:13px}.gap-\[44px\]{gap:44px}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-y-\[20px\]{row-gap:20px}.space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.25rem * var(--tw-space-x-reverse));margin-left:calc(.25rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.5rem * var(--tw-space-x-reverse));margin-left:calc(.5rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(.75rem * var(--tw-space-x-reverse));margin-left:calc(.75rem * calc(1 - var(--tw-space-x-reverse)))}.space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse: 0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.space-y-10>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(2.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(2.5rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse: 0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse: 0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-gray-200>:not([hidden])~:not([hidden]){--tw-divide-opacity: 1;border-color:rgb(229 231 235 / var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.overflow-y-scroll{overflow-y:scroll}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.overflow-ellipsis{text-overflow:ellipsis}.whitespace-nowrap{white-space:nowrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.rounded{border-radius:.25rem}.rounded-\[10px\]{border-radius:10px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-none{border-radius:0}.rounded-sm{border-radius:.125rem}.rounded-b-lg{border-bottom-right-radius:.5rem;border-bottom-left-radius:.5rem}.rounded-l-md{border-top-left-radius:.375rem;border-bottom-left-radius:.375rem}.rounded-r-md{border-top-right-radius:.375rem;border-bottom-right-radius:.375rem}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.border{border-width:1px}.border-0{border-width:0px}.border-2{border-width:2px}.border-4{border-width:4px}.border-b{border-bottom-width:1px}.border-b-2{border-bottom-width:2px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-t-2{border-top-width:2px}.border-t-4{border-top-width:4px}.border-t-\[0px\]{border-top-width:0px}.border-t-\[10px\]{border-top-width:10px}.border-t-\[1px\]{border-top-width:1px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.border-none{border-style:none}.border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-blue-500{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.border-emerald-500{--tw-border-opacity: 1;border-color:rgb(16 185 129 / var(--tw-border-opacity))}.border-fuchsia-600{--tw-border-opacity: 1;border-color:rgb(192 38 211 / var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity: 1;border-color:rgb(243 244 246 / var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity: 1;border-color:rgb(209 213 219 / var(--tw-border-opacity))}.border-gray-500{--tw-border-opacity: 1;border-color:rgb(107 114 128 / var(--tw-border-opacity))}.border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.border-red-300{--tw-border-opacity: 1;border-color:rgb(252 165 165 / var(--tw-border-opacity))}.border-red-400{--tw-border-opacity: 1;border-color:rgb(248 113 113 / var(--tw-border-opacity))}.border-red-900{--tw-border-opacity: 1;border-color:rgb(127 29 29 / var(--tw-border-opacity))}.border-transparent{border-color:transparent}.border-opacity-50{--tw-border-opacity: .5}.bg-\[\#F2F9FE\]{--tw-bg-opacity: 1;background-color:rgb(242 249 254 / var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity: 1;background-color:rgb(239 246 255 / var(--tw-bg-opacity))}.bg-blue-500{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.bg-blue-600{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.bg-blue-700{--tw-bg-opacity: 1;background-color:rgb(29 78 216 / var(--tw-bg-opacity))}.bg-emerald-600{--tw-bg-opacity: 1;background-color:rgb(5 150 105 / var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.bg-gray-200{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.bg-gray-500{--tw-bg-opacity: 1;background-color:rgb(107 114 128 / var(--tw-bg-opacity))}.bg-gray-600{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.bg-red-100{--tw-bg-opacity: 1;background-color:rgb(254 226 226 / var(--tw-bg-opacity))}.bg-red-500{--tw-bg-opacity: 1;background-color:rgb(239 68 68 / var(--tw-bg-opacity))}.bg-transparent{background-color:transparent}.bg-white{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.bg-opacity-100{--tw-bg-opacity: 1}.bg-clip-padding{background-clip:padding-box}.fill-current{fill:currentColor}.object-cover{-o-object-fit:cover;object-fit:cover}.object-scale-down{-o-object-fit:scale-down;object-fit:scale-down}.object-center{-o-object-position:center;object-position:center}.p-1{padding:.25rem}.p-10{padding:2.5rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-\[12px\]{padding:12px}.p-\[20px\]{padding:20px}.px-0{padding-left:0;padding-right:0}.px-1{padding-left:.25rem;padding-right:.25rem}.px-12{padding-left:3rem;padding-right:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-\[12px\]{padding-left:12px;padding-right:12px}.px-\[20px\]{padding-left:20px;padding-right:20px}.px-\[22px\]{padding-left:22px;padding-right:22px}.py-0{padding-top:0;padding-bottom:0}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-\[33px\]{padding-top:33px;padding-bottom:33px}.py-\[36px\]{padding-top:36px;padding-bottom:36px}.py-\[9\.5px\]{padding-top:9.5px;padding-bottom:9.5px}.pb-10{padding-bottom:2.5rem}.pb-2{padding-bottom:.5rem}.pb-20{padding-bottom:5rem}.pb-3{padding-bottom:.75rem}.pb-4{padding-bottom:1rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pb-\[20px\]{padding-bottom:20px}.pb-\[56px\]{padding-bottom:56px}.pb-\[58px\]{padding-bottom:58px}.pl-0{padding-left:0}.pl-1{padding-left:.25rem}.pl-1\.5{padding-left:.375rem}.pl-2{padding-left:.5rem}.pl-3{padding-left:.75rem}.pl-\[18px\]{padding-left:18px}.pr-10{padding-right:2.5rem}.pr-2{padding-right:.5rem}.pr-4{padding-right:1rem}.pr-\[18px\]{padding-right:18px}.pt-0{padding-top:0}.pt-2{padding-top:.5rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-\[20px\]{padding-top:20px}.pt-\[29px\]{padding-top:29px}.pt-\[35px\]{padding-top:35px}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.font-\[\'Open_Sans\'\]{font-family:Open Sans}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-5xl{font-size:3rem;line-height:1}.text-\[12px\]{font-size:12px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[16px\]{font-size:16px}.text-\[22px\]{font-size:22px}.text-\[24px\]{font-size:24px}.text-\[35px\]{font-size:35px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-\[16px\]{font-weight:16px}.font-bold{font-weight:700}.font-light{font-weight:300}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-9{line-height:2.25rem}.leading-\[1\.2rem\]{line-height:1.2rem}.leading-\[1\.35em\]{line-height:1.35em}.leading-\[1\.36em\]{line-height:1.36em}.leading-\[1\.375em\]{line-height:1.375em}.leading-\[1\.3em\]{line-height:1.3em}.leading-\[1\.5em\]{line-height:1.5em}.leading-\[1\.75em\]{line-height:1.75em}.leading-normal{line-height:1.5}.leading-tight{line-height:1.25}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.text-\[\#212529\]{--tw-text-opacity: 1;color:rgb(33 37 41 / var(--tw-text-opacity))}.text-\[\#6C727F\]{--tw-text-opacity: 1;color:rgb(108 114 127 / var(--tw-text-opacity))}.text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.text-blue-500{--tw-text-opacity: 1;color:rgb(59 130 246 / var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.text-blue-700{--tw-text-opacity: 1;color:rgb(29 78 216 / var(--tw-text-opacity))}.text-emerald-600{--tw-text-opacity: 1;color:rgb(5 150 105 / var(--tw-text-opacity))}.text-gray-300{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity: 1;color:rgb(156 163 175 / var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity: 1;color:rgb(79 70 229 / var(--tw-text-opacity))}.text-red-400{--tw-text-opacity: 1;color:rgb(248 113 113 / var(--tw-text-opacity))}.text-red-500{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.text-red-600{--tw-text-opacity: 1;color:rgb(220 38 38 / var(--tw-text-opacity))}.text-red-700{--tw-text-opacity: 1;color:rgb(185 28 28 / var(--tw-text-opacity))}.text-red-900{--tw-text-opacity: 1;color:rgb(127 29 29 / var(--tw-text-opacity))}.text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.no-underline{text-decoration-line:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-25{opacity:.25}.opacity-75{opacity:.75}.shadow{--tw-shadow: 0 1px 3px 0 rgb(0 0 0 / .1), 0 1px 2px -1px rgb(0 0 0 / .1);--tw-shadow-colored: 0 1px 3px 0 var(--tw-shadow-color), 0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.shadow-xl{--tw-shadow: 0 20px 25px -5px rgb(0 0 0 / .1), 0 8px 10px -6px rgb(0 0 0 / .1);--tw-shadow-colored: 0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.outline-none{outline:2px solid transparent;outline-offset:2px}.outline{outline-style:solid}.ring-1{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.ring-black{--tw-ring-opacity: 1;--tw-ring-color: rgb(0 0 0 / var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity: .05}.grayscale{--tw-grayscale: grayscale(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.invert{--tw-invert: invert(100%);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.duration-100{transition-duration:.1s}.duration-1000{transition-duration:1s}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-75{transition-duration:75ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.ease-linear{transition-timing-function:linear}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.placeholder\:text-gray-500::-moz-placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.placeholder\:text-gray-500::placeholder{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.after\:absolute:after{content:var(--tw-content);position:absolute}.after\:left-\[8px\]:after{content:var(--tw-content);left:8px}.after\:top-\[5px\]:after{content:var(--tw-content);top:5px}.after\:h-\[30px\]:after{content:var(--tw-content);height:30px}.after\:w-\[30px\]:after{content:var(--tw-content);width:30px}.after\:rounded-full:after{content:var(--tw-content);border-radius:9999px}.after\:bg-white:after{content:var(--tw-content);--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.after\:transition-all:after{content:var(--tw-content);transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.after\:content-\[\'\'\]:after{--tw-content: "";content:var(--tw-content)}.focus-within\:z-10:focus-within{z-index:10}.hover\:list-disc:hover{list-style-type:disc}.hover\:border-blue-600:hover{--tw-border-opacity: 1;border-color:rgb(37 99 235 / var(--tw-border-opacity))}.hover\:border-gray-600:hover{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity: 1;border-color:rgb(31 41 55 / var(--tw-border-opacity))}.hover\:border-transparent:hover{border-color:transparent}.hover\:bg-blue-500:hover{--tw-bg-opacity: 1;background-color:rgb(59 130 246 / var(--tw-bg-opacity))}.hover\:bg-blue-600:hover{--tw-bg-opacity: 1;background-color:rgb(37 99 235 / var(--tw-bg-opacity))}.hover\:bg-gray-100:hover{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity: 1;background-color:rgb(229 231 235 / var(--tw-bg-opacity))}.hover\:bg-red-900:hover{--tw-bg-opacity: 1;background-color:rgb(127 29 29 / var(--tw-bg-opacity))}.hover\:font-semibold:hover{font-weight:600}.hover\:text-blue-600:hover{--tw-text-opacity: 1;color:rgb(37 99 235 / var(--tw-text-opacity))}.hover\:text-gray-300:hover{--tw-text-opacity: 1;color:rgb(209 213 219 / var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity: 1;color:rgb(55 65 81 / var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.hover\:text-indigo-900:hover{--tw-text-opacity: 1;color:rgb(49 46 129 / var(--tw-text-opacity))}.hover\:text-red-500:hover{--tw-text-opacity: 1;color:rgb(239 68 68 / var(--tw-text-opacity))}.hover\:text-white:hover{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-2xl:hover{--tw-shadow: 0 25px 50px -12px rgb(0 0 0 / .25);--tw-shadow-colored: 0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-lg:hover{--tw-shadow: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--tw-shadow-colored: 0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.hover\:shadow-sm:hover{--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / .05);--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow, 0 0 #0000),var(--tw-ring-shadow, 0 0 #0000),var(--tw-shadow)}.focus\:border-blue-300:focus{--tw-border-opacity: 1;border-color:rgb(147 197 253 / var(--tw-border-opacity))}.focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.focus\:border-fuchsia-300:focus{--tw-border-opacity: 1;border-color:rgb(240 171 252 / var(--tw-border-opacity))}.focus\:border-indigo-500:focus{--tw-border-opacity: 1;border-color:rgb(99 102 241 / var(--tw-border-opacity))}.focus\:border-red-500:focus{--tw-border-opacity: 1;border-color:rgb(239 68 68 / var(--tw-border-opacity))}.focus\:bg-gray-100:focus{--tw-bg-opacity: 1;background-color:rgb(243 244 246 / var(--tw-bg-opacity))}.focus\:bg-gray-600:focus{--tw-bg-opacity: 1;background-color:rgb(75 85 99 / var(--tw-bg-opacity))}.focus\:bg-white:focus{--tw-bg-opacity: 1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}.focus\:font-semibold:focus{font-weight:600}.focus\:text-gray-500:focus{--tw-text-opacity: 1;color:rgb(107 114 128 / var(--tw-text-opacity))}.focus\:text-gray-600:focus{--tw-text-opacity: 1;color:rgb(75 85 99 / var(--tw-text-opacity))}.focus\:text-gray-900:focus{--tw-text-opacity: 1;color:rgb(17 24 39 / var(--tw-text-opacity))}.focus\:underline:focus{text-decoration-line:underline}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:ring:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(3px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-1:focus{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}.focus\:ring-indigo-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(99 102 241 / var(--tw-ring-opacity))}.focus\:ring-indigo-600:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(79 70 229 / var(--tw-ring-opacity))}.focus\:ring-red-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(239 68 68 / var(--tw-ring-opacity))}.focus\:ring-opacity-50:focus{--tw-ring-opacity: .5}.focus-visible\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow: var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow: var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow, 0 0 #0000)}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width: 2px}.active\:bg-gray-50:active{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.active\:text-gray-800:active{--tw-text-opacity: 1;color:rgb(31 41 55 / var(--tw-text-opacity))}.active\:outline-none:active{outline:2px solid transparent;outline-offset:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-gray-50:disabled{--tw-bg-opacity: 1;background-color:rgb(249 250 251 / var(--tw-bg-opacity))}.disabled\:opacity-50:disabled{opacity:.5}.group:hover .group-hover\:border-transparent{border-color:transparent}.group:hover .group-hover\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.group:hover .group-hover\:opacity-100{opacity:1}.peer:checked~.peer-checked\:text-black{--tw-text-opacity: 1;color:rgb(0 0 0 / var(--tw-text-opacity))}.peer:checked~.peer-checked\:after\:translate-x-\[140\%\]:after{content:var(--tw-content);--tw-translate-x: 140%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.peer:focus~.peer-focus\:outline-none{outline:2px solid transparent;outline-offset:2px}@media (min-width: 640px){.sm\:inset-0{top:0;right:0;bottom:0;left:0}.sm\:col-span-2{grid-column:span 2 / span 2}.sm\:col-span-3{grid-column:span 3 / span 3}.sm\:col-span-4{grid-column:span 4 / span 4}.sm\:col-span-6{grid-column:span 6 / span 6}.sm\:-mx-6{margin-left:-1.5rem;margin-right:-1.5rem}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:ml-6{margin-left:1.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-4{margin-top:1rem}.sm\:mt-6{margin-top:1.5rem}.sm\:block{display:block}.sm\:inline-block{display:inline-block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:grid{display:grid}.sm\:hidden{display:none}.sm\:h-10{height:2.5rem}.sm\:h-screen{height:100vh}.sm\:w-10{width:2.5rem}.sm\:w-auto{width:auto}.sm\:w-full{width:100%}.sm\:max-w-lg{max-width:32rem}.sm\:max-w-sm{max-width:24rem}.sm\:flex-shrink-0{flex-shrink:0}.sm\:translate-y-0{--tw-translate-y: 0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-100{--tw-scale-x: 1;--tw-scale-y: 1;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:scale-95{--tw-scale-x: .95;--tw-scale-y: .95;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row-reverse{flex-direction:row-reverse}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-start{align-items:flex-start}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-4{gap:1rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:p-0{padding:0}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 768px){.md\:col-span-1{grid-column:span 1 / span 1}.md\:col-span-2{grid-column:span 2 / span 2}.md\:col-span-4{grid-column:span 4 / span 4}.md\:col-span-5{grid-column:span 5 / span 5}.md\:col-span-6{grid-column:span 6 / span 6}.md\:col-start-2{grid-column-start:2}.md\:col-start-4{grid-column-start:4}.md\:mx-0,.md\:mx-\[0\]{margin-left:0;margin-right:0}.md\:-mr-1{margin-right:-.25rem}.md\:mb-6{margin-bottom:1.5rem}.md\:mb-\[46px\]{margin-bottom:46px}.md\:ml-2{margin-left:.5rem}.md\:ml-6{margin-left:1.5rem}.md\:mr-0{margin-right:0}.md\:mr-2{margin-right:.5rem}.md\:mt-0{margin-top:0}.md\:mt-10{margin-top:2.5rem}.md\:mt-5{margin-top:1.25rem}.md\:block{display:block}.md\:flex{display:flex}.md\:grid{display:grid}.md\:hidden{display:none}.md\:min-h-\[411px\]{min-height:411px}.md\:w-1\/2{width:50%}.md\:w-1\/3{width:33.333333%}.md\:max-w-3xl{max-width:48rem}.md\:max-w-xl{max-width:36rem}.md\:flex-shrink-0{flex-shrink:0}.md\:shrink{flex-shrink:1}.md\:grow-0{flex-grow:0}.md\:basis-1\/2{flex-basis:50%}.md\:basis-\[449px\]{flex-basis:449px}.md\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:flex-col{flex-direction:column}.md\:items-center{align-items:center}.md\:justify-center{justify-content:center}.md\:justify-between{justify-content:space-between}.md\:gap-6{gap:1.5rem}.md\:gap-x-\[21px\]{-moz-column-gap:21px;column-gap:21px}.md\:gap-y-6{row-gap:1.5rem}.md\:border-r{border-right-width:1px}.md\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.md\:p-24{padding:6rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:px-\[40px\]{padding-left:40px;padding-right:40px}.md\:pb-\[40px\]{padding-bottom:40px}.md\:pl-4{padding-left:1rem}.md\:pl-\[52px\]{padding-left:52px}.md\:pl-\[61px\]{padding-left:61px}.md\:pr-\[20px\]{padding-right:20px}.md\:pr-\[48px\]{padding-right:48px}.md\:pt-0{padding-top:0}.md\:pt-\[58px\]{padding-top:58px}.md\:text-left{text-align:left}.md\:text-center{text-align:center}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-\[30px\]{font-size:30px}.md\:text-\[32px\]{font-size:32px}.md\:text-sm{font-size:.875rem;line-height:1.25rem}}@media (min-width: 1024px){.lg\:col-span-3{grid-column:span 3 / span 3}.lg\:col-span-6{grid-column:span 6 / span 6}.lg\:col-span-7{grid-column:span 7 / span 7}.lg\:col-span-8{grid-column:span 8 / span 8}.lg\:col-start-3{grid-column-start:3}.lg\:col-start-4{grid-column-start:4}.lg\:-mx-8{margin-left:-2rem;margin-right:-2rem}.lg\:-mb-1{margin-bottom:-.25rem}.lg\:-ml-5{margin-left:-1.25rem}.lg\:mt-24{margin-top:6rem}.lg\:block{display:block}.lg\:flex{display:flex}.lg\:grid{display:grid}.lg\:hidden{display:none}.lg\:h-screen{height:100vh}.lg\:w-1\/2{width:50%}.lg\:w-1\/4{width:25%}.lg\:w-1\/5{width:20%}.lg\:max-w-\[80\%\]{max-width:80%}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:items-center{align-items:center}.lg\:gap-4{gap:1rem}.lg\:rounded-lg{border-radius:.5rem}.lg\:px-16{padding-left:4rem;padding-right:4rem}.lg\:px-2{padding-left:.5rem;padding-right:.5rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:py-2{padding-top:.5rem;padding-bottom:.5rem}}@media (min-width: 1280px){.xl\:col-span-4{grid-column:span 4 / span 4}.xl\:col-span-6{grid-column:span 6 / span 6}.xl\:col-span-8{grid-column:span 8 / span 8}.xl\:col-span-9{grid-column:span 9 / span 9}.xl\:col-start-4{grid-column-start:4}.xl\:ml-5{margin-left:1.25rem}.xl\:mt-0{margin-top:0}.xl\:mt-32{margin-top:8rem}.xl\:flex{display:flex}.xl\:w-auto{width:auto}.xl\:basis-auto{flex-basis:auto}.xl\:flex-row{flex-direction:row}.xl\:flex-nowrap{flex-wrap:nowrap}.xl\:justify-center{justify-content:center}.xl\:border-r{border-right-width:1px}.xl\:border-\[\#E5E7EB\]{--tw-border-opacity: 1;border-color:rgb(229 231 235 / var(--tw-border-opacity))}.xl\:px-16{padding-left:4rem;padding-right:4rem}.xl\:px-20{padding-left:5rem;padding-right:5rem}.xl\:px-5{padding-left:1.25rem;padding-right:1.25rem}.xl\:pr-20{padding-right:5rem}}@media (prefers-color-scheme: dark){.dark\:border-gray-600{--tw-border-opacity: 1;border-color:rgb(75 85 99 / var(--tw-border-opacity))}.dark\:bg-gray-700{--tw-bg-opacity: 1;background-color:rgb(55 65 81 / var(--tw-bg-opacity))}.dark\:text-white{--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:placeholder-gray-400::-moz-placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:placeholder-gray-400::placeholder{--tw-placeholder-opacity: 1;color:rgb(156 163 175 / var(--tw-placeholder-opacity))}.dark\:focus\:border-blue-500:focus{--tw-border-opacity: 1;border-color:rgb(59 130 246 / var(--tw-border-opacity))}.dark\:focus\:ring-blue-500:focus{--tw-ring-opacity: 1;--tw-ring-color: rgb(59 130 246 / var(--tw-ring-opacity))}}
->>>>>>>> new_payment_flow:public/build/assets/app-4e969b65.css
diff --git a/public/build/assets/authorize-credit-card-payment-a217579b.js b/public/build/assets/authorize-credit-card-payment-a217579b.js
new file mode 100644
index 000000000000..1f462a77a11e
--- /dev/null
+++ b/public/build/assets/authorize-credit-card-payment-a217579b.js
@@ -0,0 +1,9 @@
+var l=Object.defineProperty;var c=(d,e,t)=>e in d?l(d,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):d[e]=t;var o=(d,e,t)=>(c(d,typeof e!="symbol"?e+"":e,t),t);/**
+ * Invoice Ninja (https://invoiceninja.com)
+ *
+ * @link https://github.com/invoiceninja/invoiceninja source repository
+ *
+ * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
+ *
+ * @license https://www.elastic.co/licensing/elastic-license
+ */class s{constructor(e,t){o(this,"handleAuthorization",()=>{if(m=="1"&&document.getElementById("cvv").value.length<3){var e=$("#errors");e.show().html("CVV is required
"),document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden");return}var t=$("#my-card"),n={};n.clientKey=this.publicKey,n.apiLoginID=this.loginId;var a={};a.cardNumber=t.CardJs("cardNumber").replace(/[^\d]/g,""),a.month=t.CardJs("expiryMonth").replace(/[^\d]/g,""),a.year=t.CardJs("expiryYear").replace(/[^\d]/g,""),a.cardCode=document.getElementById("cvv").value.replace(/[^\d]/g,"");var r={};return r.authData=n,r.cardData=a,document.getElementById("pay-now")&&(document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden")),Accept.dispatchData(r,this.responseHandler),!1});o(this,"responseHandler",e=>{if(e.messages.resultCode==="Error"){var t=0,n=$("#errors");n.show().html(""+e.messages.message[t].code+": "+e.messages.message[t].text+"
"),document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden")}else if(e.messages.resultCode==="Ok"){document.getElementById("dataDescriptor").value=e.opaqueData.dataDescriptor,document.getElementById("dataValue").value=e.opaqueData.dataValue;let a=document.querySelector("input[name=token-billing-checkbox]:checked");a&&(document.getElementById("store_card").value=a.value),document.getElementById("server_response").submit()}return!1});o(this,"handle",()=>{Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(n=>n.addEventListener("click",a=>{document.getElementById("save-card--container").style.display="none",document.getElementById("authorize--credit-card-container").style.display="none",document.getElementById("token").value=a.target.dataset.token}));let e=document.getElementById("toggle-payment-with-credit-card");e&&e.addEventListener("click",()=>{document.getElementById("save-card--container").style.display="grid",document.getElementById("authorize--credit-card-container").style.display="flex",document.getElementById("token").value=null});let t=document.getElementById("pay-now");return t&&t.addEventListener("click",n=>{let a=document.getElementById("token");a.value?this.handlePayNowAction(a.value):this.handleAuthorization()}),this});this.publicKey=e,this.loginId=t,this.cardHolderName=document.getElementById("cardholder_name")}handlePayNowAction(e){document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),document.getElementById("token").value=e,document.getElementById("server_response").submit()}}const u=document.querySelector('meta[name="authorize-public-key"]').content,i=document.querySelector('meta[name="authorize-login-id"]').content,m=document.querySelector('meta[name="authnet-require-cvv"]').content;new s(u,i).handle();
diff --git a/public/build/assets/authorize-credit-card-payment-bd9c9d4d.js b/public/build/assets/authorize-credit-card-payment-bd9c9d4d.js
deleted file mode 100644
index 44e69ff24255..000000000000
--- a/public/build/assets/authorize-credit-card-payment-bd9c9d4d.js
+++ /dev/null
@@ -1,20 +0,0 @@
-var G=Object.defineProperty;var J=(t,e,n)=>e in t?G(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var T=(t,e,n)=>(J(t,typeof e!="symbol"?e+"":e,n),n);var q=t=>{throw TypeError(t)},Q=(t,e,n)=>e.has(t)||q("Cannot "+n),ee=(t,e,n)=>e.has(t)?q("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),te=(t,e,n)=>(Q(t,e,"access private method"),n);const B={mask:/^.*$/,preprocessors:[],postprocessors:[],plugins:[],overwriteMode:"shift"};class ne{constructor(){this.now=null,this.past=[],this.future=[]}undo(){const e=this.past.pop();e&&this.now&&(this.future.push(this.now),this.updateElement(e,"historyUndo"))}redo(){const e=this.future.pop();e&&this.now&&(this.past.push(this.now),this.updateElement(e,"historyRedo"))}updateHistory(e){if(!this.now){this.now=e;return}const n=this.now.value!==e.value,a=this.now.selection.some((s,r)=>s!==e.selection[r]);!n&&!a||(n&&(this.past.push(this.now),this.future=[]),this.now=e)}updateElement(e,n){this.now=e,this.updateElementState(e,{inputType:n,data:null})}}function ae(t,...e){return e.every(({value:n})=>n===t.value)}function se(t,...e){return e.every(({value:n,selection:a})=>n===t.value&&a[0]===t.selection[0]&&a[1]===t.selection[1])}function re({value:t,selection:e},n,a){const[s,r]=e,i=typeof a=="function"?a({value:t,selection:e}):a;return{value:t,selection:i==="replace"?[s,s+n.length]:[s,r]}}function I(t){return typeof t=="string"}function O(t,e,n,a){let s="";for(let r=e.length;r{const s=e[a];return I(s)?n===s:n.match(s)}):e.test(t)}function ie(t,e,n){let a=null,s=null;const r=Array.from(t.value).reduce((l,o,c)=>{const u=O(e,l,o,n),d=l+u,h=e[d.length];return I(h)?d+h:o.match(h)?(a===null&&c>=t.selection[0]&&(a=d.length),s===null&&c>=t.selection[1]&&(s=d.length),d+o):d},""),i=O(e,r,"",n);return{value:H(r+i,e)?r+i:r,selection:[a??r.length,s??r.length]}}function le({value:t,selection:e},n){const[a,s]=e;let r=a,i=s;return{value:Array.from(t).reduce((l,o,c)=>{const u=l+o;return a===c&&(r=l.length),s===c&&(i=l.length),u.match(n)?u:l},""),selection:[r,i]}}function A(t,e,n=null){if(H(t.value,e))return t;const{value:a,selection:s}=Array.isArray(e)?ie(t,e,n):le(t,e);return{selection:s,value:Array.isArray(e)?a.slice(0,e.length):a}}function R(t,e){if(!Array.isArray(e))return t;const[n,a]=t.selection,s=[],r=Array.from(t.value).reduce((i,l,o)=>{const c=e[o];return o===n&&s.push(i.length),o===a&&s.push(i.length),I(c)&&c===l?i:i+l},"");return s.length<2&&s.push(...new Array(2-s.length).fill(r.length)),{value:r,selection:[s[0],s[1]]}}class D{constructor(e,n){this.initialElementState=e,this.maskOptions=n,this.value="",this.selection=[0,0];const{value:a,selection:s}=A(this.initialElementState,this.getMaskExpression(this.initialElementState));this.value=a,this.selection=s}addCharacters([e,n],a){const{value:s}=this,r=this.getMaskExpression({value:s.slice(0,e)+a+s.slice(n),selection:[e+a.length,e+a.length]}),i={value:s,selection:[e,n]},l=R(i,r),[o,c]=re(l,a,this.maskOptions.overwriteMode).selection,u=l.value.slice(0,o)+a,d=u.length,h=A({value:u+l.value.slice(c),selection:[d,d]},r,i);if(s.slice(0,o)===A({value:u,selection:[d,d]},r,i).value||se(this,h))throw new Error("Invalid mask value");this.value=h.value,this.selection=h.selection}deleteCharacters([e,n]){if(e===n||!n)return;const{value:a}=this,s=this.getMaskExpression({value:a.slice(0,e)+a.slice(n),selection:[e,e]}),r={value:a,selection:[e,n]},i=R(r,s),[l,o]=i.selection,c=i.value.slice(0,l)+i.value.slice(o),u=A({value:c,selection:[l,l]},s,r);this.value=u.value,this.selection=u.selection}getMaskExpression(e){const{mask:n}=this.maskOptions;return typeof n=="function"?n(e):n}}class oe{constructor(e){this.element=e,this.listeners=[]}listen(e,n,a){const s=n;this.element.addEventListener(e,s,a),this.listeners.push(()=>this.element.removeEventListener(e,s))}destroy(){this.listeners.forEach(e=>e())}}const g={CTRL:1,ALT:2,SHIFT:4,META:8},w={Y:89,Z:90};function b(t,e,n){return t.ctrlKey===!!(e&g.CTRL)&&t.altKey===!!(e&g.ALT)&&t.shiftKey===!!(e&g.SHIFT)&&t.metaKey===!!(e&g.META)&&t.keyCode===n}function ce(t){return b(t,g.CTRL,w.Y)||b(t,g.CTRL|g.SHIFT,w.Z)||b(t,g.META|g.SHIFT,w.Z)}function ue(t){return b(t,g.CTRL,w.Z)||b(t,g.META,w.Z)}function de({value:t,selection:e},n){const[a,s]=e;if(a!==s)return[a,s];const r=n?t.slice(a).indexOf(`
-`)+1||t.length:t.slice(0,s).lastIndexOf(`
-`)+1;return[n?a:r,n?r:s]}function he({value:t,selection:e},n){const[a,s]=e;return a!==s?[a,s]:(n?[a,s+1]:[a-1,s]).map(r=>Math.min(Math.max(r,0),t.length))}const me=/\s+$/g,pe=/^\s+/g,j=/\s/;function ve({value:t,selection:e},n){const[a,s]=e;if(a!==s)return[a,s];if(n){const o=t.slice(a),[c]=o.match(pe)||[""],u=o.trimStart().search(j);return[a,u!==-1?a+c.length+u:t.length]}const r=t.slice(0,s),[i]=r.match(me)||[""],l=r.trimEnd().split("").reverse().findIndex(o=>o.match(j));return[l!==-1?s-i.length-l:0,s]}function k(t=[]){return(e,...n)=>t.reduce((a,s)=>Object.assign(Object.assign({},a),s(a,...n)),e)}function ge(t,e){const n=Object.assign(Object.assign({},B),e),a=k(n.preprocessors),s=k(n.postprocessors),r=typeof t=="string"?{value:t,selection:[0,0]}:t,{elementState:i}=a({elementState:r,data:""},"validation"),l=new D(i,n),{value:o,selection:c}=s(l,r);return typeof t=="string"?o:{value:o,selection:c}}class M extends ne{constructor(e,n){super(),this.element=e,this.maskitoOptions=n,this.isTextArea=this.element.nodeName==="TEXTAREA",this.eventListener=new oe(this.element),this.options=Object.assign(Object.assign({},B),this.maskitoOptions),this.preprocessor=k(this.options.preprocessors),this.postprocessor=k(this.options.postprocessors),this.teardowns=this.options.plugins.map(a=>a(this.element,this.options)),this.updateHistory(this.elementState),this.eventListener.listen("keydown",a=>{if(ce(a))return a.preventDefault(),this.redo();if(ue(a))return a.preventDefault(),this.undo()}),this.eventListener.listen("beforeinput",a=>{var s;const r=a.inputType.includes("Forward");switch(this.updateHistory(this.elementState),a.inputType){case"historyUndo":return a.preventDefault(),this.undo();case"historyRedo":return a.preventDefault(),this.redo();case"deleteByCut":case"deleteContentBackward":case"deleteContentForward":return this.handleDelete({event:a,isForward:r,selection:he(this.elementState,r)});case"deleteWordForward":case"deleteWordBackward":return this.handleDelete({event:a,isForward:r,selection:ve(this.elementState,r),force:!0});case"deleteSoftLineBackward":case"deleteSoftLineForward":case"deleteHardLineBackward":case"deleteHardLineForward":return this.handleDelete({event:a,isForward:r,selection:de(this.elementState,r),force:!0});case"insertCompositionText":return;case"insertReplacementText":return;case"insertLineBreak":case"insertParagraph":return this.handleEnter(a);case"insertFromPaste":case"insertText":case"insertFromDrop":default:return this.handleInsert(a,a.data||((s=a.dataTransfer)===null||s===void 0?void 0:s.getData("text/plain"))||"")}}),this.eventListener.listen("input",({inputType:a})=>{a!=="insertCompositionText"&&(this.ensureValueFitsMask(),this.updateHistory(this.elementState))}),this.eventListener.listen("compositionend",()=>{this.ensureValueFitsMask(),this.updateHistory(this.elementState)})}get elementState(){const{value:e,selectionStart:n,selectionEnd:a}=this.element;return{value:e,selection:[n||0,a||0]}}get maxLength(){const{maxLength:e}=this.element;return e===-1?1/0:e}destroy(){this.eventListener.destroy(),this.teardowns.forEach(e=>e==null?void 0:e())}updateElementState({value:e,selection:n},a={inputType:"insertText",data:null}){const s=this.elementState.value;this.updateValue(e),this.updateSelectionRange(n),s!==e&&this.dispatchInputEvent(a)}updateSelectionRange([e,n]){var a;const{element:s}=this;s.matches(":focus")&&(s.selectionStart!==e||s.selectionEnd!==n)&&((a=s.setSelectionRange)===null||a===void 0||a.call(s,e,n))}updateValue(e){this.element.value=e}ensureValueFitsMask(){this.updateElementState(ge(this.elementState,this.options))}dispatchInputEvent(e={inputType:"insertText",data:null}){globalThis.InputEvent&&this.element.dispatchEvent(new InputEvent("input",Object.assign(Object.assign({},e),{bubbles:!0,cancelable:!1})))}handleDelete({event:e,selection:n,isForward:a,force:s=!1}){const r={value:this.elementState.value,selection:n},[i,l]=r.selection,{elementState:o}=this.preprocessor({elementState:r,data:""},a?"deleteForward":"deleteBackward"),c=new D(o,this.options),[u,d]=o.selection;c.deleteCharacters([u,d]);const h=this.postprocessor(c,r);if(!(r.value.slice(0,i)+r.value.slice(l)===h.value&&!s&&!this.element.isContentEditable)){if(e.preventDefault(),ae(r,o,c,h))return this.updateSelectionRange(a?[d,d]:[u,u]);this.updateElementState(h,{inputType:e.inputType,data:null}),this.updateHistory(h)}}handleInsert(e,n){const a=this.elementState,{elementState:s,data:r=n}=this.preprocessor({data:n,elementState:a},"insert"),i=new D(s,this.options);try{i.addCharacters(s.selection,r)}catch{return e.preventDefault()}const[l,o]=s.selection,c=a.value.slice(0,l)+n+a.value.slice(o),u=this.postprocessor(i,a);if(u.value.length>this.maxLength)return e.preventDefault();(c!==u.value||this.element.isContentEditable)&&(e.preventDefault(),this.updateElementState(u,{data:n,inputType:e.inputType}),this.updateHistory(u))}handleEnter(e){(this.isTextArea||this.element.isContentEditable)&&this.handleInsert(e,`
-`)}}function fe(t,e,n){const a=Math.min(Number(n),Math.max(Number(e),Number(t)));return t instanceof Date?new Date(a):a}function ye(t){return t.replaceAll(/\W/g,"").length}const V=t=>{var e,n,a;return{day:((e=t.match(/d/g))===null||e===void 0?void 0:e.length)||0,month:((n=t.match(/m/g))===null||n===void 0?void 0:n.length)||0,year:((a=t.match(/y/g))===null||a===void 0?void 0:a.length)||0}};function Se(t){return{day:String(t.getDate()).padStart(2,"0"),month:String(t.getMonth()+1).padStart(2,"0"),year:String(t.getFullYear()).padStart(4,"0"),hours:String(t.getHours()).padStart(2,"0"),minutes:String(t.getMinutes()).padStart(2,"0"),seconds:String(t.getSeconds()).padStart(2,"0"),milliseconds:String(t.getMilliseconds()).padStart(3,"0")}}function we(t,e){return t.length!n.match(/^0+$/))}function W(t,e,n){const a=ye(e);return t.replace(n,"").match(new RegExp(`(\\D*\\d[^\\d\\s]*){1,${a}}`,"g"))||[]}function C(t,e){const n=e.replaceAll(/[^dmy]/g,""),a=t.replaceAll(/\D+/g,""),s={day:a.slice(n.indexOf("d"),n.lastIndexOf("d")+1),month:a.slice(n.indexOf("m"),n.lastIndexOf("m")+1),year:a.slice(n.indexOf("y"),n.lastIndexOf("y")+1)};return Object.fromEntries(Object.entries(s).filter(([r,i])=>!!i).sort(([r],[i])=>e.toLowerCase().indexOf(r[0])>e.toLowerCase().indexOf(i[0])?1:-1))}function be(t,e){var n,a,s,r,i,l,o;const c=((n=t.year)===null||n===void 0?void 0:n.length)===2?`20${t.year}`:t.year,u=new Date(Number(c??"0"),Number((a=t.month)!==null&&a!==void 0?a:"1")-1,Number((s=t.day)!==null&&s!==void 0?s:"1"),Number((r=void 0)!==null&&r!==void 0?r:"0"),Number((i=void 0)!==null&&i!==void 0?i:"0"),Number((l=void 0)!==null&&l!==void 0?l:"0"),Number((o=void 0)!==null&&o!==void 0?o:"0"));return u.setFullYear(Number(c??"0")),u}const z=", ";function E({day:t,month:e,year:n,hours:a,minutes:s,seconds:r,milliseconds:i},{dateMode:l,dateTimeSeparator:o=z,timeMode:c}){var u;const d=((u=l.match(/y/g))===null||u===void 0?void 0:u.length)===2?n==null?void 0:n.slice(-2):n;return(l+(c?o+c:"")).replaceAll(/d+/g,t??"").replaceAll(/m+/g,e??"").replaceAll(/y+/g,d??"").replaceAll(/H+/g,a??"").replaceAll("MSS",i??"").replaceAll(/M+/g,s??"").replaceAll(/S+/g,r??"").replaceAll(/^\D+/g,"").replaceAll(/\D+$/g,"")}const K={day:31,month:12,year:9999},Ee=new Date("0001-01-01"),xe=new Date("9999-12-31"),Te=[":","."];function Ae({dateString:t,dateModeTemplate:e,dateSegmentsSeparator:n,offset:a,selection:[s,r]}){const i=C(t,e),l=Object.entries(i),o={};for(const[d,h]of l){const p=E(o,{dateMode:e}),S=K[d],f=p.length&&n.length,v=a+p.length+f+V(e)[d],y=v>=s&&v===r;if(y&&Number(h)>Number(S))return{validatedDateString:"",updatedSelection:[s,r]};if(y&&Number(h)<1)return{validatedDateString:"",updatedSelection:[s,r]};o[d]=h}const c=E(o,{dateMode:e}),u=c.length-t.length;return{validatedDateString:c,updatedSelection:[s+u,r+u]}}const Z=/[\\^$.*+?()[\]{}|]/g,ke=new RegExp(Z.source);function P(t){return t&&ke.test(t)?t.replaceAll(Z,"\\$&"):t}function L(t,e,n=0){return Number(t.padEnd(e.length,"0"))<=Number(e)?{validatedSegmentValue:t,prefixedZeroesCount:n}:t.endsWith("0")?L(`0${t.slice(0,e.length-1)}`,e,n+1):L(`${t.slice(0,e.length-1)}0`,e,n)}function F(t){return t.replaceAll(/[0-9]/g,e=>String.fromCharCode(e.charCodeAt(0)-65248))}function Ie({dateModeTemplate:t,dateSegmentSeparator:e,splitFn:n,uniteFn:a}){return({value:s,selection:r})=>{var i;const[l,o]=r,{dateStrings:c,restPart:u=""}=n(s),d=[];let h=0;c.forEach(S=>{const f=C(S,t),v=Object.entries(f).reduce((y,[x,_])=>{const{validatedSegmentValue:U,prefixedZeroesCount:X}=L(_,`${K[x]}`);return h+=X,Object.assign(Object.assign({},y),{[x]:U})},{});d.push(E(v,{dateMode:t}))});const p=a(d,s)+(!((i=c[c.length-1])===null||i===void 0)&&i.endsWith(e)?e:"")+u;return h&&p.slice(o+h,o+h+e.length)===e&&(h+=e.length),{selection:[l+h,o+h],value:p}}}function Me(){return({elementState:t,data:e})=>{const{value:n,selection:a}=t;return{elementState:{selection:a,value:F(n)},data:F(e)}}}function De(t,e){const n=V(e);return Object.fromEntries(Object.entries(t).map(([a,s])=>{const r=n[a];return[a,s.length===r&&s.match(/^0+$/)?"1".padStart(r,"0"):s]}))}function Le({dateModeTemplate:t,min:e=Ee,max:n=xe,rangeSeparator:a="",dateSegmentSeparator:s="."}){return({value:r,selection:i})=>{const l=a&&r.endsWith(a),o=W(r,t,a);let c="";for(const u of o){c+=c?a:"";const d=C(u,t);if(!we(u,t)){const S=De(d,t),f=E(S,{dateMode:t}),v=u.endsWith(s)?s:"";c+=f+v;continue}const h=be(d),p=fe(h,e,n);c+=E(Se(p),{dateMode:t})}return{selection:i,value:c+(l?a:"")}}}function $e({dateModeTemplate:t,dateSegmentsSeparator:e,rangeSeparator:n="",dateTimeSeparator:a=z}){return({elementState:s,data:r})=>{const i=n?new RegExp(`${n}|-`):a,l=r.split(i),o=r.includes(a)?[l[0]]:l;if(o.every(c=>c.trim().split(/\D/).filter(Boolean).length===t.split(e).length)){const c=o.map(u=>Be(u,t,e)).join(n);return{elementState:s,data:`${c}${r.includes(a)&&a+l[1]||""}`}}return{elementState:s,data:r}}}function Be(t,e,n){const a=t.split(/\D/).filter(Boolean),s=e.split(n);return a.map((r,i)=>i===s.length-1?r:r.padStart(s[i].length,"0")).join(n)}function Ce({dateModeTemplate:t,dateSegmentsSeparator:e,rangeSeparator:n=""}){return({elementState:a,data:s})=>{const{value:r,selection:i}=a;if(s===e)return{elementState:a,data:i[0]===r.length?s:""};const l=s.replaceAll(new RegExp(`[^\\d${P(e)}${n}]`,"g"),"");if(!l)return{elementState:a,data:""};const[o,c]=i;let u=c+s.length;const d=r.slice(0,o)+l+r.slice(u),h=W(d,t,n);let p="";const S=!!n&&d.includes(n);for(const v of h){const{validatedDateString:y,updatedSelection:x}=Ae({dateString:v,dateModeTemplate:t,dateSegmentsSeparator:e,offset:p.length,selection:[o,u]});if(v&&!y)return{elementState:a,data:""};u=x[1],p+=S&&!p?y+n:y}const f=p.slice(o,u);return{elementState:{selection:i,value:p.slice(0,o)+f.split(e).map(v=>"0".repeat(v.length)).join(e)+p.slice(u)},data:f}}}function Oe(){return({elementState:t},e)=>{const{value:n,selection:a}=t;if(!n||Re(n,a))return{elementState:t};const[s,r]=a,i=n.slice(s,r).replaceAll(/\d/g,"0"),l=n.slice(0,s)+i+n.slice(r);return e==="validation"||e==="insert"&&s===r?{elementState:{selection:a,value:l}}:{elementState:{selection:e==="deleteBackward"||e==="insert"?[s,s]:[r,r],value:l}}}}function Re(t,[e,n]){return n===t.length}function je({mode:t,separator:e=".",max:n,min:a}){const s=t.split("/").join(e);return Object.assign(Object.assign({},B),{mask:Array.from(s).map(r=>e.includes(r)?r:/\d/),overwriteMode:"replace",preprocessors:[Me(),Oe(),$e({dateModeTemplate:s,dateSegmentsSeparator:e}),Ce({dateModeTemplate:s,dateSegmentsSeparator:e})],postprocessors:[Ie({dateModeTemplate:s,dateSegmentSeparator:e,splitFn:r=>({dateStrings:[r]}),uniteFn:([r])=>r}),Le({min:a,max:n,dateModeTemplate:s,dateSegmentSeparator:e})]})}new RegExp(`[${Te.map(P).join("")}]$`);const Fe=/^(?:\d{4}[ -]?){0,3}\d{0,4}$/,m={visa:{final:/^4(?:\d{3}[- ]?){3}\d{3,4}$/,start:/^4/,length:/^4\d{0,15}$/},mastercard:{final:/^5[1-5]\d{3}[- ]?\d{4}[- ]?\d{4}[- ]?\d{4}$/,start:/^5[1-5]/,length:/^5[1-5]\d{0,15}$/},amex:{final:/^3[47]\d{2}[- ]?\d{6}[- ]?\d{5}$/,start:/^3[47]/,length:/^3[47]\d{0,15}$/},discover:{final:/^(6011|65|64[4-9])\d{4}[- ]?\d{4}[- ]?\d{4}$/,start:/^(6011|65|64[4-9])/,length:/^(6011|65|64[4-9])\d{0,15}$/},diners:{final:/^(30[0-5]|36|38|39)\d{4}[- ]?\d{4}[- ]?\d{4}$/,start:/^(30[0-5]|36|38|39)/,length:/^(30[0-5]|36|38|39)\d{0,14}$/},jcb:{final:/^(2131|1800|35[0-9]{3})\d{4}[- ]?\d{4}[- ]?\d{4}$/,start:/^(2131|1800|35[0-9]{3})/,length:/^(2131|1800|35[0-9]{3})\d{0,15}$/}};var $,Y;class Ne{constructor(e){ee(this,$),this.options=e}mount(){return this.number=this.options.fields.card.number instanceof HTMLInputElement?this.options.fields.card.number:document.querySelector(this.options.fields.card.number),this.date=this.options.fields.card.date instanceof HTMLInputElement?this.options.fields.card.date:document.querySelector(this.options.fields.card.date),this.cvv=this.options.fields.card.cvv instanceof HTMLInputElement?this.options.fields.card.cvv:document.querySelector(this.options.fields.card.cvv),te(this,$,Y).call(this),this}check(){const e=m.visa.final.test(this.number.value)||m.mastercard.final.test(this.number.value)||m.amex.final.test(this.number.value)||m.discover.final.test(this.number.value)||m.diners.final.test(this.number.value)||m.jcb.final.test(this.number.value),n=new RegExp("^(0[1-9]|1[0-2])/(?:\\d{2})$").test(this.date.value),a=new RegExp("^\\d{3}$").test(this.cvv.value);return{valid:e&&n&&a,number:{valid:e,value:this.number.value},date:{valid:n,value:this.date.value},cvv:{valid:a,value:this.cvv.value}}}type(){return m.visa.start.test(this.number.value)?"visa":m.mastercard.start.test(this.number.value)?"mastercard":m.amex.start.test(this.number.value)?"amex":m.discover.start.test(this.number.value)?"discover":m.diners.start.test(this.number.value)?"diners":m.jcb.start.test(this.number.value)?"jcb":"unknown"}value(e){if(e==="number")return this.number.value;if(e==="date")return this.date.value;if(e==="year"){const[,n]=this.date.value.split("/");return n}if(e==="month"){const[n]=this.date.value.split("/");return n}return e==="cvv"?this.cvv.value:null}}$=new WeakSet,Y=function(){new M(this.number,{mask:t=>m.visa.start.test(t.value)?new RegExp(m.visa.length):m.mastercard.start.test(t.value)?new RegExp(m.mastercard.length):m.amex.start.test(t.value)?new RegExp(m.amex.length):m.discover.start.test(t.value)?new RegExp(m.discover.length):m.diners.start.test(t.value)?new RegExp(m.diners.length):m.jcb.start.test(t.value)?new RegExp(m.jcb.length):new RegExp(Fe)}),new M(this.date,je({mode:"mm/yy",separator:"/"})),new M(this.cvv,{mask:[/\d/,/\d/,/\d/]})};/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */function qe(...t){return new Promise(e=>{if(!t.length){e([]);return}const n=t.map(s=>document.querySelector(s)).filter(Boolean);if(n.length===t.length){e(n);return}const a=new MutationObserver(()=>{const s=t.map(r=>document.querySelector(r)).filter(Boolean);s.length===t.length&&(a.disconnect(),e(s))});a.observe(document.body,{childList:!0,subtree:!0})})}function He(){const t=document.querySelector('meta[name="instant-payment"]');return!!(t&&t instanceof HTMLMetaElement&&t.content==="yes")}/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class Ve{constructor(e,n){T(this,"handleAuthorization",()=>{var r,i,l,o;if(this.cvvRequired=="1"&&document.getElementById("cvv").value.length<3){const c=document.getElementById("errors");c&&(c.innerText="CVV is required",c.style.display="block"),document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden");return}var e={};e.clientKey=this.publicKey,e.apiLoginID=this.loginId;var n={};n.cardNumber=(r=this.sc.value("number"))==null?void 0:r.replace(/[^\d]/g,""),n.month=(i=this.sc.value("month"))==null?void 0:i.replace(/[^\d]/g,""),n.year=`20${(l=this.sc.value("year"))==null?void 0:l.replace(/[^\d]/g,"")}`,n.cardCode=(o=this.sc.value("cvv"))==null?void 0:o.replace(/[^\d]/g,"");var a={};return a.authData=e,a.cardData=n,document.getElementById("pay-now")&&(document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden")),Accept.dispatchData(a,this.responseHandler),!1});T(this,"responseHandler",e=>{if(e.messages.resultCode==="Error"){var n=0;const a=document.getElementById("errors");a&&(a.innerText=`${e.messages.message[n].code}: ${e.messages.message[n].text}`,a.style.display="block"),document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden")}else if(e.messages.resultCode==="Ok"){document.getElementById("dataDescriptor").value=e.opaqueData.dataDescriptor,document.getElementById("dataValue").value=e.opaqueData.dataValue;let a=document.querySelector("input[name=token-billing-checkbox]:checked");a&&(document.getElementById("store_card").value=a.value),document.getElementById("server_response").submit()}return!1});T(this,"handle",()=>{Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(a=>a.addEventListener("click",s=>{document.getElementById("save-card--container").style.display="none",document.getElementById("authorize--credit-card-container").style.display="none",document.getElementById("token").value=s.target.dataset.token}));let e=document.getElementById("toggle-payment-with-credit-card");e&&e.addEventListener("click",()=>{document.getElementById("save-card--container").style.display="grid",document.getElementById("authorize--credit-card-container").style.display="flex",document.getElementById("token").value=null});let n=document.getElementById("pay-now");return n&&n.addEventListener("click",a=>{let s=document.getElementById("token");s.value?this.handlePayNowAction(s.value):this.handleAuthorization()}),this});this.publicKey=e,this.loginId=n,this.cardHolderName=document.getElementById("cardholder_name"),this.sc=new Ne({fields:{card:{number:"#number",date:"#date",cvv:"#cvv"}}}),this.sc.mount(),this.cvvRequired=document.querySelector('meta[name="authnet-require-cvv"]').content}handlePayNowAction(e){document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),document.getElementById("token").value=e,document.getElementById("server_response").submit()}}function N(){const t=document.querySelector('meta[name="authorize-public-key"]').content,e=document.querySelector('meta[name="authorize-login-id"]').content;new Ve(t,e).handle()}He()?N():qe("#authorize-net-credit-card-payment").then(()=>N());export{Ne as $,He as i,qe as w};
diff --git a/public/build/assets/authorize-stripe-acss-6fe37711.js b/public/build/assets/authorize-stripe-acss-6fe37711.js
deleted file mode 100644
index 4660302efd3d..000000000000
--- a/public/build/assets/authorize-stripe-acss-6fe37711.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{w as y}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */y("#stripe-acss-authorize").then(()=>f());function f(){var i,l,o;let n;const a=(i=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:i.content,r=(l=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:l.content;a&&a.length>0?n=Stripe(r,{stripeAccount:a}):n=Stripe(r);const c=document.getElementById("acss-name"),s=document.getElementById("acss-email-address"),t=document.getElementById("authorize-acss"),d=(o=document.querySelector('meta[name="stripe-pi-client-secret"]'))==null?void 0:o.content,e=document.getElementById("errors");t.addEventListener("click",async u=>{u.preventDefault(),e.hidden=!0,t.disabled=!0;const m=/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/;if(s.value.length<3||!s.value.match(m)){e.textContent="Please enter a valid email address.",e.hidden=!1,t.disabled=!1;return}if(c.value.length<3){e.textContent="Please enter a name for the account holder.",e.hidden=!1,t.disabled=!1;return}const{setupIntent:p,error:h}=await n.confirmAcssDebitSetup(d,{payment_method:{billing_details:{name:c.value,email:s.value}}});document.getElementById("gateway_response").value=JSON.stringify(p??h),document.getElementById("server_response").submit()})}
diff --git a/public/build/assets/braintree-credit-card-c80deaab.js b/public/build/assets/braintree-credit-card-c80deaab.js
deleted file mode 100644
index 643db7069361..000000000000
--- a/public/build/assets/braintree-credit-card-c80deaab.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as l,w as s}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class c{initBraintreeDataCollector(){window.braintree.client.create({authorization:document.querySelector("meta[name=client-token]").content},function(t,r){window.braintree.dataCollector.create({client:r,paypal:!0},function(n,e){n||(document.querySelector("input[name=client-data]").value=e.deviceData)})})}mountBraintreePaymentWidget(){window.braintree.dropin.create({authorization:document.querySelector("meta[name=client-token]").content,container:"#dropin-container",threeDSecure:document.querySelector("input[name=threeds_enable]").value.toLowerCase()==="true"},this.handleCallback)}handleCallback(t,r){if(t){console.error(t);return}let n=document.getElementById("pay-now"),e=JSON.parse(document.querySelector("input[name=threeds]").value);n.addEventListener("click",()=>{r.requestPaymentMethod({threeDSecure:{challengeRequested:!0,amount:e.amount,email:e.email,billingAddress:{givenName:e.billingAddress.givenName,surname:e.billingAddress.surname,phoneNumber:e.billingAddress.phoneNumber,streetAddress:e.billingAddress.streetAddress,extendedAddress:e.billingAddress.extendedAddress,locality:e.billingAddress.locality,region:e.billingAddress.region,postalCode:e.billingAddress.postalCode,countryCodeAlpha2:e.billingAddress.countryCodeAlpha2}}},function(i,a){if(i){console.log(i),dropin.clearSelectedPaymentMethod(),alert("There was a problem verifying this card, please contact your merchant");return}if(document.querySelector("input[name=threeds_enable]").value==="true"&&!a.liabilityShifted){console.log("Liability did not shift",a),alert("There was a problem verifying this card, please contact your merchant");return}n.disabled=!0,n.querySelector("svg").classList.remove("hidden"),n.querySelector("span").classList.add("hidden"),document.querySelector("input[name=gateway_response]").value=JSON.stringify(a);let d=document.querySelector('input[name="token-billing-checkbox"]:checked');d&&(document.querySelector('input[name="store_card"]').value=d.value),document.getElementById("server-response").submit()})})}handle(){this.initBraintreeDataCollector(),this.mountBraintreePaymentWidget(),Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(r=>r.addEventListener("click",n=>{document.getElementById("dropin-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=n.target.dataset.token,document.getElementById("pay-now-with-token").classList.remove("hidden"),document.getElementById("pay-now").classList.add("hidden")})),document.getElementById("toggle-payment-with-credit-card").addEventListener("click",r=>{document.getElementById("dropin-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value="",document.getElementById("pay-now-with-token").classList.add("hidden"),document.getElementById("pay-now").classList.remove("hidden")});let t=document.getElementById("pay-now-with-token");t.addEventListener("click",r=>{t.disabled=!0,t.querySelector("svg").classList.remove("hidden"),t.querySelector("span").classList.add("hidden"),document.getElementById("server-response").submit()})}}function o(){new c().handle()}l()?o():s("#braintree-credit-card-payment","meta[name=client-token]").then(()=>o());
diff --git a/public/build/assets/braintree-paypal-cf71d092.js b/public/build/assets/braintree-paypal-cf71d092.js
deleted file mode 100644
index 454da181ea18..000000000000
--- a/public/build/assets/braintree-paypal-cf71d092.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as l,w as s}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class a{initBraintreeDataCollector(){window.braintree.client.create({authorization:document.querySelector("meta[name=client-token]").content},function(e,t){window.braintree.dataCollector.create({client:t,paypal:!0},function(n,o){n||(document.querySelector("input[name=client-data]").value=o.deviceData)})})}static getPaymentDetails(){return{flow:"vault"}}static handleErrorMessage(e){let t=document.getElementById("errors");t.innerText=e,t.hidden=!1}handlePaymentWithToken(){Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(t=>t.addEventListener("click",n=>{document.getElementById("paypal-button").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=n.target.dataset.token,document.getElementById("pay-now-with-token").classList.remove("hidden"),document.getElementById("pay-now").classList.add("hidden")}));let e=document.getElementById("pay-now-with-token");e.addEventListener("click",t=>{e.disabled=!0,e.querySelector("svg").classList.remove("hidden"),e.querySelector("span").classList.add("hidden"),document.getElementById("server-response").submit()})}handle(){this.initBraintreeDataCollector(),this.handlePaymentWithToken(),braintree.client.create({authorization:document.querySelector("meta[name=client-token]").content}).then(function(e){return braintree.paypalCheckout.create({client:e})}).then(function(e){return e.loadPayPalSDK({vault:!0}).then(function(t){return paypal.Buttons({fundingSource:paypal.FUNDING.PAYPAL,createBillingAgreement:function(){return t.createPayment(a.getPaymentDetails())},onApprove:function(n,o){return t.tokenizePayment(n).then(function(c){let r=document.querySelector('input[name="token-billing-checkbox"]:checked');r&&(document.querySelector('input[name="store_card"]').value=r.value),document.querySelector("input[name=gateway_response]").value=JSON.stringify(c),document.getElementById("server-response").submit()})},onCancel:function(n){},onError:function(n){console.log(n.message),a.handleErrorMessage(n.message)}}).render("#paypal-button")})}).catch(function(e){console.log(e.message),a.handleErrorMessage(e.message)})}}function i(){new a().handle()}l()?i():s("#braintree-paypal-payment").then(()=>i());
diff --git a/public/build/assets/checkout-credit-card-5435b293.js b/public/build/assets/checkout-credit-card-5435b293.js
deleted file mode 100644
index 48f52f88f2db..000000000000
--- a/public/build/assets/checkout-credit-card-5435b293.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{w as o}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class s{constructor(){this.tokens=[]}handlePaymentUsingToken(t){document.getElementById("checkout--container").classList.add("hidden"),document.getElementById("pay-now-with-token--container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=t.target.dataset.token}handlePaymentUsingCreditCard(t){document.getElementById("checkout--container").classList.remove("hidden"),document.getElementById("pay-now-with-token--container").classList.add("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value="";const e=document.getElementById("pay-button"),d=document.querySelector('meta[name="public-key"]').content??"",a=document.getElementById("payment-form");Frames.init(d),Frames.addEventHandler(Frames.Events.CARD_VALIDATION_CHANGED,function(n){e.disabled=!Frames.isCardValid()}),Frames.addEventHandler(Frames.Events.CARD_TOKENIZATION_FAILED,function(n){e.disabled=!1}),Frames.addEventHandler(Frames.Events.CARD_TOKENIZED,function(n){e.disabled=!0,document.querySelector('input[name="gateway_response"]').value=JSON.stringify(n),document.querySelector('input[name="store_card"]').value=document.querySelector("input[name=token-billing-checkbox]:checked").value,document.getElementById("server-response").submit()}),a.addEventListener("submit",function(n){n.preventDefault(),e.disabled=!0,Frames.submitCard()})}completePaymentUsingToken(t){let e=document.getElementById("pay-now-with-token");e.disabled=!0,e.querySelector("svg").classList.remove("hidden"),e.querySelector("span").classList.add("hidden"),document.getElementById("server-response").submit()}handle(){this.handlePaymentUsingCreditCard(),Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(t=>t.addEventListener("click",this.handlePaymentUsingToken)),document.getElementById("toggle-payment-with-credit-card").addEventListener("click",this.handlePaymentUsingCreditCard),document.getElementById("pay-now-with-token").addEventListener("click",this.completePaymentUsingToken)}}o("#checkout-credit-card-payment").then(()=>new s().handle());
diff --git a/public/build/assets/eway-credit-card-319ea034.js b/public/build/assets/eway-credit-card-319ea034.js
deleted file mode 100644
index 89145a43e52a..000000000000
--- a/public/build/assets/eway-credit-card-319ea034.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as d,w as n}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class a{constructor(){this.cardStyles="padding: 2px; border: 1px solid #AAA; border-radius: 3px; height: 34px; width: 100%;",this.errorCodes=new Map,this.errorCodes.set("V6000","Validation error"),this.errorCodes.set("V6001","Invalid CustomerIP"),this.errorCodes.set("V6002","Invalid DeviceID"),this.errorCodes.set("V6003","Invalid Request PartnerID"),this.errorCodes.set("V6004","Invalid Request Method"),this.errorCodes.set("V6010","Invalid TransactionType, account not certified for eCome only MOTO or Recurring available"),this.errorCodes.set("V6011","Invalid Payment TotalAmount"),this.errorCodes.set("V6012","Invalid Payment InvoiceDescription"),this.errorCodes.set("V6013","Invalid Payment InvoiceNumber"),this.errorCodes.set("V6014","Invalid Payment InvoiceReference"),this.errorCodes.set("V6015","Invalid Payment CurrencyCode"),this.errorCodes.set("V6016","Payment Required"),this.errorCodes.set("V6017","Payment CurrencyCode Required"),this.errorCodes.set("V6018","Unknown Payment CurrencyCode"),this.errorCodes.set("V6019","Cardholder identity authentication required"),this.errorCodes.set("V6020","Cardholder Input Required"),this.errorCodes.set("V6021","EWAY_CARDHOLDERNAME Required"),this.errorCodes.set("V6022","EWAY_CARDNUMBER Required"),this.errorCodes.set("V6023","EWAY_CARDCVN Required"),this.errorCodes.set("V6024","Cardholder Identity Authentication One Time Password Not Active Yet"),this.errorCodes.set("V6025","PIN Required"),this.errorCodes.set("V6033","Invalid Expiry Date"),this.errorCodes.set("V6034","Invalid Issue Number"),this.errorCodes.set("V6035","Invalid Valid From Date"),this.errorCodes.set("V6039","Invalid Network Token Status"),this.errorCodes.set("V6040","Invalid TokenCustomerID"),this.errorCodes.set("V6041","Customer Required"),this.errorCodes.set("V6042","Customer FirstName Required"),this.errorCodes.set("V6043","Customer LastName Required"),this.errorCodes.set("V6044","Customer CountryCode Required"),this.errorCodes.set("V6045","Customer Title Required"),this.errorCodes.set("V6046","TokenCustomerID Required"),this.errorCodes.set("V6047","RedirectURL Required"),this.errorCodes.set("V6048","CheckoutURL Required when CheckoutPayment specified"),this.errorCodes.set("V6049","nvalid Checkout URL"),this.errorCodes.set("V6051","Invalid Customer FirstName"),this.errorCodes.set("V6052","Invalid Customer LastName"),this.errorCodes.set("V6053","Invalid Customer CountryCode"),this.errorCodes.set("V6058","Invalid Customer Title"),this.errorCodes.set("V6059","Invalid RedirectURL"),this.errorCodes.set("V6060","Invalid TokenCustomerID"),this.errorCodes.set("V6061","Invalid Customer Reference"),this.errorCodes.set("V6062","Invalid Customer CompanyName"),this.errorCodes.set("V6063","Invalid Customer JobDescription"),this.errorCodes.set("V6064","Invalid Customer Street1"),this.errorCodes.set("V6065","Invalid Customer Street2"),this.errorCodes.set("V6066","Invalid Customer City"),this.errorCodes.set("V6067","Invalid Customer State"),this.errorCodes.set("V6068","Invalid Customer PostalCode"),this.errorCodes.set("V6069","Invalid Customer Email"),this.errorCodes.set("V6070","Invalid Customer Phone"),this.errorCodes.set("V6071","Invalid Customer Mobile"),this.errorCodes.set("V6072","Invalid Customer Comments"),this.errorCodes.set("V6073","Invalid Customer Fax"),this.errorCodes.set("V6074","Invalid Customer URL"),this.errorCodes.set("V6075","Invalid ShippingAddress FirstName"),this.errorCodes.set("V6076","Invalid ShippingAddress LastName"),this.errorCodes.set("V6077","Invalid ShippingAddress Street1"),this.errorCodes.set("V6078","Invalid ShippingAddress Street2"),this.errorCodes.set("V6079","Invalid ShippingAddress City"),this.errorCodes.set("V6080","Invalid ShippingAddress State"),this.errorCodes.set("V6081","Invalid ShippingAddress PostalCode"),this.errorCodes.set("V6082","Invalid ShippingAddress Email"),this.errorCodes.set("V6083","Invalid ShippingAddress Phone"),this.errorCodes.set("V6084","Invalid ShippingAddress Country"),this.errorCodes.set("V6085","Invalid ShippingAddress ShippingMethod"),this.errorCodes.set("V6086","Invalid ShippingAddress Fax"),this.errorCodes.set("V6091","Unknown Customer CountryCode"),this.errorCodes.set("V6092","Unknown ShippingAddress CountryCode"),this.errorCodes.set("V6093","Insufficient Address Information"),this.errorCodes.set("V6100","Invalid EWAY_CARDNAME"),this.errorCodes.set("V6101","Invalid EWAY_CARDEXPIRYMONTH"),this.errorCodes.set("V6102","Invalid EWAY_CARDEXPIRYYEAR"),this.errorCodes.set("V6103","Invalid EWAY_CARDSTARTMONTH"),this.errorCodes.set("V6104","Invalid EWAY_CARDSTARTYEAR"),this.errorCodes.set("V6105","Invalid EWAY_CARDISSUENUMBER"),this.errorCodes.set("V6106","Invalid EWAY_CARDCVN"),this.errorCodes.set("V6107","Invalid EWAY_ACCESSCODE"),this.errorCodes.set("V6108","Invalid CustomerHostAddress"),this.errorCodes.set("V6109","Invalid UserAgent"),this.errorCodes.set("V6110","Invalid EWAY_CARDNUMBER"),this.errorCodes.set("V6111","Unauthorised API Access, Account Not PCI Certified"),this.errorCodes.set("V6112","Redundant card details other than expiry year and month"),this.errorCodes.set("V6113","Invalid transaction for refund"),this.errorCodes.set("V6114","Gateway validation error"),this.errorCodes.set("V6115","Invalid DirectRefundRequest, Transaction ID"),this.errorCodes.set("V6116","Invalid card data on original TransactionID"),this.errorCodes.set("V6117","Invalid CreateAccessCodeSharedRequest, FooterText"),this.errorCodes.set("V6118","Invalid CreateAccessCodeSharedRequest, HeaderText"),this.errorCodes.set("V6119","Invalid CreateAccessCodeSharedRequest, Language"),this.errorCodes.set("V6120","Invalid CreateAccessCodeSharedRequest, LogoUrl"),this.errorCodes.set("V6121","Invalid TransactionSearch, Filter Match Type"),this.errorCodes.set("V6122","Invalid TransactionSearch, Non numeric Transaction ID"),this.errorCodes.set("V6123","Invalid TransactionSearch,no TransactionID or AccessCode specified"),this.errorCodes.set("V6124","Invalid Line Items. The line items have been provided however the totals do not match the TotalAmount field"),this.errorCodes.set("V6125","Selected Payment Type not enabled"),this.errorCodes.set("V6126","Invalid encrypted card number, decryption failed"),this.errorCodes.set("V6127","Invalid encrypted cvn, decryption failed"),this.errorCodes.set("V6128","Invalid Method for Payment Type"),this.errorCodes.set("V6129","Transaction has not been authorised for Capture/Cancellation"),this.errorCodes.set("V6130","Generic customer information error"),this.errorCodes.set("V6131","Generic shipping information error"),this.errorCodes.set("V6132","Transaction has already been completed or voided, operation not permitted"),this.errorCodes.set("V6133","Checkout not available for Payment Type"),this.errorCodes.set("V6134","Invalid Auth Transaction ID for Capture/Void"),this.errorCodes.set("V6135","PayPal Error Processing Refund"),this.errorCodes.set("V6136","Original transaction does not exist or state is incorrect"),this.errorCodes.set("V6140","Merchant account is suspended"),this.errorCodes.set("V6141","Invalid PayPal account details or API signature"),this.errorCodes.set("V6142","Authorise not available for Bank/Branch"),this.errorCodes.set("V6143","Invalid Public Key"),this.errorCodes.set("V6144","Method not available with Public API Key Authentication"),this.errorCodes.set("V6145","Credit Card not allow if Token Customer ID is provided with Public API Key Authentication"),this.errorCodes.set("V6146","Client Side Encryption Key Missing or Invalid"),this.errorCodes.set("V6147","Unable to Create One Time Code for Secure Field"),this.errorCodes.set("V6148","Secure Field has Expired"),this.errorCodes.set("V6149","Invalid Secure Field One Time Code"),this.errorCodes.set("V6150","Invalid Refund Amount"),this.errorCodes.set("V6151","Refund amount greater than original transaction"),this.errorCodes.set("V6152","Original transaction already refunded for total amount"),this.errorCodes.set("V6153","Card type not support by merchant"),this.errorCodes.set("V6154","Insufficent Funds Available For Refund"),this.errorCodes.set("V6155","Missing one or more fields in request"),this.errorCodes.set("V6160","Encryption Method Not Supported"),this.errorCodes.set("V6161","Encryption failed, missing or invalid key"),this.errorCodes.set("V6165","Invalid Click-to-Pay (Visa Checkout) data or decryption failed"),this.errorCodes.set("V6170","Invalid TransactionSearch, Invoice Number is not unique"),this.errorCodes.set("V6171","Invalid TransactionSearch, Invoice Number not found"),this.errorCodes.set("V6220","Three domain secure XID invalid"),this.errorCodes.set("V6221","Three domain secure ECI invalid"),this.errorCodes.set("V6222","Three domain secure AVV invalid"),this.errorCodes.set("V6223","Three domain secure XID is required"),this.errorCodes.set("V6224","Three Domain Secure ECI is required"),this.errorCodes.set("V6225","Three Domain Secure AVV is required"),this.errorCodes.set("V6226","Three Domain Secure AuthStatus is required"),this.errorCodes.set("V6227","Three Domain Secure AuthStatus invalid"),this.errorCodes.set("V6228","Three domain secure Version is required"),this.errorCodes.set("V6230","Three domain secure Directory Server Txn ID invalid"),this.errorCodes.set("V6231","Three domain secure Directory Server Txn ID is required"),this.errorCodes.set("V6232","Three domain secure Version is invalid"),this.errorCodes.set("V6501","Invalid Amex InstallementPlan"),this.errorCodes.set("V6502","Invalid Number Of Installements for Amex. Valid values are from 0 to 99 inclusive"),this.errorCodes.set("V6503","Merchant Amex ID required"),this.errorCodes.set("V6504","Invalid Merchant Amex ID"),this.errorCodes.set("V6505","Merchant Terminal ID required"),this.errorCodes.set("V6506","Merchant category code required"),this.errorCodes.set("V6507","Invalid merchant category code"),this.errorCodes.set("V6508","Amex 3D ECI required"),this.errorCodes.set("V6509","Invalid Amex 3D ECI"),this.errorCodes.set("V6510","Invalid Amex 3D verification value"),this.errorCodes.set("V6511","Invalid merchant location data"),this.errorCodes.set("V6512","Invalid merchant street address"),this.errorCodes.set("V6513","Invalid merchant city"),this.errorCodes.set("V6514","Invalid merchant country"),this.errorCodes.set("V6515","Invalid merchant phone"),this.errorCodes.set("V6516","Invalid merchant postcode"),this.errorCodes.set("V6517","Amex connection error"),this.errorCodes.set("V6518","Amex EC Card Details API returned invalid data"),this.errorCodes.set("V6520","Invalid or missing Amex Point Of Sale Data"),this.errorCodes.set("V6521","Invalid or missing Amex transaction date time"),this.errorCodes.set("V6522","Invalid or missing Amex Original transaction date time"),this.errorCodes.set("V6530","Credit Card Number in non Credit Card Field")}get groupFieldConfig(){var e,t,r,s,o;return{publicApiKey:(e=document.querySelector("meta[name=public-api-key]"))==null?void 0:e.content,fieldDivId:"eway-secure-panel",fieldType:"group",styles:"",layout:{fonts:["Lobster"],rows:[{styles:"",cells:[{colSpan:12,styles:"margin-top: 15px;",label:{fieldColSpan:4,text:(t=document.querySelector("meta[name=translation-card-name]"))==null?void 0:t.content,styles:""},field:{fieldColSpan:8,fieldType:"name",styles:this.cardStyles,divStyles:"padding-left: 10px;"}},{colSpan:12,styles:"margin-top: 15px;",label:{fieldColSpan:4,text:(r=document.querySelector("meta[name=translation-expiry_date]"))==null?void 0:r.content,styles:""},field:{fieldColSpan:8,fieldType:"expirytext",styles:this.cardStyles,divStyles:"padding-left: 10px;"}}]},{styles:"",cells:[{colSpan:12,styles:"margin-top: 15px;",label:{fieldColSpan:4,text:(s=document.querySelector("meta[name=translation-card_number]"))==null?void 0:s.content,styles:""},field:{fieldColSpan:8,fieldType:"card",styles:this.cardStyles}},{colSpan:12,styles:"margin-top: 15px;",label:{fieldColSpan:4,text:(o=document.querySelector("meta[name=translation-cvv]"))==null?void 0:o.content,styles:""},field:{fieldColSpan:8,fieldType:"cvn",styles:this.cardStyles}}]}]}}}securePanelCallback(e){if(document.getElementById("errors").hidden=!0,e.errors)return this.handleErrors(e.errors);document.getElementById("authorize-card")&&(document.getElementById("authorize-card").disabled=!1),document.getElementById("pay-now")&&(document.getElementById("pay-now").disabled=!1),document.querySelector("input[name=securefieldcode]").value=e.secureFieldCode}handleErrors(e){let t=e.split(" "),r="";t.forEach(s=>{r=r.concat(this.errorCodes.get(s)+"
")}),document.getElementById("errors").innerHTML=r,document.getElementById("errors").hidden=!1}completeAuthorization(e){e.target.parentElement.disabled=!0,document.getElementById("server-response").submit()}completePaymentUsingToken(e){e.target.parentElement.disabled=!0,document.getElementById("server-response").submit()}completePaymentWithoutToken(e){e.target.parentElement.disabled=!0;let t=document.querySelector('input[name="token-billing-checkbox"]:checked');t&&(document.querySelector('input[name="store_card"]').value=t.value),document.getElementById("server-response").submit()}initialize(){this.eWAY=eWAY.setupSecureField(this.groupFieldConfig,e=>this.securePanelCallback(e))}handle(){var e,t;this.initialize(),(e=document.getElementById("authorize-card"))==null||e.addEventListener("click",r=>this.completeAuthorization(r)),Array.from(document.getElementsByClassName("toggle-payment-with-token")??[]).forEach(r=>r.addEventListener("click",s=>{document.getElementById("eway-secure-panel").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=s.target.dataset.token,document.getElementById("pay-now").disabled=!1})),document.getElementById("toggle-payment-with-credit-card")&&document.getElementById("toggle-payment-with-credit-card").addEventListener("click",r=>{document.getElementById("eway-secure-panel").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value="",document.getElementById("pay-now").disabled=!0}),(t=document.getElementById("pay-now"))==null||t.addEventListener("click",r=>document.querySelector("input[name=token]").value?this.completePaymentUsingToken(r):this.completePaymentWithoutToken(r))}}function i(){new a().handle()}d()?i():n("#eway-credit-card-payment").then(()=>i());
diff --git a/public/build/assets/forte-ach-payment-f051a883.js b/public/build/assets/forte-ach-payment-f051a883.js
deleted file mode 100644
index d2e77107618e..000000000000
--- a/public/build/assets/forte-ach-payment-f051a883.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var s=Object.defineProperty;var d=(n,e,t)=>e in n?s(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var o=(n,e,t)=>(d(n,typeof e!="symbol"?e+"":e,t),t);import{i,w as u}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://opensource.org/licenses/AAL
- */class c{constructor(e){o(this,"handleAuthorization",()=>{var e=document.getElementById("account-number").value,t=document.getElementById("routing-number").value,r={api_login_id:this.apiLoginId,account_number:e,routing_number:t,account_type:"checking"};return document.getElementById("pay-now")&&(document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden")),forte.createToken(r).success(this.successResponseHandler).error(this.failedResponseHandler),!1});o(this,"successResponseHandler",e=>(document.getElementById("payment_token").value=e.onetime_token,document.getElementById("server_response").submit(),!1));o(this,"failedResponseHandler",e=>{var t='- '+e.response_description+"
";return document.getElementById("forte_errors").innerHTML=t,document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden"),!1});o(this,"handle",()=>{let e=document.getElementById("pay-now");return e&&e.addEventListener("click",t=>{this.handleAuthorization()}),this});this.apiLoginId=e}}function a(){const n=document.querySelector('meta[name="forte-api-login-id"]').content;new c(n).handle()}i()?a():u("#force-ach-payment").then(()=>a());
diff --git a/public/build/assets/forte-credit-card-payment-5485d5f0.js b/public/build/assets/forte-credit-card-payment-5485d5f0.js
deleted file mode 100644
index 5a1e2dffbd1c..000000000000
--- a/public/build/assets/forte-credit-card-payment-5485d5f0.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var c=Object.defineProperty;var l=(n,e,t)=>e in n?c(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var a=(n,e,t)=>(l(n,typeof e!="symbol"?e+"":e,t),t);import{i as u,w as m,$ as p}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://opensource.org/licenses/AAL
- */class y{constructor(e){a(this,"handleAuthorization",()=>{var r,d,o,s;const e={api_login_id:this.apiLoginId,card_number:(r=this.sc.value("number"))==null?void 0:r.replace(/[^\d]/g,""),expire_year:`20${(d=this.sc.value("year"))==null?void 0:d.replace(/[^\d]/g,"")}`,expire_month:(o=this.sc.value("month"))==null?void 0:o.replace(/[^\d]/g,""),cvv:(s=this.sc.value("cvv"))==null?void 0:s.replace(/[^\d]/g,"")};return document.getElementById("pay-now")&&(document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden")),forte.createToken(e).success(this.successResponseHandler).error(this.failedResponseHandler),!1});a(this,"successResponseHandler",e=>(document.getElementById("payment_token").value=e.onetime_token,document.getElementById("card_brand").value=e.card_type,document.getElementById("server_response").submit(),!1));a(this,"failedResponseHandler",e=>{var t='- '+e.response_description+"
";return document.getElementById("forte_errors").innerHTML=t,document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden"),!1});a(this,"handle",()=>{let e=document.getElementById("pay-now");return e&&e.addEventListener("click",t=>{this.handleAuthorization()}),this});this.apiLoginId=e,this.cardHolderName=document.getElementById("cardholder_name"),this.sc=new p({fields:{card:{number:"#number",date:"#date",cvv:"#cvv"}}}),this.sc.mount()}}function i(){const n=document.querySelector('meta[name="forte-api-login-id"]').content;new y(n).handle()}u()?i():m("#forte-credit-card-payment").then(()=>i());
diff --git a/public/build/assets/mollie-credit-card-e1abdd68.js b/public/build/assets/mollie-credit-card-e1abdd68.js
deleted file mode 100644
index 5fc7bd1698a4..000000000000
--- a/public/build/assets/mollie-credit-card-e1abdd68.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as d,w as l}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class c{constructor(){var e,t;this.mollie=Mollie((e=document.querySelector("meta[name=mollie-profileId]"))==null?void 0:e.content,{testmode:(t=document.querySelector("meta[name=mollie-testmode]"))==null?void 0:t.content,locale:"en_US"})}createCardHolderInput(){let e=this.mollie.createComponent("cardHolder");e.mount("#card-holder");let t=document.getElementById("card-holder-error");return e.addEventListener("change",function(n){n.error&&n.touched?t.textContent=n.error:t.textContent=""}),this}createCardNumberInput(){let e=this.mollie.createComponent("cardNumber");e.mount("#card-number");let t=document.getElementById("card-number-error");return e.addEventListener("change",function(n){n.error&&n.touched?t.textContent=n.error:t.textContent=""}),this}createExpiryDateInput(){let e=this.mollie.createComponent("expiryDate");e.mount("#expiry-date");let t=document.getElementById("expiry-date-error");return e.addEventListener("change",function(n){n.error&&n.touched?t.textContent=n.error:t.textContent=""}),this}createCvvInput(){let e=this.mollie.createComponent("verificationCode");e.mount("#cvv");let t=document.getElementById("cvv-error");return e.addEventListener("change",function(n){n.error&&n.touched?t.textContent=n.error:t.textContent=""}),this}handlePayNowButton(){if(document.getElementById("pay-now").disabled=!0,document.querySelector("input[name=token]").value!=="")return document.querySelector("input[name=gateway_response]").value="",document.getElementById("server-response").submit();this.mollie.createToken().then(function(e){let t=e.token,n=e.error;if(n){document.getElementById("pay-now").disabled=!1;let o=document.getElementById("errors");o.innerText=n.message,o.hidden=!1;return}let r=document.querySelector('input[name="token-billing-checkbox"]:checked');r&&(document.querySelector('input[name="store_card"]').value=r.value),document.querySelector("input[name=gateway_response]").value=t,document.querySelector("input[name=token]").value="",document.getElementById("server-response").submit()})}handle(){this.createCardHolderInput().createCardNumberInput().createExpiryDateInput().createCvvInput(),Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(e=>e.addEventListener("click",t=>{document.getElementById("mollie--payment-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=t.target.dataset.token})),document.getElementById("toggle-payment-with-credit-card").addEventListener("click",e=>{document.getElementById("mollie--payment-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value=""}),document.getElementById("pay-now").addEventListener("click",()=>this.handlePayNowButton())}}function a(){new c().handle()}d()?a():l("#mollie-credit-card-payment").then(()=>a());
diff --git a/public/build/assets/paytrace-credit-card-f4dfde84.js b/public/build/assets/paytrace-credit-card-f4dfde84.js
deleted file mode 100644
index a208bb8fa87c..000000000000
--- a/public/build/assets/paytrace-credit-card-f4dfde84.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as o,w as i}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class d{constructor(){var t;this.clientKey=(t=document.querySelector("meta[name=paytrace-client-key]"))==null?void 0:t.content}get creditCardStyles(){return{font_color:"#000",border_color:"#a1b1c9",border_style:"dotted",font_size:"13pt",input_border_radius:"3px",input_border_width:"1px",input_font:"Times New Roman, arial, fantasy",input_font_weight:"400",input_margin:"5px 0px 5px 0px",input_padding:"0px 5px 0px 5px",label_color:"#a0aec0",label_size:"16px",label_width:"150px",label_font:"Times New Roman, sans-serif, serif",label_font_weight:"light",label_margin:"5px 0px 0px 0px",label_padding:"0px 5px 0px 5px",background_color:"white",height:"30px",width:"370px",padding_bottom:"0px"}}get codeStyles(){return{font_color:"#000",border_color:"#a1b1c9",border_style:"dotted",font_size:"13pt",input_border_radius:"2px",input_border_width:"1px",input_font:"serif, cursive, fantasy",input_font_weight:"700",input_margin:"5px 0px 5px 20px",input_padding:"0px 5px 0px 5px",label_color:"#a0aec0",label_size:"16px",label_width:"150px",label_font:"sans-serif, arial, serif",label_font_weight:"bold",label_margin:"5px 0px 0px 20px",label_padding:"2px 5px 2px 5px",background_color:"white",height:"30px",width:"150px",padding_bottom:"2px"}}get expStyles(){return{font_color:"#000",border_color:"#a1b1c9",border_style:"dashed",font_size:"12pt",input_border_radius:"0px",input_border_width:"2px",input_font:"arial, cursive, fantasy",input_font_weight:"400",input_margin:"5px 0px 5px 0px",input_padding:"0px 5px 0px 5px",label_color:"#a0aec0",label_size:"16px",label_width:"150px",label_font:"arial, fantasy, serif",label_font_weight:"normal",label_margin:"5px 0px 0px 0px",label_padding:"2px 5px 2px 5px",background_color:"white",height:"30px",width:"85px",padding_bottom:"2px",type:"dropdown"}}updatePayTraceLabels(){window.PTPayment.getControl("securityCode").label.text(document.querySelector("meta[name=ctrans-cvv]").content),window.PTPayment.getControl("creditCard").label.text(document.querySelector("meta[name=ctrans-card_number]").content),window.PTPayment.getControl("expiration").label.text(document.querySelector("meta[name=ctrans-expires]").content)}setupPayTrace(){return window.PTPayment.setup({styles:{code:this.codeStyles,cc:this.creditCardStyles,exp:this.expStyles},authorization:{clientKey:this.clientKey}})}handlePaymentWithCreditCard(t){t.target.parentElement.disabled=!0,document.getElementById("errors").hidden=!0,window.PTPayment.validate(n=>{if(n.length>=1){let e=document.getElementById("errors");return e.textContent=n[0].description,e.hidden=!1,t.target.parentElement.disabled=!1}this.ptInstance.process().then(e=>{document.getElementById("HPF_Token").value=e.message.hpf_token,document.getElementById("enc_key").value=e.message.enc_key;let a=document.querySelector('input[name="token-billing-checkbox"]:checked');a&&(document.querySelector('input[name="store_card"]').value=a.value),document.getElementById("server_response").submit()}).catch(e=>{document.getElementById("errors").textContent=JSON.stringify(e),document.getElementById("errors").hidden=!1,console.log(e)})})}handlePaymentWithToken(t){t.target.parentElement.disabled=!0,document.getElementById("server_response").submit()}handle(){var t;Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(n=>n.addEventListener("click",e=>{document.getElementById("paytrace--credit-card-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=e.target.dataset.token})),(t=document.getElementById("toggle-payment-with-credit-card"))==null||t.addEventListener("click",n=>{document.getElementById("paytrace--credit-card-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value="",this.setupPayTrace().then(e=>{this.ptInstance=e,this.updatePayTraceLabels()})}),document.getElementById("pay-now").addEventListener("click",n=>document.querySelector("input[name=token]").value===""?this.handlePaymentWithCreditCard(n):this.handlePaymentWithToken(n)),Array.from(document.getElementsByClassName("toggle-payment-with-token")).length===0&&!o()&&document.getElementById("toggle-payment-with-credit-card").click()}}function r(){new d().handle()}o()?r():i("#paytrace-credit-card-payment").then(()=>r());
diff --git a/public/build/assets/razorpay-aio-d613afa9.js b/public/build/assets/razorpay-aio-d613afa9.js
deleted file mode 100644
index 393526403f5a..000000000000
--- a/public/build/assets/razorpay-aio-d613afa9.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i,w as d}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */function o(){var a;let e=JSON.parse((a=document.querySelector("meta[name=razorpay-options]"))==null?void 0:a.content);e.handler=function(n){document.getElementById("razorpay_payment_id").value=n.razorpay_payment_id,document.getElementById("razorpay_signature").value=n.razorpay_signature,document.getElementById("server-response").submit()},e.modal={ondismiss:function(){t.disabled=!1}};let r=new Razorpay(e),t=document.getElementById("pay-now");t.onclick=function(n){t.disabled=!0,r.open()}}i()?o():d("#razorpay-hosted-payment").then(()=>o());
diff --git a/public/build/assets/square-credit-card-83a3d702.js b/public/build/assets/square-credit-card-83a3d702.js
deleted file mode 100644
index 6461fea4dee5..000000000000
--- a/public/build/assets/square-credit-card-83a3d702.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i,w as d}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class s{constructor(){this.appId=document.querySelector("meta[name=square-appId]").content,this.locationId=document.querySelector("meta[name=square-locationId]").content,this.isLoaded=!1}async init(){this.payments=Square.payments(this.appId,this.locationId),this.card=await this.payments.card(),await this.card.attach("#card-container"),this.isLoaded=!0;let e=document.querySelector(".sq-card-iframe-container");e&&e.setAttribute("style","150px !important"),document.querySelector(".toggle-payment-with-token")&&document.getElementById("card-container").classList.add("hidden")}async completePaymentWithoutToken(e){document.getElementById("errors").hidden=!0,e.target.parentElement.disabled=!0;let t=await this.card.tokenize(),o;try{const n={amount:document.querySelector("meta[name=amount]").content,billingContact:JSON.parse(document.querySelector("meta[name=square_contact]").content),currencyCode:document.querySelector("meta[name=currencyCode]").content,intent:"CHARGE"};o=(await this.payments.verifyBuyer(t.token,n)).token}catch{e.target.parentElement.disabled=!0}if(document.querySelector('input[name="verificationToken"]').value=o,t.status==="OK"){document.getElementById("sourceId").value=t.token;let n=document.querySelector('input[name="token-billing-checkbox"]:checked');return n&&(document.querySelector('input[name="store_card"]').value=n.value),document.getElementById("server_response").submit()}document.getElementById("errors").textContent=t.errors[0].message,document.getElementById("errors").hidden=!1,e.target.parentElement.disabled=!1}async completePaymentUsingToken(e){return e.target.parentElement.disabled=!0,document.getElementById("server_response").submit()}async verifyBuyer(e){const t={amount:document.querySelector("meta[name=amount]").content,billingContact:document.querySelector("meta[name=square_contact]").content,currencyCode:document.querySelector("meta[name=currencyCode]").content,intent:"CHARGE"};return(await this.payments.verifyBuyer(e,t)).token}async handle(){document.getElementById("payment-list").classList.add("hidden"),await this.init().then(()=>{var e,t,o,n;(e=document.getElementById("authorize-card"))==null||e.addEventListener("click",a=>this.completePaymentWithoutToken(a)),(t=document.getElementById("pay-now"))==null||t.addEventListener("click",a=>document.querySelector("input[name=token]").value?this.completePaymentUsingToken(a):this.completePaymentWithoutToken(a)),Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(a=>a.addEventListener("click",async r=>{document.getElementById("card-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=r.target.dataset.token})),(o=document.getElementById("toggle-payment-with-credit-card"))==null||o.addEventListener("click",async a=>{document.getElementById("card-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value=""}),document.getElementById("loader").classList.add("hidden"),document.getElementById("payment-list").classList.remove("hidden"),(n=document.getElementById("toggle-payment-with-credit-card"))==null||n.click()})}}function c(){new s().handle()}i()?c():d("#square-credit-card-payment").then(()=>c());
diff --git a/public/build/assets/stripe-ach-pay-0bf320bd.js b/public/build/assets/stripe-ach-pay-0bf320bd.js
deleted file mode 100644
index 5175db958573..000000000000
--- a/public/build/assets/stripe-ach-pay-0bf320bd.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{w as g}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */g("#stripe-ach-payment").then(()=>f());function f(){let d=document.getElementById("pay-now");d&&(Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(e=>e.addEventListener("click",n=>{document.querySelector("input[name=source]").value=n.target.dataset.token})),d.addEventListener("click",function(){let e=document.getElementById("pay-now");e.disabled=!0,e.querySelector("svg").classList.remove("hidden"),e.querySelector("span").classList.add("hidden"),document.getElementById("server-response").submit()})),document.getElementById("new-bank").addEventListener("click",e=>{var m,y;if(!document.getElementById("accept-terms").checked){errors.textContent="You must accept the mandate terms prior to making payment.",errors.hidden=!1;return}errors.hidden=!0;let n,t=document.querySelector('meta[name="stripe-publishable-key"]').content,o=(m=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:m.content;o?n=Stripe(t,{stripeAccount:o}):n=Stripe(t);let s=document.getElementById("new-bank");s.disabled=!0,s.querySelector("svg").classList.remove("hidden"),s.querySelector("span").classList.add("hidden"),e.preventDefault();const c=document.getElementById("account-holder-name-field"),r=document.getElementById("email-field"),u=(y=document.querySelector('meta[name="client_secret"]'))==null?void 0:y.content;n.collectBankAccountForPayment({clientSecret:u,params:{payment_method_type:"us_bank_account",payment_method_data:{billing_details:{name:c.value,email:r.value}}},expand:["payment_method"]}).then(({paymentIntent:i,error:l})=>{if(l)console.error(l.message),errors.textContent=l.message,errors.hidden=!1,a();else if(i.status==="requires_payment_method"){errors.textContent="We were unable to process the payment with this account, please try another one.",errors.hidden=!1,a();return}else if(i.status==="requires_confirmation"){let h=document.getElementById("bank_account_response");h.value=JSON.stringify(i),p(n,u)}a()})});function p(e,n){e.confirmUsBankAccountPayment(n).then(({paymentIntent:t,error:o})=>{var s,c;if(console.log(t),o)console.error(o.message);else if(t.status==="requires_payment_method")errors.textContent="We were unable to process the payment with this account, please try another one.",errors.hidden=!1,a();else if(t.status==="processing"){let r=document.getElementById("gateway_response");r.value=JSON.stringify(t),document.getElementById("server-response").submit()}else if(((s=t.next_action)==null?void 0:s.type)==="verify_with_microdeposits"||((c=t.next_action)==null?void 0:c.type)==="requires_source_action"){errors.textContent="You will receive an email with details on how to verify your bank account and process payment.",errors.hidden=!1,document.getElementById("new-bank").style.visibility="hidden";let r=document.getElementById("gateway_response");r.value=JSON.stringify(t),document.getElementById("server-response").submit()}})}function a(){let e=document.getElementById("new-bank");e.disabled=!1,e.querySelector("svg").classList.add("hidden"),e.querySelector("span").classList.remove("hidden")}}
diff --git a/public/build/assets/stripe-acss-dd3e9f85.js b/public/build/assets/stripe-acss-dd3e9f85.js
deleted file mode 100644
index 592f90e653e1..000000000000
--- a/public/build/assets/stripe-acss-dd3e9f85.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var d=Object.defineProperty;var c=(o,e,t)=>e in o?d(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var a=(o,e,t)=>(c(o,typeof e!="symbol"?e+"":e,t),t);import{i,w as l}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class m{constructor(e,t){a(this,"setupStripe",()=>(this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this));a(this,"handle",()=>{Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(e=>e.addEventListener("click",t=>{document.querySelector("input[name=token]").value=t.target.dataset.token,console.log(t.target.dataset.token)})),document.getElementById("toggle-payment-with-new-account")&&document.getElementById("toggle-payment-with-new-account").addEventListener("click",e=>{document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value=""}),document.getElementById("pay-now-with-token")?document.getElementById("pay-now-with-token").addEventListener("click",e=>{document.querySelector("input[name=token]").value,document.getElementById("pay-now-with-token").disabled=!0,document.querySelector("#pay-now-with-token > svg").classList.remove("hidden"),document.querySelector("#pay-now-with-token > span").classList.add("hidden"),document.getElementById("server-response").submit()}):document.getElementById("pay-now").addEventListener("click",e=>{let t=document.querySelector('input[name="token-billing-checkbox"]:checked');t&&(document.querySelector('input[name="store_card"]').value=t.value);let n=document.getElementById("errors");if(n.textContent="",n.hidden=!0,document.getElementById("acss-name").value===""){document.getElementById("acss-name").focus(),n.textContent=document.querySelector("meta[name=translation-name-required]").content,n.hidden=!1;return}if(document.getElementById("acss-email-address").value===""){document.getElementById("acss-email-address").focus(),n.textContent=document.querySelector("meta[name=translation-email-required]").content,n.hidden=!1;return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmAcssDebitPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{billing_details:{name:document.getElementById("acss-name").value,email:document.getElementById("acss-email-address").value}}}).then(s=>s.error?this.handleFailure(s.error.message):this.handleSuccess(s))})});this.key=e,this.errors=document.getElementById("errors"),this.stripeConnect=t}handleSuccess(e){document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.paymentIntent),document.getElementById("server-response").submit()}handleFailure(e){let t=document.getElementById("errors");t.textContent="",t.textContent=e,t.hidden=!1,document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden")}}function r(){var t,n;const o=((t=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:t.content)??"",e=((n=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:n.content)??"";new m(o,e).setupStripe().handle()}i()?r():l("#stripe-acss-payment").then(()=>r());
diff --git a/public/build/assets/stripe-alipay-4a3641d0.js b/public/build/assets/stripe-alipay-4a3641d0.js
deleted file mode 100644
index b2c9cc62ab46..000000000000
--- a/public/build/assets/stripe-alipay-4a3641d0.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var i=Object.defineProperty;var c=(n,e,t)=>e in n?i(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var r=(n,e,t)=>(c(n,typeof e!="symbol"?e+"":e,t),t);import{i as a,w as d}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class l{constructor(e,t){r(this,"setupStripe",()=>(this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this));this.key=e,this.stripeConnect=t,this.errors=document.getElementById("errors")}async handle(){document.getElementById("pay-now").addEventListener("click",async e=>{document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden");const{error:t}=await this.stripe.confirmAlipayPayment(document.querySelector("meta[name=ci_intent]").content,{return_url:`${document.querySelector("meta[name=return_url]").content}`});document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),t&&(this.errors.textContent="",this.errors.textContent=result.error.message,this.errors.hidden=!1)})}}function o(){var t,s;const n=((t=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:t.content)??"",e=((s=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:s.content)??"";new l(n,e).setupStripe().handle()}a()?o():d("#stripe-alipay-payment").then(()=>o());
diff --git a/public/build/assets/stripe-bacs-7ec06b1d.js b/public/build/assets/stripe-bacs-7ec06b1d.js
deleted file mode 100644
index d24ce168057b..000000000000
--- a/public/build/assets/stripe-bacs-7ec06b1d.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var a=Object.defineProperty;var c=(n,e,t)=>e in n?a(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var s=(n,e,t)=>(c(n,typeof e!="symbol"?e+"":e,t),t);import{i as d,w as u}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class l{constructor(e,t){s(this,"setupStripe",()=>(this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this));s(this,"payment_data");s(this,"handle",()=>{this.onlyAuthorization?document.getElementById("authorize-bacs").addEventListener("click",e=>{document.getElementById("authorize-bacs").disabled=!0,document.querySelector("#authorize-bacs > svg").classList.remove("hidden"),document.querySelector("#authorize-bacs > span").classList.add("hidden"),location.href=document.querySelector("meta[name=stripe-redirect-url]").content}):(this.payNowButton=document.getElementById("pay-now"),document.getElementById("pay-now").addEventListener("click",e=>{this.payNowButton.disabled=!0,this.payNowButton.querySelector("svg").classList.remove("hidden"),this.payNowButton.querySelector("span").classList.add("hidden"),document.getElementById("server-response").submit()}),this.payment_data=Array.from(document.getElementsByClassName("toggle-payment-with-token")),this.payment_data.length>0?this.payment_data.forEach(e=>e.addEventListener("click",t=>{document.querySelector("input[name=token]").value=t.target.dataset.token})):(this.errors.textContent=document.querySelector("meta[name=translation-payment-method-required]").content,this.errors.hidden=!1,this.payNowButton.disabled=!0,this.payNowButton.querySelector("span").classList.remove("hidden"),this.payNowButton.querySelector("svg").classList.add("hidden")))});this.key=e,this.errors=document.getElementById("errors"),this.stripeConnect=t,this.onlyAuthorization=onlyAuthorization}}function r(){var t,o,i;const n=((t=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:t.content)??"",e=((o=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:o.content)??"";(i=document.querySelector('meta[name="only-authorization"]'))==null||i.content,new l(n,e).setupStripe().handle()}d()?r():u("#stripe-bacs-payment").then(()=>r());
diff --git a/public/build/assets/stripe-bancontact-93a0a43b.js b/public/build/assets/stripe-bancontact-93a0a43b.js
deleted file mode 100644
index 4bf04c1d3792..000000000000
--- a/public/build/assets/stripe-bancontact-93a0a43b.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var s=Object.defineProperty;var a=(n,t,e)=>t in n?s(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var r=(n,t,e)=>(a(n,typeof t!="symbol"?t+"":t,e),e);import{i,w as m}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class l{constructor(t,e){r(this,"setupStripe",()=>(this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this));r(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",t=>{let e=document.getElementById("errors");if(!document.getElementById("bancontact-name").value){e.textContent=document.querySelector("meta[name=translation-name-required]").content,e.hidden=!1,console.log("name");return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmBancontactPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{billing_details:{name:document.getElementById("bancontact-name").value}},return_url:document.querySelector('meta[name="return-url"]').content})})});this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=e}}function c(){var e,o;const n=((e=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:e.content)??"",t=((o=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:o.content)??"";new l(n,t).setupStripe().handle()}i()?c():m("#stripe-bancontact-payment").then(()=>c());
diff --git a/public/build/assets/stripe-bank-transfer-c3e1a9c7.js b/public/build/assets/stripe-bank-transfer-c3e1a9c7.js
deleted file mode 100644
index 77fe60396cc1..000000000000
--- a/public/build/assets/stripe-bank-transfer-c3e1a9c7.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as p,w as y}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2024. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */p()?c():y("#stripe-bank-transfer-payment").then(()=>c());function c(){var r,o,s;const m=(r=document.querySelector('meta[name="stripe-client-secret"]'))==null?void 0:r.content,i=(o=document.querySelector('meta[name="stripe-return-url"]'))==null?void 0:o.content,d={clientSecret:m,appearance:{theme:"stripe",variables:{colorPrimary:"#0570de",colorBackground:"#ffffff",colorText:"#30313d",colorDanger:"#df1b41",fontFamily:"Ideal Sans, system-ui, sans-serif",spacingUnit:"2px",borderRadius:"4px"}}},e=Stripe(document.querySelector('meta[name="stripe-publishable-key"]').getAttribute("content")),t=((s=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:s.content)??"";t&&(e.stripeAccount=t);const n=e.elements(d);n.create("payment").mount("#payment-element"),document.getElementById("payment-form").addEventListener("submit",async l=>{l.preventDefault(),document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden");const{error:a}=await e.confirmPayment({elements:n,confirmParams:{return_url:i}});if(a){document.getElementById("pay-now").disabled=!1,document.querySelector("svg").classList.remove("hidden"),document.querySelector("span").classList.add("hidden");const u=document.querySelector("#errors");u.textContent=a.message}})}
diff --git a/public/build/assets/stripe-becs-d51dcef6.js b/public/build/assets/stripe-becs-d51dcef6.js
deleted file mode 100644
index a0590a8c600e..000000000000
--- a/public/build/assets/stripe-becs-d51dcef6.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var c=Object.defineProperty;var r=(n,t,e)=>t in n?c(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var o=(n,t,e)=>(r(n,typeof t!="symbol"?t+"":t,e),e);import{i,w as d}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class l{constructor(t,e){o(this,"setupStripe",()=>{this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key);const t=this.stripe.elements(),s={style:{base:{color:"#32325d",fontSize:"16px","::placeholder":{color:"#aab7c4"},":-webkit-autofill":{color:"#32325d"}},invalid:{color:"#fa755a",iconColor:"#fa755a",":-webkit-autofill":{color:"#fa755a"}}},disabled:!1,hideIcon:!1,iconStyle:"default"};return this.auBankAccount=t.create("auBankAccount",s),this.auBankAccount.mount("#becs-iban"),this});o(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",t=>{let e=document.getElementById("errors");if(document.getElementById("becs-name").value===""){document.getElementById("becs-name").focus(),e.textContent=document.querySelector("meta[name=translation-name-required]").content,e.hidden=!1;return}if(document.getElementById("becs-email-address").value===""){document.getElementById("becs-email-address").focus(),e.textContent=document.querySelector("meta[name=translation-email-required]").content,e.hidden=!1;return}if(!document.getElementById("becs-mandate-acceptance").checked){document.getElementById("becs-mandate-acceptance").focus(),e.textContent=document.querySelector("meta[name=translation-terms-required]").content,e.hidden=!1,console.log("Terms");return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmAuBecsDebitPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{au_becs_debit:this.auBankAccount,billing_details:{name:document.getElementById("becs-name").value,email:document.getElementById("becs-email-address").value}}}).then(s=>s.error?this.handleFailure(s.error.message):this.handleSuccess(s))})});this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=e}handleSuccess(t){document.querySelector('input[name="gateway_response"]').value=JSON.stringify(t.paymentIntent),document.getElementById("server-response").submit()}handleFailure(t){let e=document.getElementById("errors");e.textContent="",e.textContent=t,e.hidden=!1,document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden")}}function a(){var e,s;const n=((e=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:e.content)??"",t=((s=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:s.content)??"";new l(n,t).setupStripe().handle()}i()?a():d("#stripe-becs-payment").then(()=>a());
diff --git a/public/build/assets/stripe-browserpay-81063a43.js b/public/build/assets/stripe-browserpay-81063a43.js
deleted file mode 100644
index 128053991530..000000000000
--- a/public/build/assets/stripe-browserpay-81063a43.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as o,w as i}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com).
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class m{constructor(){var e;this.clientSecret=(e=document.querySelector("meta[name=stripe-pi-client-secret]"))==null?void 0:e.content}init(){var t,n;let e={};return document.querySelector("meta[name=stripe-account-id]")&&(e.apiVersion="2020-08-27",e.stripeAccount=(t=document.querySelector("meta[name=stripe-account-id]"))==null?void 0:t.content),this.stripe=Stripe((n=document.querySelector("meta[name=stripe-publishable-key]"))==null?void 0:n.content,e),this.elements=this.stripe.elements(),this}createPaymentRequest(){return this.paymentRequest=this.stripe.paymentRequest(JSON.parse(document.querySelector("meta[name=payment-request-data").content)),this}createPaymentRequestButton(){this.paymentRequestButton=this.elements.create("paymentRequestButton",{paymentRequest:this.paymentRequest})}handlePaymentRequestEvents(e,t){document.querySelector("#errors").hidden=!0,this.paymentRequest.on("paymentmethod",function(n){e.confirmCardPayment(t,{payment_method:n.paymentMethod.id},{handleActions:!1}).then(function(r){r.error?(document.querySelector("#errors").innerText=r.error.message,document.querySelector("#errors").hidden=!1,n.complete("fail")):(n.complete("success"),r.paymentIntent.status==="requires_action"?e.confirmCardPayment(t).then(function(s){s.error?(n.complete("fail"),document.querySelector("#errors").innerText=s.error.message,document.querySelector("#errors").hidden=!1):(document.querySelector('input[name="gateway_response"]').value=JSON.stringify(s.paymentIntent),document.getElementById("server-response").submit())}):(document.querySelector('input[name="gateway_response"]').value=JSON.stringify(r.paymentIntent),document.getElementById("server-response").submit()))})})}handle(){this.init().createPaymentRequest().createPaymentRequestButton(),this.paymentRequest.canMakePayment().then(e=>{var t;if(e)return this.paymentRequestButton.mount("#payment-request-button");document.querySelector("#errors").innerHTML=JSON.parse((t=document.querySelector("meta[name=no-available-methods]"))==null?void 0:t.content),document.querySelector("#errors").hidden=!1}),this.handlePaymentRequestEvents(this.stripe,this.clientSecret)}}function a(){new m().handle()}o()?a():i("#stripe-browserpay-payment").then(()=>a());
diff --git a/public/build/assets/stripe-credit-card-843d7cd3.js b/public/build/assets/stripe-credit-card-843d7cd3.js
deleted file mode 100644
index b01af7f0b1fe..000000000000
--- a/public/build/assets/stripe-credit-card-843d7cd3.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import{i as c,w as u}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class m{constructor(e,t,n,r){this.key=e,this.secret=t,this.onlyAuthorization=n,this.stripeConnect=r}setupStripe(){return this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this.elements=this.stripe.elements(),this}createElement(){var e;return this.cardElement=this.elements.create("card",{hidePostalCode:((e=document.querySelector("meta[name=stripe-require-postal-code]"))==null?void 0:e.content)==="0",value:{postalCode:document.querySelector("meta[name=client-postal-code]").content},hideIcon:!1}),this}mountCardElement(){return this.cardElement.mount("#card-element"),this}completePaymentUsingToken(){let e=document.querySelector("input[name=token]").value,t=document.getElementById("pay-now");this.payNowButton=t,this.payNowButton.disabled=!0,this.payNowButton.querySelector("svg").classList.remove("hidden"),this.payNowButton.querySelector("span").classList.add("hidden"),this.stripe.handleCardPayment(this.secret,{payment_method:e}).then(n=>n.error?this.handleFailure(n.error.message):this.handleSuccess(n))}completePaymentWithoutToken(){let e=document.getElementById("pay-now");this.payNowButton=e,this.payNowButton.disabled=!0,this.payNowButton.querySelector("svg").classList.remove("hidden"),this.payNowButton.querySelector("span").classList.add("hidden");let t=document.getElementById("cardholder-name");this.stripe.handleCardPayment(this.secret,this.cardElement,{payment_method_data:{billing_details:{name:t.value}}}).then(n=>n.error?this.handleFailure(n.error.message):this.handleSuccess(n))}handleSuccess(e){document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.paymentIntent);let t=document.querySelector('input[name="token-billing-checkbox"]:checked');t&&(document.querySelector('input[name="store_card"]').value=t.value),document.getElementById("server-response").submit()}handleFailure(e){let t=document.getElementById("errors");t.textContent="",t.textContent=e,t.hidden=!1,this.payNowButton.disabled=!1,this.payNowButton.querySelector("svg").classList.add("hidden"),this.payNowButton.querySelector("span").classList.remove("hidden")}handleAuthorization(){let e=document.getElementById("cardholder-name"),t=document.getElementById("authorize-card");this.payNowButton=t,this.payNowButton.disabled=!0,this.payNowButton.querySelector("svg").classList.remove("hidden"),this.payNowButton.querySelector("span").classList.add("hidden"),this.stripe.handleCardSetup(this.secret,this.cardElement,{payment_method_data:{billing_details:{name:e.value}}}).then(n=>n.error?this.handleFailure(n.error.message):this.handleSuccessfulAuthorization(n))}handleSuccessfulAuthorization(e){document.getElementById("gateway_response").value=JSON.stringify(e.setupIntent),document.getElementById("server_response").submit()}handle(){this.setupStripe(),this.onlyAuthorization?(this.createElement().mountCardElement(),document.getElementById("authorize-card").addEventListener("click",()=>this.handleAuthorization())):(Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(e=>e.addEventListener("click",t=>{document.getElementById("stripe--payment-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=t.target.dataset.token})),document.getElementById("toggle-payment-with-credit-card").addEventListener("click",e=>{document.getElementById("stripe--payment-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value=""}),this.createElement().mountCardElement(),document.getElementById("pay-now").addEventListener("click",()=>{try{return document.querySelector("input[name=token]").value?this.completePaymentUsingToken():this.completePaymentWithoutToken()}catch(e){console.log(e.message)}}))}}function l(){var a,s,i,d;const o=((a=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:a.content)??"",e=((s=document.querySelector('meta[name="stripe-secret"]'))==null?void 0:s.content)??"",t=((i=document.querySelector('meta[name="only-authorization"]'))==null?void 0:i.content)??"",n=((d=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:d.content)??"";new m(o,e,t,n).handle()}c()?l():u("#stripe-credit-card-payment").then(()=>l());
diff --git a/public/build/assets/stripe-eps-d5e8f1b5.js b/public/build/assets/stripe-eps-d5e8f1b5.js
deleted file mode 100644
index 70cb7aef5cf3..000000000000
--- a/public/build/assets/stripe-eps-d5e8f1b5.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var i=Object.defineProperty;var a=(n,t,e)=>t in n?i(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var s=(n,t,e)=>(a(n,typeof t!="symbol"?t+"":t,e),e);import{i as c,w as l}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class m{constructor(t,e){s(this,"setupStripe",()=>{this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key);let t=this.stripe.elements();var e={style:{base:{padding:"10px 12px",color:"#32325d",fontSize:"16px","::placeholder":{color:"#aab7c4"}}}};return this.eps=t.create("epsBank",e),this.eps.mount("#eps-bank-element"),this});s(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",t=>{let e=document.getElementById("errors");if(!document.getElementById("eps-name").value){e.textContent=document.querySelector("meta[name=translation-name-required]").content,e.hidden=!1;return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmEpsPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{eps:this.eps,billing_details:{name:document.getElementById("eps-name").value}},return_url:document.querySelector('meta[name="return-url"]').content})})});this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=e}}function o(){var e,r;const n=((e=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:e.content)??"",t=((r=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:r.content)??"";new m(n,t).setupStripe().handle()}c()?o():l("#stripe-eps-payment").then(()=>o());
diff --git a/public/build/assets/stripe-fpx-e978b36a.js b/public/build/assets/stripe-fpx-e978b36a.js
deleted file mode 100644
index 0392fdec00c7..000000000000
--- a/public/build/assets/stripe-fpx-e978b36a.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var i=Object.defineProperty;var a=(n,t,e)=>t in n?i(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var s=(n,t,e)=>(a(n,typeof t!="symbol"?t+"":t,e),e);import{i as c,w as d}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class l{constructor(t,e){s(this,"setupStripe",()=>{this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key);let t=this.stripe.elements(),e={base:{padding:"10px 12px",color:"#32325d",fontSize:"16px"}};return this.fpx=t.create("fpxBank",{style:e,accountHolderType:"individual"}),this.fpx.mount("#fpx-bank-element"),this});s(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",t=>{document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmFpxPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{fpx:this.fpx},return_url:document.querySelector('meta[name="return-url"]').content}).then(e=>{e.error&&this.handleFailure(e.error.message)})})});this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=e}handleFailure(t){let e=document.getElementById("errors");e.textContent="",e.textContent=t,e.hidden=!1,document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden")}}function o(){var e,r;const n=((e=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:e.content)??"",t=((r=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:r.content)??"";new l(n,t).setupStripe().handle()}c()?o():d("#stripe-fpx-payment").then(()=>o());
diff --git a/public/build/assets/stripe-giropay-f7afcb25.js b/public/build/assets/stripe-giropay-f7afcb25.js
deleted file mode 100644
index 5d8cf1b1c752..000000000000
--- a/public/build/assets/stripe-giropay-f7afcb25.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var i=Object.defineProperty;var c=(n,t,e)=>t in n?i(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var r=(n,t,e)=>(c(n,typeof t!="symbol"?t+"":t,e),e);import{i as a,w as m}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class d{constructor(t,e){r(this,"setupStripe",()=>(this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this));r(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",t=>{let e=document.getElementById("errors");if(!document.getElementById("giropay-mandate-acceptance").checked){e.textContent=document.querySelector("meta[name=translation-terms-required]").content,e.hidden=!1,console.log("Terms");return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmGiropayPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{billing_details:{name:document.getElementById("giropay-name").value}},return_url:document.querySelector('meta[name="return-url"]').content})})});this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=e}}function s(){var e,o;const n=((e=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:e.content)??"",t=((o=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:o.content)??"";new d(n,t).setupStripe().handle()}a()?s():m("#stripe-giropay-payment").then(()=>s());
diff --git a/public/build/assets/stripe-ideal-3e3b3e7b.js b/public/build/assets/stripe-ideal-3e3b3e7b.js
deleted file mode 100644
index f60290b3cb75..000000000000
--- a/public/build/assets/stripe-ideal-3e3b3e7b.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var s=Object.defineProperty;var a=(n,t,e)=>t in n?s(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var r=(n,t,e)=>(a(n,typeof t!="symbol"?t+"":t,e),e);import{i as l,w as c}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class d{constructor(t,e){r(this,"setupStripe",()=>{this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key);let t=this.stripe.elements();var e={style:{base:{padding:"10px 12px",color:"#32325d",fontSize:"16px","::placeholder":{color:"#aab7c4"}}}};return this.ideal=t.create("idealBank",e),this.ideal.mount("#ideal-bank-element"),this});r(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",t=>{let e=document.getElementById("errors");if(!document.getElementById("ideal-name").value){e.textContent=document.querySelector("meta[name=translation-name-required]").content,e.hidden=!1,console.log("name");return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmIdealPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{ideal:this.ideal,billing_details:{name:document.getElementById("ideal-name").value}},return_url:document.querySelector('meta[name="return-url"]').content})})});this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=e}}function o(){var e,i;const n=((e=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:e.content)??"",t=((i=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:i.content)??"";new d(n,t).setupStripe().handle()}l()?o():c("#stripe-ideal-payment").then(()=>o());
diff --git a/public/build/assets/stripe-klarna-87356b3c.js b/public/build/assets/stripe-klarna-87356b3c.js
deleted file mode 100644
index 496b0484f2c9..000000000000
--- a/public/build/assets/stripe-klarna-87356b3c.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var c=Object.defineProperty;var m=(n,e,t)=>e in n?c(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var o=(n,e,t)=>(m(n,typeof e!="symbol"?e+"":e,t),t);import{i as d,w as i}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class l{constructor(e,t){o(this,"setupStripe",()=>(this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this));o(this,"handleError",e=>{document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden"),this.errors.textContent="",this.errors.textContent=e,this.errors.hidden=!1});o(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",e=>{let t=document.getElementById("errors"),r=document.getElementById("klarna-name").value;/^[A-Za-z\s]*$/.test(r)?(document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmKlarnaPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{billing_details:{name:r,email:document.querySelector("meta[name=email]").content,address:{line1:document.querySelector("meta[name=address-1]").content,line2:document.querySelector("meta[name=address-2]").content,city:document.querySelector("meta[name=city]").content,postal_code:document.querySelector("meta[name=postal_code]").content,state:document.querySelector("meta[name=state]").content,country:document.querySelector("meta[name=country]").content}}},return_url:document.querySelector('meta[name="return-url"]').content}).then(a=>{if(a.hasOwnProperty("error"))return this.handleError(a.error.message)})):(document.getElementById("klarna-name-correction").hidden=!1,document.getElementById("klarna-name").textContent=r.replace(/^[A-Za-z\s]*$/,""),document.getElementById("klarna-name").focus(),t.textContent=document.querySelector("meta[name=translation-name-without-special-characters]").content,t.hidden=!1)})});this.key=e,this.errors=document.getElementById("errors"),this.stripeConnect=t}}function s(){var t,r;const n=((t=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:t.content)??"",e=((r=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:r.content)??"";new l(n,e).setupStripe().handle()}d()?s():i("#stripe-klarna-payment").then(()=>s());
diff --git a/public/build/assets/stripe-przelewy24-a6eaf471.js b/public/build/assets/stripe-przelewy24-a6eaf471.js
deleted file mode 100644
index d06e610850d6..000000000000
--- a/public/build/assets/stripe-przelewy24-a6eaf471.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var c=Object.defineProperty;var s=(n,t,e)=>t in n?c(n,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[t]=e;var o=(n,t,e)=>(s(n,typeof t!="symbol"?t+"":t,e),e);import{i as d,w as m}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class i{constructor(t,e){o(this,"setupStripe",()=>{this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key);let t=this.stripe.elements();var e={style:{base:{padding:"10px 12px",color:"#32325d",fontSize:"16px","::placeholder":{color:"#aab7c4"}}}};return this.p24bank=t.create("p24Bank",e),this.p24bank.mount("#p24-bank-element"),this});o(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",t=>{let e=document.getElementById("errors");if(document.getElementById("p24-name").value===""){document.getElementById("p24-name").focus(),e.textContent=document.querySelector("meta[name=translation-name-required]").content,e.hidden=!1;return}if(document.getElementById("p24-email-address").value===""){document.getElementById("p24-email-address").focus(),e.textContent=document.querySelector("meta[name=translation-email-required]").content,e.hidden=!1;return}if(!document.getElementById("p24-mandate-acceptance").checked){document.getElementById("p24-mandate-acceptance").focus(),e.textContent=document.querySelector("meta[name=translation-terms-required]").content,e.hidden=!1;return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmP24Payment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{p24:this.p24bank,billing_details:{name:document.getElementById("p24-name").value,email:document.getElementById("p24-email-address").value}},payment_method_options:{p24:{tos_shown_and_accepted:document.getElementById("p24-mandate-acceptance").checked}},return_url:document.querySelector('meta[name="return-url"]').content}).then(function(a){a.error?(e.textContent=a.error.message,e.hidden=!1,document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden")):a.paymentIntent.status==="succeeded"&&(window.location=document.querySelector('meta[name="return-url"]').content)})})});this.key=t,this.errors=document.getElementById("errors"),this.stripeConnect=e}}function r(){var e,a;const n=((e=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:e.content)??"",t=((a=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:a.content)??"";new i(n,t).setupStripe().handle()}d()?r():m("#stripe-przelewy24-payment").then(()=>r());
diff --git a/public/build/assets/stripe-sepa-ac6623b2.js b/public/build/assets/stripe-sepa-ac6623b2.js
deleted file mode 100644
index 12f6c59569b1..000000000000
--- a/public/build/assets/stripe-sepa-ac6623b2.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var s=Object.defineProperty;var c=(a,e,t)=>e in a?s(a,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):a[e]=t;var o=(a,e,t)=>(c(a,typeof e!="symbol"?e+"":e,t),t);import{i,w as l}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class d{constructor(e,t){o(this,"setupStripe",()=>{this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key);const e=this.stripe.elements();var t={base:{color:"#32325d",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',fontSmoothing:"antialiased",fontSize:"16px","::placeholder":{color:"#aab7c4"},":-webkit-autofill":{color:"#32325d"}},invalid:{color:"#fa755a",iconColor:"#fa755a",":-webkit-autofill":{color:"#fa755a"}}},n={style:t,supportedCountries:["SEPA"],placeholderCountry:document.querySelector('meta[name="country"]').content};return this.iban=e.create("iban",n),this.iban.mount("#sepa-iban"),document.getElementById("sepa-name").value=document.querySelector("meta[name=client_name]").content,document.getElementById("sepa-email-address").value=document.querySelector("meta[name=client_email]").content,this});o(this,"handle",()=>{let e=document.getElementById("errors");Array.from(document.getElementsByClassName("toggle-payment-with-token")).forEach(t=>t.addEventListener("click",n=>{document.getElementById("stripe--payment-container").classList.add("hidden"),document.getElementById("save-card--container").style.display="none",document.querySelector("input[name=token]").value=n.target.dataset.token})),document.getElementById("toggle-payment-with-new-bank-account").addEventListener("click",t=>{document.getElementById("stripe--payment-container").classList.remove("hidden"),document.getElementById("save-card--container").style.display="grid",document.querySelector("input[name=token]").value=""}),document.getElementById("pay-now").addEventListener("click",t=>{if(document.querySelector("input[name=token]").value.length!==0)document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmSepaDebitPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:document.querySelector("input[name=token]").value}).then(n=>n.error?this.handleFailure(n.error.message):this.handleSuccess(n));else{if(document.getElementById("sepa-name").value===""){document.getElementById("sepa-name").focus(),e.textContent=document.querySelector("meta[name=translation-name-required]").content,e.hidden=!1;return}if(document.getElementById("sepa-email-address").value===""){document.getElementById("sepa-email-address").focus(),e.textContent=document.querySelector("meta[name=translation-email-required]").content,e.hidden=!1;return}if(!document.getElementById("sepa-mandate-acceptance").checked){e.textContent=document.querySelector("meta[name=translation-terms-required]").content,e.hidden=!1;return}document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmSepaDebitPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{sepa_debit:this.iban,billing_details:{name:document.getElementById("sepa-name").value,email:document.getElementById("sepa-email-address").value}}}).then(n=>n.error?this.handleFailure(n.error.message):this.handleSuccess(n))}})});this.key=e,this.errors=document.getElementById("errors"),this.stripeConnect=t}handleSuccess(e){document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.paymentIntent);let t=document.querySelector('input[name="token-billing-checkbox"]:checked');t&&(document.querySelector('input[name="store_card"]').value=t.value),document.querySelector("input[name=token]").value.length>2&&(document.querySelector('input[name="store_card"]').value=!1),document.getElementById("server-response").submit()}handleFailure(e){let t=document.getElementById("errors");t.textContent="",t.textContent=e,t.hidden=!1,document.getElementById("pay-now").disabled=!1,document.querySelector("#pay-now > svg").classList.add("hidden"),document.querySelector("#pay-now > span").classList.remove("hidden")}handleSuccess(e){document.querySelector('input[name="gateway_response"]').value=JSON.stringify(e.paymentIntent);let t=document.querySelector('input[name="token-billing-checkbox"]:checked');t&&(document.querySelector('input[name="store_card"]').value=t.value),document.getElementById("server-response").submit()}}function r(){var t,n;const a=((t=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:t.content)??"",e=((n=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:n.content)??"";new d(a,e).setupStripe().handle()}i()?r():l("#stripe-sepa-payment").then(()=>r());
diff --git a/public/build/assets/stripe-sofort-ac0f4ccf.js b/public/build/assets/stripe-sofort-ac0f4ccf.js
deleted file mode 100644
index a82c71ecac7f..000000000000
--- a/public/build/assets/stripe-sofort-ac0f4ccf.js
+++ /dev/null
@@ -1,9 +0,0 @@
-var c=Object.defineProperty;var i=(n,e,t)=>e in n?c(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t;var r=(n,e,t)=>(i(n,typeof e!="symbol"?e+"":e,t),t);import{i as a,w as u}from"./authorize-credit-card-payment-bd9c9d4d.js";/**
- * Invoice Ninja (https://invoiceninja.com)
- *
- * @link https://github.com/invoiceninja/invoiceninja source repository
- *
- * @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
- *
- * @license https://www.elastic.co/licensing/elastic-license
- */class m{constructor(e,t){r(this,"setupStripe",()=>(this.stripeConnect?this.stripe=Stripe(this.key,{stripeAccount:this.stripeConnect}):this.stripe=Stripe(this.key),this));r(this,"handle",()=>{document.getElementById("pay-now").addEventListener("click",e=>{document.getElementById("pay-now").disabled=!0,document.querySelector("#pay-now > svg").classList.remove("hidden"),document.querySelector("#pay-now > span").classList.add("hidden"),this.stripe.confirmSofortPayment(document.querySelector("meta[name=pi-client-secret").content,{payment_method:{sofort:{country:document.querySelector('meta[name="country"]').content}},return_url:document.querySelector('meta[name="return-url"]').content})})});this.key=e,this.errors=document.getElementById("errors"),this.stripeConnect=t}}function s(){var t,o;const n=((t=document.querySelector('meta[name="stripe-publishable-key"]'))==null?void 0:t.content)??"",e=((o=document.querySelector('meta[name="stripe-account-id"]'))==null?void 0:o.content)??"";new m(n,e).setupStripe().handle()}a()?s():u("#stripe-sofort-payment").then(()=>s());
diff --git a/public/build/manifest.json b/public/build/manifest.json
index e58a0e680d7f..f1747c8d7f50 100644
--- a/public/build/manifest.json
+++ b/public/build/manifest.json
@@ -45,14 +45,6 @@
"isEntry": true,
"src": "resources/js/clients/payment_methods/authorize-checkout-card.js"
},
- "resources/js/clients/payment_methods/authorize-stripe-acss.js": {
- "file": "assets/authorize-stripe-acss-6fe37711.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
- "isEntry": true,
- "src": "resources/js/clients/payment_methods/authorize-stripe-acss.js"
- },
"resources/js/clients/payment_methods/braintree-ach.js": {
"file": "assets/braintree-ach-b29d040e.js",
"isEntry": true,
@@ -64,228 +56,137 @@
"src": "resources/js/clients/payment_methods/wepay-bank-account.js"
},
"resources/js/clients/payments/authorize-credit-card-payment.js": {
- "file": "assets/authorize-credit-card-payment-bd9c9d4d.js",
+ "file": "assets/authorize-credit-card-payment-a217579b.js",
"isEntry": true,
"src": "resources/js/clients/payments/authorize-credit-card-payment.js"
},
"resources/js/clients/payments/braintree-credit-card.js": {
- "file": "assets/braintree-credit-card-c80deaab.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/braintree-credit-card-1c3f3108.js",
"isEntry": true,
"src": "resources/js/clients/payments/braintree-credit-card.js"
},
"resources/js/clients/payments/braintree-paypal.js": {
- "file": "assets/braintree-paypal-cf71d092.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/braintree-paypal-45391805.js",
"isEntry": true,
"src": "resources/js/clients/payments/braintree-paypal.js"
},
"resources/js/clients/payments/checkout-credit-card.js": {
- "file": "assets/checkout-credit-card-5435b293.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/checkout-credit-card-8a04938c.js",
"isEntry": true,
"src": "resources/js/clients/payments/checkout-credit-card.js"
},
"resources/js/clients/payments/eway-credit-card.js": {
- "file": "assets/eway-credit-card-319ea034.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/eway-credit-card-62ce5f3b.js",
"isEntry": true,
"src": "resources/js/clients/payments/eway-credit-card.js"
},
"resources/js/clients/payments/forte-ach-payment.js": {
- "file": "assets/forte-ach-payment-f051a883.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/forte-ach-payment-2f7fa236.js",
"isEntry": true,
"src": "resources/js/clients/payments/forte-ach-payment.js"
},
"resources/js/clients/payments/forte-credit-card-payment.js": {
- "file": "assets/forte-credit-card-payment-5485d5f0.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/forte-credit-card-payment-7bb15431.js",
"isEntry": true,
"src": "resources/js/clients/payments/forte-credit-card-payment.js"
},
"resources/js/clients/payments/mollie-credit-card.js": {
- "file": "assets/mollie-credit-card-e1abdd68.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/mollie-credit-card-db5c26c6.js",
"isEntry": true,
"src": "resources/js/clients/payments/mollie-credit-card.js"
},
"resources/js/clients/payments/paytrace-credit-card.js": {
- "file": "assets/paytrace-credit-card-f4dfde84.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/paytrace-credit-card-9cea3700.js",
"isEntry": true,
"src": "resources/js/clients/payments/paytrace-credit-card.js"
},
"resources/js/clients/payments/razorpay-aio.js": {
- "file": "assets/razorpay-aio-d613afa9.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/razorpay-aio-3d02ff1d.js",
"isEntry": true,
"src": "resources/js/clients/payments/razorpay-aio.js"
},
"resources/js/clients/payments/square-credit-card.js": {
- "file": "assets/square-credit-card-83a3d702.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/square-credit-card-a20464a3.js",
"isEntry": true,
"src": "resources/js/clients/payments/square-credit-card.js"
},
- "resources/js/clients/payments/stripe-ach-pay.js": {
- "file": "assets/stripe-ach-pay-0bf320bd.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
- "isEntry": true,
- "src": "resources/js/clients/payments/stripe-ach-pay.js"
- },
"resources/js/clients/payments/stripe-ach.js": {
"file": "assets/stripe-ach-fe366ca7.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-ach.js"
},
"resources/js/clients/payments/stripe-acss.js": {
- "file": "assets/stripe-acss-dd3e9f85.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-acss-946fe54a.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-acss.js"
},
"resources/js/clients/payments/stripe-alipay.js": {
- "file": "assets/stripe-alipay-4a3641d0.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-alipay-00a4a19f.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-alipay.js"
},
"resources/js/clients/payments/stripe-bacs.js": {
- "file": "assets/stripe-bacs-7ec06b1d.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-bacs-38c8b975.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-bacs.js"
},
"resources/js/clients/payments/stripe-bancontact.js": {
- "file": "assets/stripe-bancontact-93a0a43b.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-bancontact-cb004d43.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-bancontact.js"
},
- "resources/js/clients/payments/stripe-bank-transfer.js": {
- "file": "assets/stripe-bank-transfer-c3e1a9c7.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
- "isEntry": true,
- "src": "resources/js/clients/payments/stripe-bank-transfer.js"
- },
"resources/js/clients/payments/stripe-becs.js": {
- "file": "assets/stripe-becs-d51dcef6.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-becs-4d1494ed.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-becs.js"
},
"resources/js/clients/payments/stripe-browserpay.js": {
- "file": "assets/stripe-browserpay-81063a43.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-browserpay-ac78fb26.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-browserpay.js"
},
"resources/js/clients/payments/stripe-credit-card.js": {
- "file": "assets/stripe-credit-card-843d7cd3.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-credit-card-75322a3b.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-credit-card.js"
},
"resources/js/clients/payments/stripe-eps.js": {
- "file": "assets/stripe-eps-d5e8f1b5.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-eps-6ebc87cd.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-eps.js"
},
"resources/js/clients/payments/stripe-fpx.js": {
- "file": "assets/stripe-fpx-e978b36a.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-fpx-240a05e2.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-fpx.js"
},
"resources/js/clients/payments/stripe-giropay.js": {
- "file": "assets/stripe-giropay-f7afcb25.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-giropay-9d3bfbab.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-giropay.js"
},
"resources/js/clients/payments/stripe-ideal.js": {
- "file": "assets/stripe-ideal-3e3b3e7b.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-ideal-efa175e9.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-ideal.js"
},
"resources/js/clients/payments/stripe-klarna.js": {
- "file": "assets/stripe-klarna-87356b3c.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-klarna-e45c946d.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-klarna.js"
},
"resources/js/clients/payments/stripe-przelewy24.js": {
- "file": "assets/stripe-przelewy24-a6eaf471.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-przelewy24-f9154acf.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-przelewy24.js"
},
"resources/js/clients/payments/stripe-sepa.js": {
- "file": "assets/stripe-sepa-ac6623b2.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-sepa-6dd487fc.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-sepa.js"
},
"resources/js/clients/payments/stripe-sofort.js": {
- "file": "assets/stripe-sofort-ac0f4ccf.js",
- "imports": [
- "resources/js/clients/payments/authorize-credit-card-payment.js"
- ],
+ "file": "assets/stripe-sofort-18aeca06.js",
"isEntry": true,
"src": "resources/js/clients/payments/stripe-sofort.js"
},
@@ -339,7 +240,7 @@
"src": "resources/js/setup/setup.js"
},
"resources/sass/app.scss": {
- "file": "assets/app-4e969b65.css",
+ "file": "assets/app-fee1da41.css",
"isEntry": true,
"src": "resources/sass/app.scss"
}
diff --git a/resources/js/clients/payments/authorize-credit-card-payment.js b/resources/js/clients/payments/authorize-credit-card-payment.js
index 35913c2be880..2d4ec69b3546 100644
--- a/resources/js/clients/payments/authorize-credit-card-payment.js
+++ b/resources/js/clients/payments/authorize-credit-card-payment.js
@@ -5,65 +5,40 @@
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
- * @license https://www.elastic.co/licensing/elastic-license
+ * @license https://www.elastic.co/licensing/elastic-license
*/
-import { SimpleCard } from '@invoiceninja/simple-card';
-import { wait, instant } from '../wait';
-
class AuthorizeAuthorizeCard {
+
constructor(publicKey, loginId) {
this.publicKey = publicKey;
this.loginId = loginId;
- this.cardHolderName = document.getElementById('cardholder_name');
-
- this.sc = new SimpleCard({
- fields: {
- card: {
- number: '#number',
- date: '#date',
- cvv: '#cvv',
- },
- },
- });
-
- this.sc.mount();
-
- this.cvvRequired = document.querySelector(
- 'meta[name="authnet-require-cvv"]'
- ).content;
-
+ this.cardHolderName = document.getElementById("cardholder_name");
}
handleAuthorization = () => {
- if (
- this.cvvRequired == '1' &&
- document.getElementById('cvv').value.length < 3
- ) {
- const $errors = document.getElementById('errors');
-
- if ($errors) {
- $errors.innerText = 'CVV is required';
- $errors.style.display = 'block';
- }
+
+ if (cvvRequired == "1" && document.getElementById("cvv").value.length < 3) {
+ var $errors = $('#errors');
+ $errors.show().html("CVV is required
");
document.getElementById('pay-now').disabled = false;
document.querySelector('#pay-now > svg').classList.add('hidden');
- document
- .querySelector('#pay-now > span')
- .classList.remove('hidden');
+ document.querySelector('#pay-now > span').classList.remove('hidden');
return;
}
+ var myCard = $('#my-card');
+
var authData = {};
authData.clientKey = this.publicKey;
authData.apiLoginID = this.loginId;
var cardData = {};
- cardData.cardNumber = this.sc.value('number')?.replace(/[^\d]/g, '');
- cardData.month = this.sc.value('month')?.replace(/[^\d]/g, '');
- cardData.year = `20${this.sc.value('year')?.replace(/[^\d]/g, '')}`;
- cardData.cardCode = this.sc.value('cvv')?.replace(/[^\d]/g, '');
+ cardData.cardNumber = myCard.CardJs('cardNumber').replace(/[^\d]/g, '');
+ cardData.month = myCard.CardJs('expiryMonth').replace(/[^\d]/g, '');
+ cardData.year = myCard.CardJs('expiryYear').replace(/[^\d]/g, '');
+ cardData.cardCode = document.getElementById("cvv").value.replace(/[^\d]/g, '');
var secureData = {};
secureData.authData = authData;
@@ -83,112 +58,102 @@ class AuthorizeAuthorizeCard {
Accept.dispatchData(secureData, this.responseHandler);
return false;
- };
+
+ }
handlePayNowAction(token_hashed_id) {
document.getElementById('pay-now').disabled = true;
document.querySelector('#pay-now > svg').classList.remove('hidden');
document.querySelector('#pay-now > span').classList.add('hidden');
- document.getElementById('token').value = token_hashed_id;
- document.getElementById('server_response').submit();
+ document.getElementById("token").value = token_hashed_id;
+ document.getElementById("server_response").submit();
}
responseHandler = (response) => {
- if (response.messages.resultCode === 'Error') {
+ if (response.messages.resultCode === "Error") {
var i = 0;
- const $errors = document.getElementById('errors'); // get the reference of the div
-
- if ($errors) {
- $errors.innerText = `${response.messages.message[i].code}: ${response.messages.message[i].text}`;
- $errors.style.display = 'block';
- }
+ var $errors = $('#errors'); // get the reference of the div
+ $errors.show().html("" + response.messages.message[i].code + ": " + response.messages.message[i].text + "
");
document.getElementById('pay-now').disabled = false;
document.querySelector('#pay-now > svg').classList.add('hidden');
- document
- .querySelector('#pay-now > span')
- .classList.remove('hidden');
- } else if (response.messages.resultCode === 'Ok') {
- document.getElementById('dataDescriptor').value =
- response.opaqueData.dataDescriptor;
- document.getElementById('dataValue').value =
- response.opaqueData.dataValue;
+ document.querySelector('#pay-now > span').classList.remove('hidden');
+ } else if (response.messages.resultCode === "Ok") {
- let storeCard = document.querySelector(
- 'input[name=token-billing-checkbox]:checked'
- );
+ document.getElementById("dataDescriptor").value = response.opaqueData.dataDescriptor;
+ document.getElementById("dataValue").value = response.opaqueData.dataValue;
+
+ let storeCard = document.querySelector('input[name=token-billing-checkbox]:checked');
if (storeCard) {
- document.getElementById('store_card').value = storeCard.value;
+ document.getElementById("store_card").value = storeCard.value;
}
- document.getElementById('server_response').submit();
+ document.getElementById("server_response").submit();
}
return false;
- };
+ }
+
handle = () => {
- Array.from(
- document.getElementsByClassName('toggle-payment-with-token')
- ).forEach((element) =>
- element.addEventListener('click', (e) => {
- document.getElementById('save-card--container').style.display =
- 'none';
- document.getElementById(
- 'authorize--credit-card-container'
- ).style.display = 'none';
+ Array
+ .from(document.getElementsByClassName('toggle-payment-with-token'))
+ .forEach((element) => element.addEventListener('click', (e) => {
+ document
+ .getElementById('save-card--container').style.display = 'none';
+ document
+ .getElementById('authorize--credit-card-container').style.display = 'none';
- document.getElementById('token').value = e.target.dataset.token;
- })
- );
+ document
+ .getElementById('token').value = e.target.dataset.token;
+ }));
- let payWithCreditCardToggle = document.getElementById(
- 'toggle-payment-with-credit-card'
- );
+ let payWithCreditCardToggle = document.getElementById('toggle-payment-with-credit-card');
if (payWithCreditCardToggle) {
- payWithCreditCardToggle.addEventListener('click', () => {
- document.getElementById('save-card--container').style.display =
- 'grid';
- document.getElementById(
- 'authorize--credit-card-container'
- ).style.display = 'flex';
+ payWithCreditCardToggle
+ .addEventListener('click', () => {
+ document
+ .getElementById('save-card--container').style.display = 'grid';
+ document
+ .getElementById('authorize--credit-card-container').style.display = 'flex';
- document.getElementById('token').value = null;
- });
+ document
+ .getElementById('token').value = null;
+ });
}
let payNowButton = document.getElementById('pay-now');
if (payNowButton) {
- payNowButton.addEventListener('click', (e) => {
- let token = document.getElementById('token');
+ payNowButton
+ .addEventListener('click', (e) => {
+ let token = document.getElementById('token');
- token.value
- ? this.handlePayNowAction(token.value)
- : this.handleAuthorization();
- });
+ token.value
+ ? this.handlePayNowAction(token.value)
+ : this.handleAuthorization();
+ });
}
return this;
- };
+ }
}
-function boot() {
- const publicKey = document.querySelector(
- 'meta[name="authorize-public-key"]'
- ).content;
+const publicKey = document.querySelector(
+ 'meta[name="authorize-public-key"]'
+).content;
- const loginId = document.querySelector(
- 'meta[name="authorize-login-id"]'
- ).content;
+const loginId = document.querySelector(
+ 'meta[name="authorize-login-id"]'
+).content;
- /** @handle */
- new AuthorizeAuthorizeCard(publicKey, loginId).handle();
-}
-
-instant() ? boot() : wait('#authorize-net-credit-card-payment').then(() => boot());
+const cvvRequired = document.querySelector(
+ 'meta[name="authnet-require-cvv"]'
+).content;
+/** @handle */
+new AuthorizeAuthorizeCard(publicKey, loginId).handle();
diff --git a/resources/js/clients/payments/braintree-credit-card.js b/resources/js/clients/payments/braintree-credit-card.js
index 2fb5e672ef8f..1c7dacac0489 100644
--- a/resources/js/clients/payments/braintree-credit-card.js
+++ b/resources/js/clients/payments/braintree-credit-card.js
@@ -8,7 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
class BraintreeCreditCard {
initBraintreeDataCollector() {
@@ -44,7 +43,8 @@ class BraintreeCreditCard {
}
let payNow = document.getElementById('pay-now');
- let params = JSON.parse(document.querySelector('input[name=threeds]').value);
+
+ params = JSON.parse(document.querySelector('input[name=threeds]').value);
payNow.addEventListener('click', () => {
dropinInstance.requestPaymentMethod({
@@ -138,8 +138,4 @@ class BraintreeCreditCard {
}
}
-function boot() {
- new BraintreeCreditCard().handle();
-}
-
-instant() ? boot() : wait('#braintree-credit-card-payment', 'meta[name=client-token]').then(() => boot());
+new BraintreeCreditCard().handle();
diff --git a/resources/js/clients/payments/braintree-paypal.js b/resources/js/clients/payments/braintree-paypal.js
index 40cabce5ae0b..affaf1cb26b2 100644
--- a/resources/js/clients/payments/braintree-paypal.js
+++ b/resources/js/clients/payments/braintree-paypal.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class BraintreePayPal {
initBraintreeDataCollector() {
window.braintree.client.create({
@@ -121,8 +119,4 @@ class BraintreePayPal {
}
}
-function boot() {
- new BraintreePayPal().handle();
-}
-
-instant() ? boot() : wait('#braintree-paypal-payment').then(() => boot());
+new BraintreePayPal().handle();
diff --git a/resources/js/clients/payments/checkout-credit-card.js b/resources/js/clients/payments/checkout-credit-card.js
index ea0a6df7d7bd..bb32fa7337ce 100644
--- a/resources/js/clients/payments/checkout-credit-card.js
+++ b/resources/js/clients/payments/checkout-credit-card.js
@@ -5,70 +5,64 @@
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
- * @license https://www.elastic.co/licensing/elastic-license
+ * @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait } from '../wait';
-
class CheckoutCreditCard {
constructor() {
this.tokens = [];
}
+ mountFrames() {
+ console.log('Mount checkout frames..');
+ }
+
handlePaymentUsingToken(e) {
document.getElementById('checkout--container').classList.add('hidden');
- document
- .getElementById('pay-now-with-token--container')
- .classList.remove('hidden');
+ document.getElementById('pay-now-with-token--container').classList.remove('hidden');
document.getElementById('save-card--container').style.display = 'none';
- document.querySelector('input[name=token]').value =
- e.target.dataset.token;
+ document
+ .querySelector('input[name=token]')
+ .value = e.target.dataset.token;
}
handlePaymentUsingCreditCard(e) {
- document
- .getElementById('checkout--container')
- .classList.remove('hidden');
- document
- .getElementById('pay-now-with-token--container')
- .classList.add('hidden');
+ document.getElementById('checkout--container').classList.remove('hidden');
+ document.getElementById('pay-now-with-token--container').classList.add('hidden');
document.getElementById('save-card--container').style.display = 'grid';
- document.querySelector('input[name=token]').value = '';
+ document
+ .querySelector('input[name=token]')
+ .value = '';
const payButton = document.getElementById('pay-button');
-
- const publicKey =
- document.querySelector('meta[name="public-key"]').content ?? '';
+
+ const publicKey = document.querySelector('meta[name="public-key"]').content ?? '';
const form = document.getElementById('payment-form');
Frames.init(publicKey);
- Frames.addEventHandler(
- Frames.Events.CARD_VALIDATION_CHANGED,
- function (event) {
- payButton.disabled = !Frames.isCardValid();
- }
- );
+ Frames.addEventHandler(Frames.Events.CARD_VALIDATION_CHANGED, function (event) {
+ payButton.disabled = !Frames.isCardValid();
+ });
- Frames.addEventHandler(
- Frames.Events.CARD_TOKENIZATION_FAILED,
- function (event) {
- payButton.disabled = false;
- }
- );
+ Frames.addEventHandler(Frames.Events.CARD_TOKENIZATION_FAILED, function (event) {
+ payButton.disabled = false;
+ });
Frames.addEventHandler(Frames.Events.CARD_TOKENIZED, function (event) {
payButton.disabled = true;
- document.querySelector('input[name="gateway_response"]').value =
- JSON.stringify(event);
+ document.querySelector(
+ 'input[name="gateway_response"]'
+ ).value = JSON.stringify(event);
- document.querySelector('input[name="store_card"]').value =
- document.querySelector(
- 'input[name=token-billing-checkbox]:checked'
- ).value;
+ document.querySelector(
+ 'input[name="store_card"]'
+ ).value = document.querySelector(
+ 'input[name=token-billing-checkbox]:checked'
+ ).value;
document.getElementById('server-response').submit();
});
@@ -93,11 +87,9 @@ class CheckoutCreditCard {
handle() {
this.handlePaymentUsingCreditCard();
- Array.from(
- document.getElementsByClassName('toggle-payment-with-token')
- ).forEach((element) =>
- element.addEventListener('click', this.handlePaymentUsingToken)
- );
+ Array
+ .from(document.getElementsByClassName('toggle-payment-with-token'))
+ .forEach((element) => element.addEventListener('click', this.handlePaymentUsingToken));
document
.getElementById('toggle-payment-with-credit-card')
@@ -109,6 +101,4 @@ class CheckoutCreditCard {
}
}
-wait('#checkout-credit-card-payment').then(() =>
- new CheckoutCreditCard().handle()
-);
+new CheckoutCreditCard().handle();
diff --git a/resources/js/clients/payments/eway-credit-card.js b/resources/js/clients/payments/eway-credit-card.js
index d27632b30ec8..3d4f99297e70 100644
--- a/resources/js/clients/payments/eway-credit-card.js
+++ b/resources/js/clients/payments/eway-credit-card.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class EwayRapid {
constructor() {
this.cardStyles =
@@ -512,8 +510,4 @@ class EwayRapid {
}
}
-function boot() {
- new EwayRapid().handle();
-}
-
-instant() ? boot() : wait('#eway-credit-card-payment').then(() => boot());
+new EwayRapid().handle();
diff --git a/resources/js/clients/payments/forte-ach-payment.js b/resources/js/clients/payments/forte-ach-payment.js
index 8e50c5e2a2ba..90bf9f675377 100644
--- a/resources/js/clients/payments/forte-ach-payment.js
+++ b/resources/js/clients/payments/forte-ach-payment.js
@@ -8,8 +8,6 @@
* @license https://opensource.org/licenses/AAL
*/
-import { wait, instant } from '../wait';
-
class ForteAuthorizeACH {
constructor(apiLoginId) {
this.apiLoginId = apiLoginId;
@@ -75,13 +73,9 @@ class ForteAuthorizeACH {
};
}
-function boot() {
- const apiLoginId = document.querySelector(
- 'meta[name="forte-api-login-id"]'
- ).content;
-
- /** @handle */
- new ForteAuthorizeACH(apiLoginId).handle();
-}
+const apiLoginId = document.querySelector(
+ 'meta[name="forte-api-login-id"]'
+).content;
-instant() ? boot() : wait('#force-ach-payment').then(() => boot());
+/** @handle */
+new ForteAuthorizeACH(apiLoginId).handle();
diff --git a/resources/js/clients/payments/forte-credit-card-payment.js b/resources/js/clients/payments/forte-credit-card-payment.js
index 243d13935a38..e406d2153911 100644
--- a/resources/js/clients/payments/forte-credit-card-payment.js
+++ b/resources/js/clients/payments/forte-credit-card-payment.js
@@ -8,34 +8,21 @@
* @license https://opensource.org/licenses/AAL
*/
-import { wait, instant } from '../wait';
-import { SimpleCard } from '@invoiceninja/simple-card';
-
class ForteAuthorizeCard {
constructor(apiLoginId) {
this.apiLoginId = apiLoginId;
this.cardHolderName = document.getElementById('cardholder_name');
-
- this.sc = new SimpleCard({
- fields: {
- card: {
- number: '#number',
- date: '#date',
- cvv: '#cvv',
- },
- },
- });
-
- this.sc.mount();
}
handleAuthorization = () => {
- const data = {
+ var myCard = $('#my-card');
+
+ var data = {
api_login_id: this.apiLoginId,
- card_number: this.sc.value('number')?.replace(/[^\d]/g, ''),
- expire_year: `20${this.sc.value('year')?.replace(/[^\d]/g, '')}`,
- expire_month: this.sc.value('month')?.replace(/[^\d]/g, ''),
- cvv: this.sc.value('cvv')?.replace(/[^\d]/g, ''),
+ card_number: myCard.CardJs('cardNumber').replace(/[^\d]/g, ''),
+ expire_year: myCard.CardJs('expiryYear').replace(/[^\d]/g, ''),
+ expire_month: myCard.CardJs('expiryMonth').replace(/[^\d]/g, ''),
+ cvv: document.getElementById('cvv').value.replace(/[^\d]/g, ''),
};
let payNowButton = document.getElementById('pay-now');
@@ -175,13 +162,9 @@ class ForteAuthorizeCard {
}
-function boot() {
- const apiLoginId = document.querySelector(
- 'meta[name="forte-api-login-id"]'
- ).content;
+const apiLoginId = document.querySelector(
+ 'meta[name="forte-api-login-id"]'
+).content;
- /** @handle */
- new ForteAuthorizeCard(apiLoginId).handle();
-}
-
-instant() ? boot() : wait('#forte-credit-card-payment').then(() => boot());
+/** @handle */
+new ForteAuthorizeCard(apiLoginId).handle();
diff --git a/resources/js/clients/payments/mollie-credit-card.js b/resources/js/clients/payments/mollie-credit-card.js
index c88f350494c4..c973f1147c58 100644
--- a/resources/js/clients/payments/mollie-credit-card.js
+++ b/resources/js/clients/payments/mollie-credit-card.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class _Mollie {
constructor() {
this.mollie = Mollie(
@@ -168,9 +166,4 @@ class _Mollie {
}
}
-
-function boot() {
- new _Mollie().handle();
-}
-
-instant() ? boot(): wait('#mollie-credit-card-payment').then(() => boot());
+new _Mollie().handle();
diff --git a/resources/js/clients/payments/paytrace-credit-card.js b/resources/js/clients/payments/paytrace-credit-card.js
index bf361f059360..9b67b1ed8d07 100644
--- a/resources/js/clients/payments/paytrace-credit-card.js
+++ b/resources/js/clients/payments/paytrace-credit-card.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { instant, wait } from '../wait';
-
class PayTraceCreditCard {
constructor() {
this.clientKey = document.querySelector(
@@ -219,15 +217,7 @@ class PayTraceCreditCard {
return this.handlePaymentWithToken(e);
});
-
- if (Array.from(document.getElementsByClassName('toggle-payment-with-token')).length === 0 && !instant()) {
- document.getElementById('toggle-payment-with-credit-card').click();
- }
}
}
-function boot() {
- new PayTraceCreditCard().handle();
-}
-
-instant() ? boot() : wait('#paytrace-credit-card-payment').then(() => boot())
+new PayTraceCreditCard().handle();
diff --git a/resources/js/clients/payments/razorpay-aio.js b/resources/js/clients/payments/razorpay-aio.js
index 42e8ae1313d1..4097b07fcbf9 100644
--- a/resources/js/clients/payments/razorpay-aio.js
+++ b/resources/js/clients/payments/razorpay-aio.js
@@ -8,35 +8,29 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
+let options = JSON.parse(
+ document.querySelector('meta[name=razorpay-options]')?.content
+);
-function boot() {
- let options = JSON.parse(
- document.querySelector('meta[name=razorpay-options]')?.content
- );
-
- options.handler = function (response) {
- document.getElementById('razorpay_payment_id').value =
- response.razorpay_payment_id;
- document.getElementById('razorpay_signature').value =
- response.razorpay_signature;
- document.getElementById('server-response').submit();
- };
-
- options.modal = {
- ondismiss: function () {
- payNowButton.disabled = false;
- },
- };
-
- let razorpay = new Razorpay(options);
- let payNowButton = document.getElementById('pay-now');
-
- payNowButton.onclick = function (event) {
- payNowButton.disabled = true;
-
- razorpay.open();
- };
-}
+options.handler = function (response) {
+ document.getElementById('razorpay_payment_id').value =
+ response.razorpay_payment_id;
+ document.getElementById('razorpay_signature').value =
+ response.razorpay_signature;
+ document.getElementById('server-response').submit();
+};
-instant() ? boot() : wait('#razorpay-hosted-payment').then(() => boot());
+options.modal = {
+ ondismiss: function () {
+ payNowButton.disabled = false;
+ },
+};
+
+let razorpay = new Razorpay(options);
+let payNowButton = document.getElementById('pay-now');
+
+payNowButton.onclick = function (event) {
+ payNowButton.disabled = true;
+
+ razorpay.open();
+};
diff --git a/resources/js/clients/payments/square-credit-card.js b/resources/js/clients/payments/square-credit-card.js
index 358a672fdddb..4242eae5d651 100644
--- a/resources/js/clients/payments/square-credit-card.js
+++ b/resources/js/clients/payments/square-credit-card.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class SquareCreditCard {
constructor() {
this.appId = document.querySelector('meta[name=square-appId]').content;
@@ -182,9 +180,4 @@ class SquareCreditCard {
}
}
-function boot() {
- new SquareCreditCard().handle();
-}
-
-instant() ? boot() : wait('#square-credit-card-payment').then(() => boot());
-
+new SquareCreditCard().handle();
diff --git a/resources/js/clients/payments/stripe-acss.js b/resources/js/clients/payments/stripe-acss.js
index aa3f64a1c574..613e8e373497 100644
--- a/resources/js/clients/payments/stripe-acss.js
+++ b/resources/js/clients/payments/stripe-acss.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { instant, wait } from '../wait';
-
class ProcessACSS {
constructor(key, stripeConnect) {
this.key = key;
@@ -147,16 +145,11 @@ class ProcessACSS {
}
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessACSS(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-acss-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+new ProcessACSS(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-alipay.js b/resources/js/clients/payments/stripe-alipay.js
index 6a00310fcae9..9b902a7dee35 100644
--- a/resources/js/clients/payments/stripe-alipay.js
+++ b/resources/js/clients/payments/stripe-alipay.js
@@ -5,11 +5,9 @@
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
- * @license https://www.elastic.co/licensing/elastic-license
+ * @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessAlipay {
constructor(key, stripeConnect) {
this.key = key;
@@ -19,68 +17,57 @@ class ProcessAlipay {
}
setupStripe = () => {
- if (this.stripeConnect) {
- // this.stripe.stripeAccount = this.stripeConnect;
- this.stripe = Stripe(this.key, {
- stripeAccount: this.stripeConnect,
- });
- } else {
+ if (this.stripeConnect){
+ // this.stripe.stripeAccount = this.stripeConnect;
+
+ this.stripe = Stripe(this.key, {
+ stripeAccount: this.stripeConnect,
+ });
+
+ }
+ else {
this.stripe = Stripe(this.key);
}
+
return this;
};
async handle() {
- document
- .getElementById('pay-now')
- .addEventListener('click', async (e) => {
- document.getElementById('pay-now').disabled = true;
- document
- .querySelector('#pay-now > svg')
- .classList.add('hidden');
- document
- .querySelector('#pay-now > span')
- .classList.remove('hidden');
- const { error } = await this.stripe.confirmAlipayPayment(
- document.querySelector('meta[name=ci_intent]').content,
- {
- // Return URL where the customer should be redirected after the authorization
- return_url: `${
- document.querySelector('meta[name=return_url]')
- .content
- }`,
- }
- );
+ document.getElementById('pay-now').addEventListener('click', async (e) => {
+ document.getElementById('pay-now').disabled = true;
+ document.querySelector('#pay-now > svg').classList.add('hidden');
+ document.querySelector('#pay-now > span').classList.remove('hidden');
+
+ const { error } = await this.stripe.confirmAlipayPayment(document.querySelector('meta[name=ci_intent]').content, {
+ // Return URL where the customer should be redirected after the authorization
+ return_url: `${document.querySelector('meta[name=return_url]').content}`,
+ });
document.getElementById('pay-now').disabled = false;
- document
- .querySelector('#pay-now > svg')
- .classList.remove('hidden');
- document
- .querySelector('#pay-now > span')
- .classList.add('hidden');
+ document.querySelector('#pay-now > svg').classList.remove('hidden');
+ document.querySelector('#pay-now > span').classList.add('hidden');
if (error) {
+
this.errors.textContent = '';
this.errors.textContent = result.error.message;
this.errors.hidden = false;
+
}
});
+
}
}
-function boot() {
- const publishableKey =
- document.querySelector('meta[name="stripe-publishable-key"]')
- ?.content ?? '';
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+const stripeConnect = document.querySelector(
+ 'meta[name="stripe-account-id"]'
+)?.content ?? '';
- new ProcessAlipay(publishableKey, stripeConnect).setupStripe().handle();
-}
-
-instant() ? boot() : wait('#stripe-alipay-payment').then(() => boot());
+new ProcessAlipay(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-bacs.js b/resources/js/clients/payments/stripe-bacs.js
index 22add898100d..a67c9057c588 100644
--- a/resources/js/clients/payments/stripe-bacs.js
+++ b/resources/js/clients/payments/stripe-bacs.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { instant, wait } from '../wait';
-
class ProcessBACS {
constructor(key, stripeConnect) {
this.key = key;
@@ -77,17 +75,13 @@ class ProcessBACS {
}
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
- const onlyAuthorization =
- document.querySelector('meta[name="only-authorization"]')?.content ?? '';
-
- new ProcessBACS(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-bacs-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+const onlyAuthorization =
+ document.querySelector('meta[name="only-authorization"]')?.content ?? '';
+
+new ProcessBACS(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-bancontact.js b/resources/js/clients/payments/stripe-bancontact.js
index 46b4409b1b07..35860607b775 100644
--- a/resources/js/clients/payments/stripe-bancontact.js
+++ b/resources/js/clients/payments/stripe-bancontact.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessBANCONTACTPay {
constructor(key, stripeConnect) {
this.key = key;
@@ -65,15 +63,11 @@ class ProcessBANCONTACTPay {
};
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessBANCONTACTPay(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-bancontact-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessBANCONTACTPay(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-becs.js b/resources/js/clients/payments/stripe-becs.js
index 6fe41a3d051d..61544ccf53c7 100644
--- a/resources/js/clients/payments/stripe-becs.js
+++ b/resources/js/clients/payments/stripe-becs.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessBECS {
constructor(key, stripeConnect) {
this.key = key;
@@ -137,15 +135,11 @@ class ProcessBECS {
}
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessBECS(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-becs-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessBECS(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-browserpay.js b/resources/js/clients/payments/stripe-browserpay.js
index 2ed4675c8cf0..dff741ddc63a 100644
--- a/resources/js/clients/payments/stripe-browserpay.js
+++ b/resources/js/clients/payments/stripe-browserpay.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class StripeBrowserPay {
constructor() {
this.clientSecret = document.querySelector(
@@ -144,8 +142,4 @@ class StripeBrowserPay {
}
}
-function boot() {
- new StripeBrowserPay().handle()
-}
-
-instant() ? boot() : wait('#stripe-browserpay-payment').then(() => boot())
+new StripeBrowserPay().handle();
diff --git a/resources/js/clients/payments/stripe-credit-card.js b/resources/js/clients/payments/stripe-credit-card.js
index eb60acde543d..f35d20dcbde2 100644
--- a/resources/js/clients/payments/stripe-credit-card.js
+++ b/resources/js/clients/payments/stripe-credit-card.js
@@ -5,11 +5,9 @@
*
* @copyright Copyright (c) 2021. Invoice Ninja LLC (https://invoiceninja.com)
*
- * @license https://www.elastic.co/licensing/elastic-license
+ * @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class StripeCreditCard {
constructor(key, secret, onlyAuthorization, stripeConnect) {
this.key = key;
@@ -19,14 +17,18 @@ class StripeCreditCard {
}
setupStripe() {
- if (this.stripeConnect) {
- this.stripe = Stripe(this.key, {
- stripeAccount: this.stripeConnect,
- });
- } else {
+
+ if (this.stripeConnect){
+
+ this.stripe = Stripe(this.key, {
+ stripeAccount: this.stripeConnect,
+ });
+
+ }
+ else {
this.stripe = Stripe(this.key);
}
-
+
this.elements = this.stripe.elements();
return this;
@@ -34,13 +36,9 @@ class StripeCreditCard {
createElement() {
this.cardElement = this.elements.create('card', {
- hidePostalCode:
- document.querySelector('meta[name=stripe-require-postal-code]')
- ?.content === '0',
+ hidePostalCode: document.querySelector('meta[name=stripe-require-postal-code]')?.content === "0",
value: {
- postalCode: document.querySelector(
- 'meta[name=client-postal-code]'
- ).content,
+ postalCode: document.querySelector('meta[name=client-postal-code]').content,
},
hideIcon: false,
});
@@ -92,7 +90,7 @@ class StripeCreditCard {
this.stripe
.handleCardPayment(this.secret, this.cardElement, {
payment_method_data: {
- billing_details: { name: cardHolderName.value },
+ billing_details: {name: cardHolderName.value},
},
})
.then((result) => {
@@ -105,8 +103,9 @@ class StripeCreditCard {
}
handleSuccess(result) {
- document.querySelector('input[name="gateway_response"]').value =
- JSON.stringify(result.paymentIntent);
+ document.querySelector(
+ 'input[name="gateway_response"]'
+ ).value = JSON.stringify(result.paymentIntent);
let tokenBillingCheckbox = document.querySelector(
'input[name="token-billing-checkbox"]:checked'
@@ -146,7 +145,7 @@ class StripeCreditCard {
this.stripe
.handleCardSetup(this.secret, this.cardElement, {
payment_method_data: {
- billing_details: { name: cardHolderName.value },
+ billing_details: {name: cardHolderName.value},
},
})
.then((result) => {
@@ -178,76 +177,63 @@ class StripeCreditCard {
return this.handleAuthorization();
});
} else {
- Array.from(
- document.getElementsByClassName('toggle-payment-with-token')
- ).forEach((element) =>
- element.addEventListener('click', (element) => {
- document
- .getElementById('stripe--payment-container')
- .classList.add('hidden');
- document.getElementById(
- 'save-card--container'
- ).style.display = 'none';
- document.querySelector('input[name=token]').value =
- element.target.dataset.token;
- })
- );
+ Array
+ .from(document.getElementsByClassName('toggle-payment-with-token'))
+ .forEach((element) => element.addEventListener('click', (element) => {
+ document.getElementById('stripe--payment-container').classList.add('hidden');
+ document.getElementById('save-card--container').style.display = 'none';
+ document.querySelector('input[name=token]').value = element.target.dataset.token;
+ }));
document
.getElementById('toggle-payment-with-credit-card')
.addEventListener('click', (element) => {
- document
- .getElementById('stripe--payment-container')
- .classList.remove('hidden');
- document.getElementById(
- 'save-card--container'
- ).style.display = 'grid';
- document.querySelector('input[name=token]').value = '';
+ document.getElementById('stripe--payment-container').classList.remove('hidden');
+ document.getElementById('save-card--container').style.display = 'grid';
+ document.querySelector('input[name=token]').value = "";
});
this.createElement().mountCardElement();
- document.getElementById('pay-now').addEventListener('click', () => {
+ document
+ .getElementById('pay-now')
+ .addEventListener('click', () => {
+
try {
- let tokenInput =
- document.querySelector('input[name=token]');
+ let tokenInput = document.querySelector('input[name=token]');
if (tokenInput.value) {
return this.completePaymentUsingToken();
}
return this.completePaymentWithoutToken();
- } catch (error) {
+ }catch(error){
console.log(error.message);
}
- });
+
+ });
}
}
}
-function boot() {
- const publishableKey =
- document.querySelector('meta[name="stripe-publishable-key"]')
- ?.content ?? '';
+const publishableKey =
+ document.querySelector('meta[name="stripe-publishable-key"]')?.content ?? '';
- const secret =
- document.querySelector('meta[name="stripe-secret"]')?.content ?? '';
+const secret =
+ document.querySelector('meta[name="stripe-secret"]')?.content ?? '';
- const onlyAuthorization =
- document.querySelector('meta[name="only-authorization"]')?.content ??
- '';
+const onlyAuthorization =
+ document.querySelector('meta[name="only-authorization"]')?.content ?? '';
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
- let s = new StripeCreditCard(
- publishableKey,
- secret,
- onlyAuthorization,
- stripeConnect
- );
+let s = new StripeCreditCard(publishableKey, secret, onlyAuthorization, stripeConnect);
- s.handle();
-}
+s.handle();
-instant() ? boot() : wait('#stripe-credit-card-payment').then(() => boot());
+document.addEventListener('livewire:init', () => {
+
+Livewire.on('passed-required-fields-check', () => s.handle());
+
+});
\ No newline at end of file
diff --git a/resources/js/clients/payments/stripe-eps.js b/resources/js/clients/payments/stripe-eps.js
index d1e9ecf6eadd..2ae980bc321a 100644
--- a/resources/js/clients/payments/stripe-eps.js
+++ b/resources/js/clients/payments/stripe-eps.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessEPSPay {
constructor(key, stripeConnect) {
this.key = key;
@@ -82,15 +80,11 @@ class ProcessEPSPay {
};
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessEPSPay(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-eps-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessEPSPay(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-fpx.js b/resources/js/clients/payments/stripe-fpx.js
index d493d999d04e..45db81feea30 100644
--- a/resources/js/clients/payments/stripe-fpx.js
+++ b/resources/js/clients/payments/stripe-fpx.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessFPXPay {
constructor(key, stripeConnect) {
this.key = key;
@@ -83,15 +81,13 @@ class ProcessFPXPay {
}
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessFPXPay(publishableKey, stripeConnect).setupStripe().handle();
-}
-instant() ? boot() : wait('#stripe-fpx-payment').then(() => boot());
+
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
+
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessFPXPay(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-giropay.js b/resources/js/clients/payments/stripe-giropay.js
index ed36de0a220b..1a3903e9570f 100644
--- a/resources/js/clients/payments/stripe-giropay.js
+++ b/resources/js/clients/payments/stripe-giropay.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessGiroPay {
constructor(key, stripeConnect) {
this.key = key;
@@ -66,15 +64,11 @@ class ProcessGiroPay {
};
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessGiroPay(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-giropay-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessGiroPay(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-ideal.js b/resources/js/clients/payments/stripe-ideal.js
index 4073f31a0942..db397cb1e178 100644
--- a/resources/js/clients/payments/stripe-ideal.js
+++ b/resources/js/clients/payments/stripe-ideal.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessIDEALPay {
constructor(key, stripeConnect) {
this.key = key;
@@ -83,15 +81,11 @@ class ProcessIDEALPay {
};
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessIDEALPay(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-ideal-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessIDEALPay(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-klarna.js b/resources/js/clients/payments/stripe-klarna.js
index 412e1665602b..cebbb6e42fcb 100644
--- a/resources/js/clients/payments/stripe-klarna.js
+++ b/resources/js/clients/payments/stripe-klarna.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessKlarna {
constructor(key, stripeConnect) {
this.key = key;
@@ -93,15 +91,11 @@ class ProcessKlarna {
};
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessKlarna(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-klarna-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessKlarna(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-przelewy24.js b/resources/js/clients/payments/stripe-przelewy24.js
index 7564b6fa0d29..9f990240d0ec 100644
--- a/resources/js/clients/payments/stripe-przelewy24.js
+++ b/resources/js/clients/payments/stripe-przelewy24.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessPRZELEWY24 {
constructor(key, stripeConnect) {
this.key = key;
@@ -115,15 +113,11 @@ class ProcessPRZELEWY24 {
};
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessPRZELEWY24(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-przelewy24-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessPRZELEWY24(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-sepa.js b/resources/js/clients/payments/stripe-sepa.js
index c421a6937bd7..cafcf8e7cc9c 100644
--- a/resources/js/clients/payments/stripe-sepa.js
+++ b/resources/js/clients/payments/stripe-sepa.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessSEPA {
constructor(key, stripeConnect) {
this.key = key;
@@ -235,15 +233,11 @@ class ProcessSEPA {
}
}
-function boot() {
- const publishableKey =
- document.querySelector('meta[name="stripe-publishable-key"]')?.content ??
+const publishableKey =
+ document.querySelector('meta[name="stripe-publishable-key"]')?.content ??
'';
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
- new ProcessSEPA(publishableKey, stripeConnect).setupStripe().handle();
-}
-
-instant() ? boot() : wait('#stripe-sepa-payment').then(() => boot());
+new ProcessSEPA(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/js/clients/payments/stripe-sofort.js b/resources/js/clients/payments/stripe-sofort.js
index 2c39c0c4a654..394849697df4 100644
--- a/resources/js/clients/payments/stripe-sofort.js
+++ b/resources/js/clients/payments/stripe-sofort.js
@@ -8,8 +8,6 @@
* @license https://www.elastic.co/licensing/elastic-license
*/
-import { wait, instant } from '../wait';
-
class ProcessSOFORT {
constructor(key, stripeConnect) {
this.key = key;
@@ -60,15 +58,11 @@ class ProcessSOFORT {
};
}
-function boot() {
- const publishableKey = document.querySelector(
- 'meta[name="stripe-publishable-key"]'
- )?.content ?? '';
-
- const stripeConnect =
- document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
-
- new ProcessSOFORT(publishableKey, stripeConnect).setupStripe().handle();
-}
+const publishableKey = document.querySelector(
+ 'meta[name="stripe-publishable-key"]'
+)?.content ?? '';
-instant() ? boot() : wait('#stripe-sofort-payment').then(() => boot());
+const stripeConnect =
+ document.querySelector('meta[name="stripe-account-id"]')?.content ?? '';
+
+new ProcessSOFORT(publishableKey, stripeConnect).setupStripe().handle();
diff --git a/resources/views/portal/ninja2020/gateways/authorize/credit_card/pay.blade.php b/resources/views/portal/ninja2020/gateways/authorize/credit_card/pay.blade.php
index 4adcdff52987..cf5b09816890 100644
--- a/resources/views/portal/ninja2020/gateways/authorize/credit_card/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/authorize/credit_card/pay.blade.php
@@ -3,7 +3,6 @@
@section('gateway_head')
-
diff --git a/resources/views/portal/ninja2020/gateways/authorize/includes/credit_card.blade.php b/resources/views/portal/ninja2020/gateways/authorize/includes/credit_card.blade.php
index db02d0d77681..db384defa35b 100644
--- a/resources/views/portal/ninja2020/gateways/authorize/includes/credit_card.blade.php
+++ b/resources/views/portal/ninja2020/gateways/authorize/includes/credit_card.blade.php
@@ -1,13 +1,11 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/resources/views/portal/ninja2020/gateways/braintree/credit_card/pay.blade.php b/resources/views/portal/ninja2020/gateways/braintree/credit_card/pay.blade.php
index 771a5f3e5530..e9f1c44f9b4c 100644
--- a/resources/views/portal/ninja2020/gateways/braintree/credit_card/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/braintree/credit_card/pay.blade.php
@@ -2,7 +2,6 @@
@section('gateway_head')
-
{{-- --}}
diff --git a/resources/views/portal/ninja2020/gateways/braintree/paypal/pay.blade.php b/resources/views/portal/ninja2020/gateways/braintree/paypal/pay.blade.php
index bbc1b6b0398c..b405cebafed9 100644
--- a/resources/views/portal/ninja2020/gateways/braintree/paypal/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/braintree/paypal/pay.blade.php
@@ -2,7 +2,6 @@
@section('gateway_head')
-
diff --git a/resources/views/portal/ninja2020/gateways/eway/pay.blade.php b/resources/views/portal/ninja2020/gateways/eway/pay.blade.php
index 98c7805b886c..3f0cc9c788a1 100644
--- a/resources/views/portal/ninja2020/gateways/eway/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/eway/pay.blade.php
@@ -7,7 +7,6 @@ ctrans('texts.credit_card')])
-
@endsection
@section('gateway_content')
diff --git a/resources/views/portal/ninja2020/gateways/forte/ach/pay.blade.php b/resources/views/portal/ninja2020/gateways/forte/ach/pay.blade.php
index 89d1a308f20a..8dfab33c4269 100644
--- a/resources/views/portal/ninja2020/gateways/forte/ach/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/forte/ach/pay.blade.php
@@ -2,7 +2,6 @@
@section('gateway_head')
-
@endsection
@section('gateway_content')
diff --git a/resources/views/portal/ninja2020/gateways/forte/credit_card/pay.blade.php b/resources/views/portal/ninja2020/gateways/forte/credit_card/pay.blade.php
index 9c2c4c6a78f8..bb5901a58230 100644
--- a/resources/views/portal/ninja2020/gateways/forte/credit_card/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/forte/credit_card/pay.blade.php
@@ -2,8 +2,6 @@
@section('gateway_head')
-
-
diff --git a/resources/views/portal/ninja2020/gateways/forte/includes/credit_card.blade.php b/resources/views/portal/ninja2020/gateways/forte/includes/credit_card.blade.php
index fa46d3ca7faf..b15c3332764a 100644
--- a/resources/views/portal/ninja2020/gateways/forte/includes/credit_card.blade.php
+++ b/resources/views/portal/ninja2020/gateways/forte/includes/credit_card.blade.php
@@ -1,13 +1,11 @@
diff --git a/resources/views/portal/ninja2020/gateways/mollie/credit_card/pay.blade.php b/resources/views/portal/ninja2020/gateways/mollie/credit_card/pay.blade.php
index a3809360716e..8939c3b2cdf1 100644
--- a/resources/views/portal/ninja2020/gateways/mollie/credit_card/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/mollie/credit_card/pay.blade.php
@@ -4,7 +4,6 @@ ctrans('texts.credit_card')])
@section('gateway_head')
-
diff --git a/resources/views/portal/ninja2020/gateways/payfast/pay.blade.php b/resources/views/portal/ninja2020/gateways/payfast/pay.blade.php
index 73c40893278a..742622dff8a5 100644
--- a/resources/views/portal/ninja2020/gateways/payfast/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/payfast/pay.blade.php
@@ -3,7 +3,6 @@
@section('gateway_head')
-
@endsection
@section('gateway_content')
diff --git a/resources/views/portal/ninja2020/gateways/paytrace/pay.blade.php b/resources/views/portal/ninja2020/gateways/paytrace/pay.blade.php
index 85e8caaf7653..582954aa3667 100644
--- a/resources/views/portal/ninja2020/gateways/paytrace/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/paytrace/pay.blade.php
@@ -6,7 +6,6 @@
-
@endsection
@section('gateway_content')
diff --git a/resources/views/portal/ninja2020/gateways/razorpay/hosted/pay.blade.php b/resources/views/portal/ninja2020/gateways/razorpay/hosted/pay.blade.php
index 1da5150f4aa7..c5c130ef84cf 100644
--- a/resources/views/portal/ninja2020/gateways/razorpay/hosted/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/razorpay/hosted/pay.blade.php
@@ -3,7 +3,6 @@ ctrans('texts.aio_checkout')])
@section('gateway_head')
-
@endsection
@section('gateway_content')
diff --git a/resources/views/portal/ninja2020/gateways/square/credit_card/pay.blade.php b/resources/views/portal/ninja2020/gateways/square/credit_card/pay.blade.php
index a5512001bec7..f4841afd7295 100644
--- a/resources/views/portal/ninja2020/gateways/square/credit_card/pay.blade.php
+++ b/resources/views/portal/ninja2020/gateways/square/credit_card/pay.blade.php
@@ -7,8 +7,6 @@
-
-