diff --git a/apps/backend/prisma/court.prisma b/apps/backend/prisma/court.prisma
index 0f23120..128f87e 100644
--- a/apps/backend/prisma/court.prisma
+++ b/apps/backend/prisma/court.prisma
@@ -85,6 +85,7 @@ model CourtBooking {
endTime String @map("end_time") @db.VarChar(5)
customerName String @map("customer_name") @db.VarChar(120)
customerPhone String @map("customer_phone") @db.VarChar(30)
+ customerEmail String? @map("customer_email") @db.VarChar(254)
status CourtBookingStatus @default(CONFIRMED)
createdAt DateTime @default(now()) @map("created_at")
updatedAt DateTime @updatedAt @map("updated_at")
@@ -107,6 +108,7 @@ model CourtBookingLog {
newStatus CourtBookingStatus @map("new_status")
customerName String @map("customer_name") @db.VarChar(120)
customerPhone String @map("customer_phone") @db.VarChar(30)
+ customerEmail String? @map("customer_email") @db.VarChar(254)
changedAt DateTime @default(now()) @map("changed_at")
@@map("court_booking_logs")
diff --git a/apps/backend/prisma/migrations/20260602220943_add_customer_email/migration.sql b/apps/backend/prisma/migrations/20260602220943_add_customer_email/migration.sql
new file mode 100644
index 0000000..2910e30
--- /dev/null
+++ b/apps/backend/prisma/migrations/20260602220943_add_customer_email/migration.sql
@@ -0,0 +1,14 @@
+/*
+ Warnings:
+
+ - You are about to drop the `onboarding_requests` table. If the table is not empty, all the data it contains will be lost.
+
+*/
+-- AlterTable
+ALTER TABLE "court_booking_logs" ADD COLUMN "customer_email" VARCHAR(254);
+
+-- AlterTable
+ALTER TABLE "court_bookings" ADD COLUMN "customer_email" VARCHAR(254);
+
+-- DropTable
+DROP TABLE "onboarding_requests";
diff --git a/apps/backend/src/emails/booking-confirmation.ts b/apps/backend/src/emails/booking-confirmation.ts
new file mode 100644
index 0000000..0aa7e42
--- /dev/null
+++ b/apps/backend/src/emails/booking-confirmation.ts
@@ -0,0 +1,288 @@
+type BookingEmailData = {
+ bookingCode: string;
+ complexName: string;
+ date: string;
+ startTime: string;
+ endTime: string;
+ courtName: string;
+ sportName: string;
+ customerName: string;
+ price?: number;
+};
+
+function formatFriendlyDate(isoDate: string): string {
+ const match = /^(\d{4})-(\d{2})-(\d{2})$/.exec(isoDate);
+ if (!match) return isoDate;
+
+ const date = new Date(Number(match[1]), Number(match[2]) - 1, Number(match[3]));
+
+ const weekday = new Intl.DateTimeFormat('es-AR', { weekday: 'long' }).format(date);
+ const day = date.getDate();
+ const month = new Intl.DateTimeFormat('es-AR', { month: 'long' }).format(date);
+
+ return `${weekday.charAt(0).toUpperCase() + weekday.slice(1)}, ${day} de ${month}`;
+}
+
+const BASE_STYLES = `
+ body {
+ margin: 0;
+ padding: 0;
+ background-color: #f4f4f5;
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
+ }
+ * {
+ box-sizing: border-box;
+ }
+`;
+
+function wrapLayout(content: string) {
+ return `
+
+
+
+
+ Playzer
+
+
+
+
+
+`;
+}
+
+function headerSection() {
+ return `
+
+ |
+ Playzer
+ |
+
`;
+}
+
+function divider() {
+ return `
+
+ |
+
+ |
+
`;
+}
+
+function dateTimeBlock(date: string, startTime: string, endTime: string): string {
+ const friendlyDate = formatFriendlyDate(date);
+
+ return `
+
+
+
+
+ |
+
+ ${friendlyDate}
+
+
+ ${startTime} — ${endTime}
+
+ |
+
+
+ |
+
`;
+}
+
+export function bookingConfirmationHtml(data: BookingEmailData): string {
+ const formattedPrice =
+ data.price !== undefined && data.price > 0
+ ? new Intl.NumberFormat('es-AR', {
+ style: 'currency',
+ currency: 'ARS',
+ maximumFractionDigits: Number.isInteger(data.price) ? 0 : 2,
+ }).format(data.price)
+ : undefined;
+
+ const content = `
+ ${headerSection()}
+
+
+
+ Reserva confirmada
+
+
+ ${data.complexName}
+
+ |
+
+
+
+ |
+ ${dateTimeBlock(data.date, data.startTime, data.endTime)}
+ |
+
+
+ ${divider()}
+
+
+
+
+ ${detailRow('Código', `${data.bookingCode}`)}
+ ${detailRow('Cancha', `${data.courtName} — ${data.sportName}`)}
+ ${detailRow('Cliente', data.customerName)}
+ ${formattedPrice ? detailRow('Precio', formattedPrice) : ''}
+
+ |
+
+
+ ${divider()}
+
+
+ |
+
+ Presentá el código de reserva al llegar al complejo.
+
+ Si necesitás cancelar o modificar, contactate directamente con el complejo.
+
+ |
+
+
+
+ |
+
+ Playzer — Reserva de canchas online
+
+ |
+
`;
+
+ return wrapLayout(content);
+}
+
+export function bookingCancelledHtml(data: BookingEmailData): string {
+ const content = `
+ ${headerSection()}
+
+
+
+ Reserva cancelada
+
+
+ ${data.complexName}
+
+ |
+
+
+
+ |
+ ${dateTimeBlock(data.date, data.startTime, data.endTime)}
+ |
+
+
+ ${divider()}
+
+
+ |
+
+ La reserva ${data.bookingCode}
+ fue cancelada. Si tenés dudas, contactate con el complejo.
+
+ |
+
+
+
+
+
+ ${detailRow('Cancha', `${data.courtName} — ${data.sportName}`)}
+ ${detailRow('Cliente', data.customerName)}
+
+ |
+
+
+
+ |
+
+ Playzer — Reserva de canchas online
+
+ |
+
`;
+
+ return wrapLayout(content);
+}
+
+export function bookingNoShowHtml(data: BookingEmailData): string {
+ const content = `
+ ${headerSection()}
+
+
+
+ Reserva no concretada
+
+
+ ${data.complexName}
+
+ |
+
+
+
+ |
+ ${dateTimeBlock(data.date, data.startTime, data.endTime)}
+ |
+
+
+ ${divider()}
+
+
+ |
+
+ La reserva ${data.bookingCode}
+ fue registrada como no concretada por falta de asistencia.
+
+ |
+
+
+
+
+
+ ${detailRow('Cancha', `${data.courtName} — ${data.sportName}`)}
+ ${detailRow('Cliente', data.customerName)}
+
+ |
+
+
+
+ |
+
+ Playzer — Reserva de canchas online
+
+ |
+
`;
+
+ return wrapLayout(content);
+}
+
+function detailRow(label: string, value: string): string {
+ return `
+
+
+
+
+ |
+ ${label}
+ |
+
+ ${value}
+ |
+
+
+ |
+
`;
+}
diff --git a/apps/backend/src/generated/prisma/browser.ts b/apps/backend/src/generated/prisma/browser.ts
index 3f8299c..57c9172 100644
--- a/apps/backend/src/generated/prisma/browser.ts
+++ b/apps/backend/src/generated/prisma/browser.ts
@@ -82,11 +82,6 @@ export type CourtBooking = Prisma.CourtBookingModel
*
*/
export type CourtBookingLog = Prisma.CourtBookingLogModel
-/**
- * Model OnboardingRequest
- *
- */
-export type OnboardingRequest = Prisma.OnboardingRequestModel
/**
* Model PasswordResetRequest
*
diff --git a/apps/backend/src/generated/prisma/client.ts b/apps/backend/src/generated/prisma/client.ts
index a6de1a1..c5e75b2 100644
--- a/apps/backend/src/generated/prisma/client.ts
+++ b/apps/backend/src/generated/prisma/client.ts
@@ -106,11 +106,6 @@ export type CourtBooking = Prisma.CourtBookingModel
*
*/
export type CourtBookingLog = Prisma.CourtBookingLogModel
-/**
- * Model OnboardingRequest
- *
- */
-export type OnboardingRequest = Prisma.OnboardingRequestModel
/**
* Model PasswordResetRequest
*
diff --git a/apps/backend/src/generated/prisma/internal/class.ts b/apps/backend/src/generated/prisma/internal/class.ts
index 268e76f..b65b374 100644
--- a/apps/backend/src/generated/prisma/internal/class.ts
+++ b/apps/backend/src/generated/prisma/internal/class.ts
@@ -20,7 +20,7 @@ const config: runtime.GetPrismaClientConfig = {
"clientVersion": "7.6.0",
"engineVersion": "75cbdc1eb7150937890ad5465d861175c6624711",
"activeProvider": "postgresql",
- "inlineSchema": "model User {\n id String @id\n name String\n email String\n emailVerified Boolean @default(false)\n image String?\n phone String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n sessions Session[]\n accounts Account[]\n role String @default(\"member\")\n complexes ComplexUser[]\n\n @@unique([email])\n @@map(\"users\")\n}\n\nmodel Session {\n id String @id\n expiresAt DateTime\n token String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n ipAddress String?\n userAgent String?\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([token])\n @@index([userId])\n @@map(\"sessions\")\n}\n\nmodel Account {\n id String @id\n accountId String\n providerId String\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n accessToken String?\n refreshToken String?\n idToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n scope String?\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"accounts\")\n}\n\nmodel Verification {\n id String @id\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([identifier])\n @@map(\"verification\")\n}\n\nmodel Complex {\n id String @id @db.Uuid\n complexName String @map(\"complex_name\")\n physicalAddress String? @map(\"physical_address\") @db.VarChar(200)\n city String? @map(\"city\") @db.VarChar(100)\n state String? @map(\"state\") @db.VarChar(100)\n country String? @map(\"country\") @db.VarChar(100)\n complexSlug String @unique @map(\"complex_slug\")\n adminEmail String @map(\"admin_email\")\n planCode String? @map(\"plan_code\") @db.VarChar(10)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n plan Plan? @relation(fields: [planCode], references: [code])\n users ComplexUser[]\n invitations ComplexInvitation[]\n courts Court[]\n\n @@index([planCode])\n @@index([complexSlug])\n @@map(\"complexes\")\n}\n\nenum ComplexUserRole {\n ADMIN\n EMPLOYEE\n}\n\nmodel ComplexUser {\n complexId String @map(\"complex_id\") @db.Uuid\n userId String @map(\"user_id\")\n role ComplexUserRole @default(ADMIN)\n createdAt DateTime @default(now()) @map(\"created_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([complexId, userId])\n @@index([userId])\n @@map(\"complex_users\")\n}\n\nmodel ComplexInvitation {\n id String @id @db.Uuid\n complexId String @map(\"complex_id\") @db.Uuid\n email String @db.VarChar(255)\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n acceptedAt DateTime? @map(\"accepted_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n\n @@index([complexId, email])\n @@index([email])\n @@map(\"complex_invitations\")\n}\n\nenum DayOfWeek {\n MONDAY\n TUESDAY\n WEDNESDAY\n THURSDAY\n FRIDAY\n SATURDAY\n SUNDAY\n}\n\nenum CourtBookingStatus {\n CONFIRMED\n CANCELLED\n COMPLETED\n NOSHOW\n}\n\nmodel Sport {\n id String @id @db.Uuid\n name String @unique\n slug String @unique\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n courts Court[]\n\n @@map(\"sports\")\n}\n\nmodel Court {\n id String @id @db.Uuid\n complexId String @map(\"complex_id\") @db.Uuid\n sportId String @map(\"sport_id\") @db.Uuid\n name String\n slotDurationMinutes Int @map(\"slot_duration_minutes\")\n basePrice Decimal @map(\"base_price\") @db.Decimal(19, 2)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n sport Sport @relation(fields: [sportId], references: [id])\n availabilities CourtAvailability[]\n priceRules CourtPriceRule[]\n bookings CourtBooking[]\n\n @@index([complexId])\n @@index([sportId])\n @@map(\"courts\")\n}\n\nmodel CourtAvailability {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek @map(\"day_of_week\")\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n createdAt DateTime @default(now()) @map(\"created_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, dayOfWeek])\n @@map(\"court_availabilities\")\n}\n\nmodel CourtPriceRule {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek? @map(\"day_of_week\")\n startTime String? @map(\"start_time\") @db.VarChar(5)\n endTime String? @map(\"end_time\") @db.VarChar(5)\n price Decimal @db.Decimal(19, 2)\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, isActive])\n @@map(\"court_price_rules\")\n}\n\nmodel CourtBooking {\n id String @id @db.Uuid\n bookingCode String @unique @map(\"booking_code\") @db.VarChar(8)\n courtId String @map(\"court_id\") @db.Uuid\n bookingDate DateTime @map(\"booking_date\") @db.Date\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n customerName String @map(\"customer_name\") @db.VarChar(120)\n customerPhone String @map(\"customer_phone\") @db.VarChar(30)\n status CourtBookingStatus @default(CONFIRMED)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@unique([courtId, bookingDate, startTime])\n @@index([courtId, bookingDate])\n @@index([bookingDate])\n @@map(\"court_bookings\")\n}\n\nmodel CourtBookingLog {\n id String @id @db.Uuid\n bookingCode String @map(\"booking_code\") @db.VarChar(8)\n courtId String @map(\"court_id\") @db.Uuid\n bookingDate DateTime @map(\"booking_date\") @db.Date\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n previousStatus CourtBookingStatus @map(\"previous_status\")\n newStatus CourtBookingStatus @map(\"new_status\")\n customerName String @map(\"customer_name\") @db.VarChar(120)\n customerPhone String @map(\"customer_phone\") @db.VarChar(30)\n changedAt DateTime @default(now()) @map(\"changed_at\")\n\n @@index([courtId, newStatus])\n @@map(\"court_booking_logs\")\n}\n\nmodel OnboardingRequest {\n id String @id @db.Uuid\n fullName String @map(\"full_name\")\n email String\n otpHash String @map(\"otp_hash\")\n otpExpiresAt DateTime @map(\"otp_expires_at\")\n otpAttempts Int @default(0) @map(\"otp_attempts\")\n otpLastSentAt DateTime @map(\"otp_last_sent_at\")\n otpResendCount Int @default(0) @map(\"otp_resend_count\")\n emailVerifiedAt DateTime? @map(\"email_verified_at\")\n completedAt DateTime? @map(\"completed_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@index([email])\n @@index([otpExpiresAt])\n @@map(\"onboarding_requests\")\n}\n\nmodel PasswordResetRequest {\n id String @id @db.Uuid\n email String\n otpHash String @map(\"otp_hash\")\n otpExpiresAt DateTime @map(\"otp_expires_at\")\n otpAttempts Int @default(0) @map(\"otp_attempts\")\n otpLastSentAt DateTime @map(\"otp_last_sent_at\")\n otpResendCount Int @default(0) @map(\"otp_resend_count\")\n usedAt DateTime? @map(\"used_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@index([email])\n @@index([otpExpiresAt])\n @@map(\"password_reset_requests\")\n}\n\nmodel Plan {\n code String @id @db.VarChar(10)\n name String @db.VarChar(30)\n price Decimal @db.Decimal(19, 2)\n rules Json\n lastUpdatedAt DateTime @default(now()) @map(\"last_updated_at\")\n complexes Complex[]\n\n @@map(\"plans\")\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// User model is defined in auth.prisma (Better Auth schema).\n",
+ "inlineSchema": "model User {\n id String @id\n name String\n email String\n emailVerified Boolean @default(false)\n image String?\n phone String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n sessions Session[]\n accounts Account[]\n role String @default(\"member\")\n complexes ComplexUser[]\n\n @@unique([email])\n @@map(\"users\")\n}\n\nmodel Session {\n id String @id\n expiresAt DateTime\n token String\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n ipAddress String?\n userAgent String?\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@unique([token])\n @@index([userId])\n @@map(\"sessions\")\n}\n\nmodel Account {\n id String @id\n accountId String\n providerId String\n userId String\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n accessToken String?\n refreshToken String?\n idToken String?\n accessTokenExpiresAt DateTime?\n refreshTokenExpiresAt DateTime?\n scope String?\n password String?\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([userId])\n @@map(\"accounts\")\n}\n\nmodel Verification {\n id String @id\n identifier String\n value String\n expiresAt DateTime\n createdAt DateTime @default(now())\n updatedAt DateTime @updatedAt\n\n @@index([identifier])\n @@map(\"verification\")\n}\n\nmodel Complex {\n id String @id @db.Uuid\n complexName String @map(\"complex_name\")\n physicalAddress String? @map(\"physical_address\") @db.VarChar(200)\n city String? @map(\"city\") @db.VarChar(100)\n state String? @map(\"state\") @db.VarChar(100)\n country String? @map(\"country\") @db.VarChar(100)\n complexSlug String @unique @map(\"complex_slug\")\n adminEmail String @map(\"admin_email\")\n planCode String? @map(\"plan_code\") @db.VarChar(10)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n plan Plan? @relation(fields: [planCode], references: [code])\n users ComplexUser[]\n invitations ComplexInvitation[]\n courts Court[]\n\n @@index([planCode])\n @@index([complexSlug])\n @@map(\"complexes\")\n}\n\nenum ComplexUserRole {\n ADMIN\n EMPLOYEE\n}\n\nmodel ComplexUser {\n complexId String @map(\"complex_id\") @db.Uuid\n userId String @map(\"user_id\")\n role ComplexUserRole @default(ADMIN)\n createdAt DateTime @default(now()) @map(\"created_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n user User @relation(fields: [userId], references: [id], onDelete: Cascade)\n\n @@id([complexId, userId])\n @@index([userId])\n @@map(\"complex_users\")\n}\n\nmodel ComplexInvitation {\n id String @id @db.Uuid\n complexId String @map(\"complex_id\") @db.Uuid\n email String @db.VarChar(255)\n tokenHash String @unique @map(\"token_hash\")\n expiresAt DateTime @map(\"expires_at\")\n acceptedAt DateTime? @map(\"accepted_at\")\n revokedAt DateTime? @map(\"revoked_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n\n @@index([complexId, email])\n @@index([email])\n @@map(\"complex_invitations\")\n}\n\nenum DayOfWeek {\n MONDAY\n TUESDAY\n WEDNESDAY\n THURSDAY\n FRIDAY\n SATURDAY\n SUNDAY\n}\n\nenum CourtBookingStatus {\n CONFIRMED\n CANCELLED\n COMPLETED\n NOSHOW\n}\n\nmodel Sport {\n id String @id @db.Uuid\n name String @unique\n slug String @unique\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n courts Court[]\n\n @@map(\"sports\")\n}\n\nmodel Court {\n id String @id @db.Uuid\n complexId String @map(\"complex_id\") @db.Uuid\n sportId String @map(\"sport_id\") @db.Uuid\n name String\n slotDurationMinutes Int @map(\"slot_duration_minutes\")\n basePrice Decimal @map(\"base_price\") @db.Decimal(19, 2)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complex Complex @relation(fields: [complexId], references: [id], onDelete: Cascade)\n sport Sport @relation(fields: [sportId], references: [id])\n availabilities CourtAvailability[]\n priceRules CourtPriceRule[]\n bookings CourtBooking[]\n\n @@index([complexId])\n @@index([sportId])\n @@map(\"courts\")\n}\n\nmodel CourtAvailability {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek @map(\"day_of_week\")\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n createdAt DateTime @default(now()) @map(\"created_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, dayOfWeek])\n @@map(\"court_availabilities\")\n}\n\nmodel CourtPriceRule {\n id String @id @db.Uuid\n courtId String @map(\"court_id\") @db.Uuid\n dayOfWeek DayOfWeek? @map(\"day_of_week\")\n startTime String? @map(\"start_time\") @db.VarChar(5)\n endTime String? @map(\"end_time\") @db.VarChar(5)\n price Decimal @db.Decimal(19, 2)\n isActive Boolean @default(true) @map(\"is_active\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@index([courtId, isActive])\n @@map(\"court_price_rules\")\n}\n\nmodel CourtBooking {\n id String @id @db.Uuid\n bookingCode String @unique @map(\"booking_code\") @db.VarChar(8)\n courtId String @map(\"court_id\") @db.Uuid\n bookingDate DateTime @map(\"booking_date\") @db.Date\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n customerName String @map(\"customer_name\") @db.VarChar(120)\n customerPhone String @map(\"customer_phone\") @db.VarChar(30)\n customerEmail String? @map(\"customer_email\") @db.VarChar(254)\n status CourtBookingStatus @default(CONFIRMED)\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n court Court @relation(fields: [courtId], references: [id], onDelete: Cascade)\n\n @@unique([courtId, bookingDate, startTime])\n @@index([courtId, bookingDate])\n @@index([bookingDate])\n @@map(\"court_bookings\")\n}\n\nmodel CourtBookingLog {\n id String @id @db.Uuid\n bookingCode String @map(\"booking_code\") @db.VarChar(8)\n courtId String @map(\"court_id\") @db.Uuid\n bookingDate DateTime @map(\"booking_date\") @db.Date\n startTime String @map(\"start_time\") @db.VarChar(5)\n endTime String @map(\"end_time\") @db.VarChar(5)\n previousStatus CourtBookingStatus @map(\"previous_status\")\n newStatus CourtBookingStatus @map(\"new_status\")\n customerName String @map(\"customer_name\") @db.VarChar(120)\n customerPhone String @map(\"customer_phone\") @db.VarChar(30)\n customerEmail String? @map(\"customer_email\") @db.VarChar(254)\n changedAt DateTime @default(now()) @map(\"changed_at\")\n\n @@index([courtId, newStatus])\n @@map(\"court_booking_logs\")\n}\n\nmodel PasswordResetRequest {\n id String @id @db.Uuid\n email String\n otpHash String @map(\"otp_hash\")\n otpExpiresAt DateTime @map(\"otp_expires_at\")\n otpAttempts Int @default(0) @map(\"otp_attempts\")\n otpLastSentAt DateTime @map(\"otp_last_sent_at\")\n otpResendCount Int @default(0) @map(\"otp_resend_count\")\n usedAt DateTime? @map(\"used_at\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n\n @@index([email])\n @@index([otpExpiresAt])\n @@map(\"password_reset_requests\")\n}\n\nmodel Plan {\n code String @id @db.VarChar(10)\n name String @db.VarChar(30)\n price Decimal @db.Decimal(19, 2)\n rules Json\n lastUpdatedAt DateTime @default(now()) @map(\"last_updated_at\")\n complexes Complex[]\n\n @@map(\"plans\")\n}\n\ngenerator client {\n provider = \"prisma-client\"\n output = \"../src/generated/prisma\"\n}\n\ndatasource db {\n provider = \"postgresql\"\n}\n\n// User model is defined in auth.prisma (Better Auth schema).\n",
"runtimeDataModel": {
"models": {},
"enums": {},
@@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = {
}
}
-config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"users\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"sessions\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"accounts\"},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"verification\"},\"Complex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_name\"},{\"name\":\"physicalAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"physical_address\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"city\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"country\"},{\"name\":\"complexSlug\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_slug\"},{\"name\":\"adminEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"admin_email\"},{\"name\":\"planCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"plan_code\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"Plan\",\"relationName\":\"ComplexToPlan\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"ComplexInvitation\",\"relationName\":\"ComplexToComplexInvitation\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"ComplexToCourt\"}],\"dbName\":\"complexes\"},\"ComplexUser\":{\"fields\":[{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ComplexUserRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"complex_users\"},\"ComplexInvitation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"accepted_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToComplexInvitation\"}],\"dbName\":\"complex_invitations\"},\"Sport\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToSport\"}],\"dbName\":\"sports\"},\"Court\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"sportId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"sport_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slotDurationMinutes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"slot_duration_minutes\"},{\"name\":\"basePrice\",\"kind\":\"scalar\",\"type\":\"Decimal\",\"dbName\":\"base_price\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCourt\"},{\"name\":\"sport\",\"kind\":\"object\",\"type\":\"Sport\",\"relationName\":\"CourtToSport\"},{\"name\":\"availabilities\",\"kind\":\"object\",\"type\":\"CourtAvailability\",\"relationName\":\"CourtToCourtAvailability\"},{\"name\":\"priceRules\",\"kind\":\"object\",\"type\":\"CourtPriceRule\",\"relationName\":\"CourtToCourtPriceRule\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"CourtBooking\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"courts\"},\"CourtAvailability\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtAvailability\"}],\"dbName\":\"court_availabilities\"},\"CourtPriceRule\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtPriceRule\"}],\"dbName\":\"court_price_rules\"},\"CourtBooking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"booking_code\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"bookingDate\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"booking_date\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"customerName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_name\"},{\"name\":\"customerPhone\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_phone\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"court_bookings\"},\"CourtBookingLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"booking_code\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"bookingDate\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"booking_date\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"previousStatus\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\",\"dbName\":\"previous_status\"},{\"name\":\"newStatus\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\",\"dbName\":\"new_status\"},{\"name\":\"customerName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_name\"},{\"name\":\"customerPhone\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_phone\"},{\"name\":\"changedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"changed_at\"}],\"dbName\":\"court_booking_logs\"},\"OnboardingRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"full_name\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"otpHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"otp_hash\"},{\"name\":\"otpExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_expires_at\"},{\"name\":\"otpAttempts\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_attempts\"},{\"name\":\"otpLastSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_last_sent_at\"},{\"name\":\"otpResendCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_resend_count\"},{\"name\":\"emailVerifiedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"email_verified_at\"},{\"name\":\"completedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"completed_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"onboarding_requests\"},\"PasswordResetRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"otpHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"otp_hash\"},{\"name\":\"otpExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_expires_at\"},{\"name\":\"otpAttempts\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_attempts\"},{\"name\":\"otpLastSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_last_sent_at\"},{\"name\":\"otpResendCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_resend_count\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"used_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"password_reset_requests\"},\"Plan\":{\"fields\":[{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"rules\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"lastUpdatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_updated_at\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPlan\"}],\"dbName\":\"plans\"}},\"enums\":{},\"types\":{}}")
+config.runtimeDataModel = JSON.parse("{\"models\":{\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"emailVerified\",\"kind\":\"scalar\",\"type\":\"Boolean\"},{\"name\":\"image\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"phone\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"sessions\",\"kind\":\"object\",\"type\":\"Session\",\"relationName\":\"SessionToUser\"},{\"name\":\"accounts\",\"kind\":\"object\",\"type\":\"Account\",\"relationName\":\"AccountToUser\"},{\"name\":\"role\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"users\"},\"Session\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"token\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"ipAddress\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userAgent\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"SessionToUser\"}],\"dbName\":\"sessions\"},\"Account\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accountId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"providerId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"AccountToUser\"},{\"name\":\"accessToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"refreshToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"idToken\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"accessTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"refreshTokenExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"scope\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"password\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"accounts\"},\"Verification\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"identifier\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"value\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\"}],\"dbName\":\"verification\"},\"Complex\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_name\"},{\"name\":\"physicalAddress\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"physical_address\"},{\"name\":\"city\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"city\"},{\"name\":\"state\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"state\"},{\"name\":\"country\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"country\"},{\"name\":\"complexSlug\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_slug\"},{\"name\":\"adminEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"admin_email\"},{\"name\":\"planCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"plan_code\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"plan\",\"kind\":\"object\",\"type\":\"Plan\",\"relationName\":\"ComplexToPlan\"},{\"name\":\"users\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"invitations\",\"kind\":\"object\",\"type\":\"ComplexInvitation\",\"relationName\":\"ComplexToComplexInvitation\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"ComplexToCourt\"}],\"dbName\":\"complexes\"},\"ComplexUser\":{\"fields\":[{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"userId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"user_id\"},{\"name\":\"role\",\"kind\":\"enum\",\"type\":\"ComplexUserRole\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToComplexUser\"},{\"name\":\"user\",\"kind\":\"object\",\"type\":\"User\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"complex_users\"},\"ComplexInvitation\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"tokenHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"token_hash\"},{\"name\":\"expiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"expires_at\"},{\"name\":\"acceptedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"accepted_at\"},{\"name\":\"revokedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"revoked_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToComplexInvitation\"}],\"dbName\":\"complex_invitations\"},\"Sport\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slug\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"courts\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToSport\"}],\"dbName\":\"sports\"},\"Court\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"complexId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"complex_id\"},{\"name\":\"sportId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"sport_id\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"slotDurationMinutes\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"slot_duration_minutes\"},{\"name\":\"basePrice\",\"kind\":\"scalar\",\"type\":\"Decimal\",\"dbName\":\"base_price\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complex\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToCourt\"},{\"name\":\"sport\",\"kind\":\"object\",\"type\":\"Sport\",\"relationName\":\"CourtToSport\"},{\"name\":\"availabilities\",\"kind\":\"object\",\"type\":\"CourtAvailability\",\"relationName\":\"CourtToCourtAvailability\"},{\"name\":\"priceRules\",\"kind\":\"object\",\"type\":\"CourtPriceRule\",\"relationName\":\"CourtToCourtPriceRule\"},{\"name\":\"bookings\",\"kind\":\"object\",\"type\":\"CourtBooking\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"courts\"},\"CourtAvailability\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtAvailability\"}],\"dbName\":\"court_availabilities\"},\"CourtPriceRule\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"dayOfWeek\",\"kind\":\"enum\",\"type\":\"DayOfWeek\",\"dbName\":\"day_of_week\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"isActive\",\"kind\":\"scalar\",\"type\":\"Boolean\",\"dbName\":\"is_active\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtPriceRule\"}],\"dbName\":\"court_price_rules\"},\"CourtBooking\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"booking_code\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"bookingDate\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"booking_date\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"customerName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_name\"},{\"name\":\"customerPhone\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_phone\"},{\"name\":\"customerEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_email\"},{\"name\":\"status\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"court\",\"kind\":\"object\",\"type\":\"Court\",\"relationName\":\"CourtToCourtBooking\"}],\"dbName\":\"court_bookings\"},\"CourtBookingLog\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"bookingCode\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"booking_code\"},{\"name\":\"courtId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"court_id\"},{\"name\":\"bookingDate\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"booking_date\"},{\"name\":\"startTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"start_time\"},{\"name\":\"endTime\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"end_time\"},{\"name\":\"previousStatus\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\",\"dbName\":\"previous_status\"},{\"name\":\"newStatus\",\"kind\":\"enum\",\"type\":\"CourtBookingStatus\",\"dbName\":\"new_status\"},{\"name\":\"customerName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_name\"},{\"name\":\"customerPhone\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_phone\"},{\"name\":\"customerEmail\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"customer_email\"},{\"name\":\"changedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"changed_at\"}],\"dbName\":\"court_booking_logs\"},\"PasswordResetRequest\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"otpHash\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"otp_hash\"},{\"name\":\"otpExpiresAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_expires_at\"},{\"name\":\"otpAttempts\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_attempts\"},{\"name\":\"otpLastSentAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"otp_last_sent_at\"},{\"name\":\"otpResendCount\",\"kind\":\"scalar\",\"type\":\"Int\",\"dbName\":\"otp_resend_count\"},{\"name\":\"usedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"used_at\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"}],\"dbName\":\"password_reset_requests\"},\"Plan\":{\"fields\":[{\"name\":\"code\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"name\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"price\",\"kind\":\"scalar\",\"type\":\"Decimal\"},{\"name\":\"rules\",\"kind\":\"scalar\",\"type\":\"Json\"},{\"name\":\"lastUpdatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"last_updated_at\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"Complex\",\"relationName\":\"ComplexToPlan\"}],\"dbName\":\"plans\"}},\"enums\":{},\"types\":{}}")
config.parameterizationSchema = {
- strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"sessions\",\"accounts\",\"complexes\",\"_count\",\"plan\",\"users\",\"complex\",\"invitations\",\"courts\",\"sport\",\"court\",\"availabilities\",\"priceRules\",\"bookings\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Complex.findUnique\",\"Complex.findUniqueOrThrow\",\"Complex.findFirst\",\"Complex.findFirstOrThrow\",\"Complex.findMany\",\"Complex.createOne\",\"Complex.createMany\",\"Complex.createManyAndReturn\",\"Complex.updateOne\",\"Complex.updateMany\",\"Complex.updateManyAndReturn\",\"Complex.upsertOne\",\"Complex.deleteOne\",\"Complex.deleteMany\",\"Complex.groupBy\",\"Complex.aggregate\",\"ComplexUser.findUnique\",\"ComplexUser.findUniqueOrThrow\",\"ComplexUser.findFirst\",\"ComplexUser.findFirstOrThrow\",\"ComplexUser.findMany\",\"ComplexUser.createOne\",\"ComplexUser.createMany\",\"ComplexUser.createManyAndReturn\",\"ComplexUser.updateOne\",\"ComplexUser.updateMany\",\"ComplexUser.updateManyAndReturn\",\"ComplexUser.upsertOne\",\"ComplexUser.deleteOne\",\"ComplexUser.deleteMany\",\"ComplexUser.groupBy\",\"ComplexUser.aggregate\",\"ComplexInvitation.findUnique\",\"ComplexInvitation.findUniqueOrThrow\",\"ComplexInvitation.findFirst\",\"ComplexInvitation.findFirstOrThrow\",\"ComplexInvitation.findMany\",\"ComplexInvitation.createOne\",\"ComplexInvitation.createMany\",\"ComplexInvitation.createManyAndReturn\",\"ComplexInvitation.updateOne\",\"ComplexInvitation.updateMany\",\"ComplexInvitation.updateManyAndReturn\",\"ComplexInvitation.upsertOne\",\"ComplexInvitation.deleteOne\",\"ComplexInvitation.deleteMany\",\"ComplexInvitation.groupBy\",\"ComplexInvitation.aggregate\",\"Sport.findUnique\",\"Sport.findUniqueOrThrow\",\"Sport.findFirst\",\"Sport.findFirstOrThrow\",\"Sport.findMany\",\"Sport.createOne\",\"Sport.createMany\",\"Sport.createManyAndReturn\",\"Sport.updateOne\",\"Sport.updateMany\",\"Sport.updateManyAndReturn\",\"Sport.upsertOne\",\"Sport.deleteOne\",\"Sport.deleteMany\",\"Sport.groupBy\",\"Sport.aggregate\",\"Court.findUnique\",\"Court.findUniqueOrThrow\",\"Court.findFirst\",\"Court.findFirstOrThrow\",\"Court.findMany\",\"Court.createOne\",\"Court.createMany\",\"Court.createManyAndReturn\",\"Court.updateOne\",\"Court.updateMany\",\"Court.updateManyAndReturn\",\"Court.upsertOne\",\"Court.deleteOne\",\"Court.deleteMany\",\"_avg\",\"_sum\",\"Court.groupBy\",\"Court.aggregate\",\"CourtAvailability.findUnique\",\"CourtAvailability.findUniqueOrThrow\",\"CourtAvailability.findFirst\",\"CourtAvailability.findFirstOrThrow\",\"CourtAvailability.findMany\",\"CourtAvailability.createOne\",\"CourtAvailability.createMany\",\"CourtAvailability.createManyAndReturn\",\"CourtAvailability.updateOne\",\"CourtAvailability.updateMany\",\"CourtAvailability.updateManyAndReturn\",\"CourtAvailability.upsertOne\",\"CourtAvailability.deleteOne\",\"CourtAvailability.deleteMany\",\"CourtAvailability.groupBy\",\"CourtAvailability.aggregate\",\"CourtPriceRule.findUnique\",\"CourtPriceRule.findUniqueOrThrow\",\"CourtPriceRule.findFirst\",\"CourtPriceRule.findFirstOrThrow\",\"CourtPriceRule.findMany\",\"CourtPriceRule.createOne\",\"CourtPriceRule.createMany\",\"CourtPriceRule.createManyAndReturn\",\"CourtPriceRule.updateOne\",\"CourtPriceRule.updateMany\",\"CourtPriceRule.updateManyAndReturn\",\"CourtPriceRule.upsertOne\",\"CourtPriceRule.deleteOne\",\"CourtPriceRule.deleteMany\",\"CourtPriceRule.groupBy\",\"CourtPriceRule.aggregate\",\"CourtBooking.findUnique\",\"CourtBooking.findUniqueOrThrow\",\"CourtBooking.findFirst\",\"CourtBooking.findFirstOrThrow\",\"CourtBooking.findMany\",\"CourtBooking.createOne\",\"CourtBooking.createMany\",\"CourtBooking.createManyAndReturn\",\"CourtBooking.updateOne\",\"CourtBooking.updateMany\",\"CourtBooking.updateManyAndReturn\",\"CourtBooking.upsertOne\",\"CourtBooking.deleteOne\",\"CourtBooking.deleteMany\",\"CourtBooking.groupBy\",\"CourtBooking.aggregate\",\"CourtBookingLog.findUnique\",\"CourtBookingLog.findUniqueOrThrow\",\"CourtBookingLog.findFirst\",\"CourtBookingLog.findFirstOrThrow\",\"CourtBookingLog.findMany\",\"CourtBookingLog.createOne\",\"CourtBookingLog.createMany\",\"CourtBookingLog.createManyAndReturn\",\"CourtBookingLog.updateOne\",\"CourtBookingLog.updateMany\",\"CourtBookingLog.updateManyAndReturn\",\"CourtBookingLog.upsertOne\",\"CourtBookingLog.deleteOne\",\"CourtBookingLog.deleteMany\",\"CourtBookingLog.groupBy\",\"CourtBookingLog.aggregate\",\"OnboardingRequest.findUnique\",\"OnboardingRequest.findUniqueOrThrow\",\"OnboardingRequest.findFirst\",\"OnboardingRequest.findFirstOrThrow\",\"OnboardingRequest.findMany\",\"OnboardingRequest.createOne\",\"OnboardingRequest.createMany\",\"OnboardingRequest.createManyAndReturn\",\"OnboardingRequest.updateOne\",\"OnboardingRequest.updateMany\",\"OnboardingRequest.updateManyAndReturn\",\"OnboardingRequest.upsertOne\",\"OnboardingRequest.deleteOne\",\"OnboardingRequest.deleteMany\",\"OnboardingRequest.groupBy\",\"OnboardingRequest.aggregate\",\"PasswordResetRequest.findUnique\",\"PasswordResetRequest.findUniqueOrThrow\",\"PasswordResetRequest.findFirst\",\"PasswordResetRequest.findFirstOrThrow\",\"PasswordResetRequest.findMany\",\"PasswordResetRequest.createOne\",\"PasswordResetRequest.createMany\",\"PasswordResetRequest.createManyAndReturn\",\"PasswordResetRequest.updateOne\",\"PasswordResetRequest.updateMany\",\"PasswordResetRequest.updateManyAndReturn\",\"PasswordResetRequest.upsertOne\",\"PasswordResetRequest.deleteOne\",\"PasswordResetRequest.deleteMany\",\"PasswordResetRequest.groupBy\",\"PasswordResetRequest.aggregate\",\"Plan.findUnique\",\"Plan.findUniqueOrThrow\",\"Plan.findFirst\",\"Plan.findFirstOrThrow\",\"Plan.findMany\",\"Plan.createOne\",\"Plan.createMany\",\"Plan.createManyAndReturn\",\"Plan.updateOne\",\"Plan.updateMany\",\"Plan.updateManyAndReturn\",\"Plan.upsertOne\",\"Plan.deleteOne\",\"Plan.deleteMany\",\"Plan.groupBy\",\"Plan.aggregate\",\"AND\",\"OR\",\"NOT\",\"code\",\"name\",\"price\",\"rules\",\"lastUpdatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"every\",\"some\",\"none\",\"id\",\"email\",\"otpHash\",\"otpExpiresAt\",\"otpAttempts\",\"otpLastSentAt\",\"otpResendCount\",\"usedAt\",\"createdAt\",\"updatedAt\",\"fullName\",\"emailVerifiedAt\",\"completedAt\",\"bookingCode\",\"courtId\",\"bookingDate\",\"startTime\",\"endTime\",\"CourtBookingStatus\",\"previousStatus\",\"newStatus\",\"customerName\",\"customerPhone\",\"changedAt\",\"status\",\"DayOfWeek\",\"dayOfWeek\",\"isActive\",\"complexId\",\"sportId\",\"slotDurationMinutes\",\"basePrice\",\"slug\",\"tokenHash\",\"expiresAt\",\"acceptedAt\",\"revokedAt\",\"userId\",\"ComplexUserRole\",\"role\",\"complexName\",\"physicalAddress\",\"city\",\"state\",\"country\",\"complexSlug\",\"adminEmail\",\"planCode\",\"identifier\",\"value\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"idToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"emailVerified\",\"image\",\"phone\",\"courtId_bookingDate_startTime\",\"complexId_userId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
- graph: "zgaQAYACDwQAAPUDACAFAAD2AwAgBgAA9wMAIJoCAADzAwAwmwIAADcAEJwCAADzAwAwngIBALgDACG2AgEAAAABtwIBAAAAAb4CQAC7AwAhvwJAALsDACHdAgEAuAMAIfQCIADmAwAh9QIBAPQDACH2AgEA9AMAIQEAAAABACAMAwAAjAQAIJoCAACOBAAwmwIAAAMAEJwCAACOBAAwtgIBALgDACG-AkAAuwMAIb8CQAC7AwAh2AJAALsDACHbAgEAuAMAIfECAQC4AwAh8gIBAPQDACHzAgEA9AMAIQMDAACMBgAg8gIAAIYFACDzAgAAhgUAIAwDAACMBAAgmgIAAI4EADCbAgAAAwAQnAIAAI4EADC2AgEAAAABvgJAALsDACG_AkAAuwMAIdgCQAC7AwAh2wIBALgDACHxAgEAAAAB8gIBAPQDACHzAgEA9AMAIQMAAAADACABAAAEADACAAAFACARAwAAjAQAIJoCAACNBAAwmwIAAAcAEJwCAACNBAAwtgIBALgDACG-AkAAuwMAIb8CQAC7AwAh2wIBALgDACHoAgEAuAMAIekCAQC4AwAh6gIBAPQDACHrAgEA9AMAIewCAQD0AwAh7QJAAMoDACHuAkAAygMAIe8CAQD0AwAh8AIBAPQDACEIAwAAjAYAIOoCAACGBQAg6wIAAIYFACDsAgAAhgUAIO0CAACGBQAg7gIAAIYFACDvAgAAhgUAIPACAACGBQAgEQMAAIwEACCaAgAAjQQAMJsCAAAHABCcAgAAjQQAMLYCAQAAAAG-AkAAuwMAIb8CQAC7AwAh2wIBALgDACHoAgEAuAMAIekCAQC4AwAh6gIBAPQDACHrAgEA9AMAIewCAQD0AwAh7QJAAMoDACHuAkAAygMAIe8CAQD0AwAh8AIBAPQDACEDAAAABwAgAQAACAAwAgAACQAgCQMAAIwEACAKAACABAAgmgIAAIoEADCbAgAACwAQnAIAAIoEADC-AkAAuwMAIdICAQDIAwAh2wIBALgDACHdAgAAiwTdAiICAwAAjAYAIAoAAIUGACAKAwAAjAQAIAoAAIAEACCaAgAAigQAMJsCAAALABCcAgAAigQAML4CQAC7AwAh0gIBAMgDACHbAgEAuAMAId0CAACLBN0CIvgCAACJBAAgAwAAAAsAIAEAAAwAMAIAAA0AIAkGAAC8AwAgmgIAALcDADCbAgAADwAQnAIAALcDADCdAgEAuAMAIZ4CAQC4AwAhnwIQALkDACGgAgAAugMAIKECQAC7AwAhAQAAAA8AIBIIAACHBAAgCQAA9wMAIAsAAIgEACAMAADnAwAgmgIAAIYEADCbAgAAEQAQnAIAAIYEADC2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHeAgEAuAMAId8CAQD0AwAh4AIBAPQDACHhAgEA9AMAIeICAQD0AwAh4wIBALgDACHkAgEAuAMAIeUCAQD0AwAhCQgAAIoGACAJAACDBgAgCwAAiwYAIAwAALoFACDfAgAAhgUAIOACAACGBQAg4QIAAIYFACDiAgAAhgUAIOUCAACGBQAgEggAAIcEACAJAAD3AwAgCwAAiAQAIAwAAOcDACCaAgAAhgQAMJsCAAARABCcAgAAhgQAMLYCAQAAAAG-AkAAuwMAIb8CQAC7AwAh3gIBALgDACHfAgEA9AMAIeACAQD0AwAh4QIBAPQDACHiAgEA9AMAIeMCAQAAAAHkAgEAuAMAIeUCAQD0AwAhAwAAABEAIAEAABIAMAIAABMAIAEAAAARACADAAAACwAgAQAADAAwAgAADQAgDQoAAIAEACCaAgAAhQQAMJsCAAAXABCcAgAAhQQAMLYCAQDIAwAhtwIBALgDACG-AkAAuwMAIb8CQAC7AwAh0gIBAMgDACHXAgEAuAMAIdgCQAC7AwAh2QJAAMoDACHaAkAAygMAIQMKAACFBgAg2QIAAIYFACDaAgAAhgUAIA0KAACABAAgmgIAAIUEADCbAgAAFwAQnAIAAIUEADC2AgEAAAABtwIBALgDACG-AkAAuwMAIb8CQAC7AwAh0gIBAMgDACHXAgEAAAAB2AJAALsDACHZAkAAygMAIdoCQADKAwAhAwAAABcAIAEAABgAMAIAABkAIBAKAACABAAgDQAAgQQAIA8AAIIEACAQAACDBAAgEQAAhAQAIJoCAAD_AwAwmwIAABsAEJwCAAD_AwAwngIBALgDACG2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHSAgEAyAMAIdMCAQDIAwAh1AICAMkDACHVAhAAuQMAIQUKAACFBgAgDQAAhgYAIA8AAIcGACAQAACIBgAgEQAAiQYAIBAKAACABAAgDQAAgQQAIA8AAIIEACAQAACDBAAgEQAAhAQAIJoCAAD_AwAwmwIAABsAEJwCAAD_AwAwngIBALgDACG2AgEAAAABvgJAALsDACG_AkAAuwMAIdICAQDIAwAh0wIBAMgDACHUAgIAyQMAIdUCEAC5AwAhAwAAABsAIAEAABwAMAIAAB0AIAMAAAAbACABAAAcADACAAAdACABAAAAGwAgCg4AAPoDACCaAgAA_QMAMJsCAAAhABCcAgAA_QMAMLYCAQDIAwAhvgJAALsDACHEAgEAyAMAIcYCAQC4AwAhxwIBALgDACHQAgAA_gPQAiIBDgAAhAYAIAoOAAD6AwAgmgIAAP0DADCbAgAAIQAQnAIAAP0DADC2AgEAAAABvgJAALsDACHEAgEAyAMAIcYCAQC4AwAhxwIBALgDACHQAgAA_gPQAiIDAAAAIQAgAQAAIgAwAgAAIwAgDQ4AAPoDACCaAgAA-wMAMJsCAAAlABCcAgAA-wMAMJ8CEAC5AwAhtgIBAMgDACG-AkAAuwMAIb8CQAC7AwAhxAIBAMgDACHGAgEA9AMAIccCAQD0AwAh0AIAAPwD0AIj0QIgAOYDACEEDgAAhAYAIMYCAACGBQAgxwIAAIYFACDQAgAAhgUAIA0OAAD6AwAgmgIAAPsDADCbAgAAJQAQnAIAAPsDADCfAhAAuQMAIbYCAQAAAAG-AkAAuwMAIb8CQAC7AwAhxAIBAMgDACHGAgEA9AMAIccCAQD0AwAh0AIAAPwD0AIj0QIgAOYDACEDAAAAJQAgAQAAJgAwAgAAJwAgDw4AAPoDACCaAgAA-QMAMJsCAAApABCcAgAA-QMAMLYCAQDIAwAhvgJAALsDACG_AkAAuwMAIcMCAQC4AwAhxAIBAMgDACHFAkAAuwMAIcYCAQC4AwAhxwIBALgDACHLAgEAuAMAIcwCAQC4AwAhzgIAANMDyQIiAQ4AAIQGACAQDgAA-gMAIJoCAAD5AwAwmwIAACkAEJwCAAD5AwAwtgIBAAAAAb4CQAC7AwAhvwJAALsDACHDAgEAAAABxAIBAMgDACHFAkAAuwMAIcYCAQC4AwAhxwIBALgDACHLAgEAuAMAIcwCAQC4AwAhzgIAANMDyQIi9wIAAPgDACADAAAAKQAgAQAAKgAwAgAAKwAgAQAAACEAIAEAAAAlACABAAAAKQAgAQAAAAsAIAEAAAAXACABAAAAGwAgAQAAAAMAIAEAAAAHACABAAAACwAgAQAAAAEAIA8EAAD1AwAgBQAA9gMAIAYAAPcDACCaAgAA8wMAMJsCAAA3ABCcAgAA8wMAMJ4CAQC4AwAhtgIBALgDACG3AgEAuAMAIb4CQAC7AwAhvwJAALsDACHdAgEAuAMAIfQCIADmAwAh9QIBAPQDACH2AgEA9AMAIQUEAACBBgAgBQAAggYAIAYAAIMGACD1AgAAhgUAIPYCAACGBQAgAwAAADcAIAEAADgAMAIAAAEAIAMAAAA3ACABAAA4ADACAAABACADAAAANwAgAQAAOAAwAgAAAQAgDAQAAP4FACAFAAD_BQAgBgAAgAYAIJ4CAQAAAAG2AgEAAAABtwIBAAAAAb4CQAAAAAG_AkAAAAAB3QIBAAAAAfQCIAAAAAH1AgEAAAAB9gIBAAAAAQEXAAA8ACAJngIBAAAAAbYCAQAAAAG3AgEAAAABvgJAAAAAAb8CQAAAAAHdAgEAAAAB9AIgAAAAAfUCAQAAAAH2AgEAAAABARcAAD4AMAEXAAA-ADAMBAAA2gUAIAUAANsFACAGAADcBQAgngIBAJQEACG2AgEAlAQAIbcCAQCUBAAhvgJAAJYEACG_AkAAlgQAId0CAQCUBAAh9AIgAM8EACH1AgEAogQAIfYCAQCiBAAhAgAAAAEAIBcAAEEAIAmeAgEAlAQAIbYCAQCUBAAhtwIBAJQEACG-AkAAlgQAIb8CQACWBAAh3QIBAJQEACH0AiAAzwQAIfUCAQCiBAAh9gIBAKIEACECAAAANwAgFwAAQwAgAgAAADcAIBcAAEMAIAMAAAABACAeAAA8ACAfAABBACABAAAAAQAgAQAAADcAIAUHAADXBQAgJAAA2QUAICUAANgFACD1AgAAhgUAIPYCAACGBQAgDJoCAADyAwAwmwIAAEoAEJwCAADyAwAwngIBAKsDACG2AgEAqwMAIbcCAQCrAwAhvgJAAK4DACG_AkAArgMAId0CAQCrAwAh9AIgANgDACH1AgEA1wMAIfYCAQDXAwAhAwAAADcAIAEAAEkAMCMAAEoAIAMAAAA3ACABAAA4ADACAAABACABAAAABQAgAQAAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAkDAADWBQAgtgIBAAAAAb4CQAAAAAG_AkAAAAAB2AJAAAAAAdsCAQAAAAHxAgEAAAAB8gIBAAAAAfMCAQAAAAEBFwAAUgAgCLYCAQAAAAG-AkAAAAABvwJAAAAAAdgCQAAAAAHbAgEAAAAB8QIBAAAAAfICAQAAAAHzAgEAAAABARcAAFQAMAEXAABUADAJAwAA1QUAILYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIdgCQACWBAAh2wIBAJQEACHxAgEAlAQAIfICAQCiBAAh8wIBAKIEACECAAAABQAgFwAAVwAgCLYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIdgCQACWBAAh2wIBAJQEACHxAgEAlAQAIfICAQCiBAAh8wIBAKIEACECAAAAAwAgFwAAWQAgAgAAAAMAIBcAAFkAIAMAAAAFACAeAABSACAfAABXACABAAAABQAgAQAAAAMAIAUHAADSBQAgJAAA1AUAICUAANMFACDyAgAAhgUAIPMCAACGBQAgC5oCAADxAwAwmwIAAGAAEJwCAADxAwAwtgIBAKsDACG-AkAArgMAIb8CQACuAwAh2AJAAK4DACHbAgEAqwMAIfECAQCrAwAh8gIBANcDACHzAgEA1wMAIQMAAAADACABAABfADAjAABgACADAAAAAwAgAQAABAAwAgAABQAgAQAAAAkAIAEAAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACAOAwAA0QUAILYCAQAAAAG-AkAAAAABvwJAAAAAAdsCAQAAAAHoAgEAAAAB6QIBAAAAAeoCAQAAAAHrAgEAAAAB7AIBAAAAAe0CQAAAAAHuAkAAAAAB7wIBAAAAAfACAQAAAAEBFwAAaAAgDbYCAQAAAAG-AkAAAAABvwJAAAAAAdsCAQAAAAHoAgEAAAAB6QIBAAAAAeoCAQAAAAHrAgEAAAAB7AIBAAAAAe0CQAAAAAHuAkAAAAAB7wIBAAAAAfACAQAAAAEBFwAAagAwARcAAGoAMA4DAADQBQAgtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh2wIBAJQEACHoAgEAlAQAIekCAQCUBAAh6gIBAKIEACHrAgEAogQAIewCAQCiBAAh7QJAAO4EACHuAkAA7gQAIe8CAQCiBAAh8AIBAKIEACECAAAACQAgFwAAbQAgDbYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIdsCAQCUBAAh6AIBAJQEACHpAgEAlAQAIeoCAQCiBAAh6wIBAKIEACHsAgEAogQAIe0CQADuBAAh7gJAAO4EACHvAgEAogQAIfACAQCiBAAhAgAAAAcAIBcAAG8AIAIAAAAHACAXAABvACADAAAACQAgHgAAaAAgHwAAbQAgAQAAAAkAIAEAAAAHACAKBwAAzQUAICQAAM8FACAlAADOBQAg6gIAAIYFACDrAgAAhgUAIOwCAACGBQAg7QIAAIYFACDuAgAAhgUAIO8CAACGBQAg8AIAAIYFACAQmgIAAPADADCbAgAAdgAQnAIAAPADADC2AgEAqwMAIb4CQACuAwAhvwJAAK4DACHbAgEAqwMAIegCAQCrAwAh6QIBAKsDACHqAgEA1wMAIesCAQDXAwAh7AIBANcDACHtAkAAwAMAIe4CQADAAwAh7wIBANcDACHwAgEA1wMAIQMAAAAHACABAAB1ADAjAAB2ACADAAAABwAgAQAACAAwAgAACQAgCZoCAADvAwAwmwIAAHwAEJwCAADvAwAwtgIBAAAAAb4CQAC7AwAhvwJAALsDACHYAkAAuwMAIeYCAQC4AwAh5wIBALgDACEBAAAAeQAgAQAAAHkAIAmaAgAA7wMAMJsCAAB8ABCcAgAA7wMAMLYCAQC4AwAhvgJAALsDACG_AkAAuwMAIdgCQAC7AwAh5gIBALgDACHnAgEAuAMAIQADAAAAfAAgAQAAfQAwAgAAeQAgAwAAAHwAIAEAAH0AMAIAAHkAIAMAAAB8ACABAAB9ADACAAB5ACAGtgIBAAAAAb4CQAAAAAG_AkAAAAAB2AJAAAAAAeYCAQAAAAHnAgEAAAABARcAAIEBACAGtgIBAAAAAb4CQAAAAAG_AkAAAAAB2AJAAAAAAeYCAQAAAAHnAgEAAAABARcAAIMBADABFwAAgwEAMAa2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHYAkAAlgQAIeYCAQCUBAAh5wIBAJQEACECAAAAeQAgFwAAhgEAIAa2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHYAkAAlgQAIeYCAQCUBAAh5wIBAJQEACECAAAAfAAgFwAAiAEAIAIAAAB8ACAXAACIAQAgAwAAAHkAIB4AAIEBACAfAACGAQAgAQAAAHkAIAEAAAB8ACADBwAAygUAICQAAMwFACAlAADLBQAgCZoCAADuAwAwmwIAAI8BABCcAgAA7gMAMLYCAQCrAwAhvgJAAK4DACG_AkAArgMAIdgCQACuAwAh5gIBAKsDACHnAgEAqwMAIQMAAAB8ACABAACOAQAwIwAAjwEAIAMAAAB8ACABAAB9ADACAAB5ACABAAAAEwAgAQAAABMAIAMAAAARACABAAASADACAAATACADAAAAEQAgAQAAEgAwAgAAEwAgAwAAABEAIAEAABIAMAIAABMAIA8IAADJBQAgCQAAgQUAIAsAAIIFACAMAACDBQAgtgIBAAAAAb4CQAAAAAG_AkAAAAAB3gIBAAAAAd8CAQAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAHjAgEAAAAB5AIBAAAAAeUCAQAAAAEBFwAAlwEAIAu2AgEAAAABvgJAAAAAAb8CQAAAAAHeAgEAAAAB3wIBAAAAAeACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAAAAB5QIBAAAAAQEXAACZAQAwARcAAJkBADABAAAADwAgDwgAAMgFACAJAACkBAAgCwAApQQAIAwAAKYEACC2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHeAgEAlAQAId8CAQCiBAAh4AIBAKIEACHhAgEAogQAIeICAQCiBAAh4wIBAJQEACHkAgEAlAQAIeUCAQCiBAAhAgAAABMAIBcAAJ0BACALtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh3gIBAJQEACHfAgEAogQAIeACAQCiBAAh4QIBAKIEACHiAgEAogQAIeMCAQCUBAAh5AIBAJQEACHlAgEAogQAIQIAAAARACAXAACfAQAgAgAAABEAIBcAAJ8BACABAAAADwAgAwAAABMAIB4AAJcBACAfAACdAQAgAQAAABMAIAEAAAARACAIBwAAxQUAICQAAMcFACAlAADGBQAg3wIAAIYFACDgAgAAhgUAIOECAACGBQAg4gIAAIYFACDlAgAAhgUAIA6aAgAA7QMAMJsCAACnAQAQnAIAAO0DADC2AgEAvgMAIb4CQACuAwAhvwJAAK4DACHeAgEAqwMAId8CAQDXAwAh4AIBANcDACHhAgEA1wMAIeICAQDXAwAh4wIBAKsDACHkAgEAqwMAIeUCAQDXAwAhAwAAABEAIAEAAKYBADAjAACnAQAgAwAAABEAIAEAABIAMAIAABMAIAEAAAANACABAAAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgBgMAAP8EACAKAADEBQAgvgJAAAAAAdICAQAAAAHbAgEAAAAB3QIAAADdAgIBFwAArwEAIAS-AkAAAAAB0gIBAAAAAdsCAQAAAAHdAgAAAN0CAgEXAACxAQAwARcAALEBADAGAwAA_QQAIAoAAMMFACC-AkAAlgQAIdICAQCUBAAh2wIBAJQEACHdAgAA-wTdAiICAAAADQAgFwAAtAEAIAS-AkAAlgQAIdICAQCUBAAh2wIBAJQEACHdAgAA-wTdAiICAAAACwAgFwAAtgEAIAIAAAALACAXAAC2AQAgAwAAAA0AIB4AAK8BACAfAAC0AQAgAQAAAA0AIAEAAAALACADBwAAwAUAICQAAMIFACAlAADBBQAgB5oCAADpAwAwmwIAAL0BABCcAgAA6QMAML4CQACuAwAh0gIBAL4DACHbAgEAqwMAId0CAADqA90CIgMAAAALACABAAC8AQAwIwAAvQEAIAMAAAALACABAAAMADACAAANACABAAAAGQAgAQAAABkAIAMAAAAXACABAAAYADACAAAZACADAAAAFwAgAQAAGAAwAgAAGQAgAwAAABcAIAEAABgAMAIAABkAIAoKAAC_BQAgtgIBAAAAAbcCAQAAAAG-AkAAAAABvwJAAAAAAdICAQAAAAHXAgEAAAAB2AJAAAAAAdkCQAAAAAHaAkAAAAABARcAAMUBACAJtgIBAAAAAbcCAQAAAAG-AkAAAAABvwJAAAAAAdICAQAAAAHXAgEAAAAB2AJAAAAAAdkCQAAAAAHaAkAAAAABARcAAMcBADABFwAAxwEAMAoKAAC-BQAgtgIBAJQEACG3AgEAlAQAIb4CQACWBAAhvwJAAJYEACHSAgEAlAQAIdcCAQCUBAAh2AJAAJYEACHZAkAA7gQAIdoCQADuBAAhAgAAABkAIBcAAMoBACAJtgIBAJQEACG3AgEAlAQAIb4CQACWBAAhvwJAAJYEACHSAgEAlAQAIdcCAQCUBAAh2AJAAJYEACHZAkAA7gQAIdoCQADuBAAhAgAAABcAIBcAAMwBACACAAAAFwAgFwAAzAEAIAMAAAAZACAeAADFAQAgHwAAygEAIAEAAAAZACABAAAAFwAgBQcAALsFACAkAAC9BQAgJQAAvAUAINkCAACGBQAg2gIAAIYFACAMmgIAAOgDADCbAgAA0wEAEJwCAADoAwAwtgIBAL4DACG3AgEAqwMAIb4CQACuAwAhvwJAAK4DACHSAgEAvgMAIdcCAQCrAwAh2AJAAK4DACHZAkAAwAMAIdoCQADAAwAhAwAAABcAIAEAANIBADAjAADTAQAgAwAAABcAIAEAABgAMAIAABkAIAoMAADnAwAgmgIAAOUDADCbAgAA2QEAEJwCAADlAwAwngIBAAAAAbYCAQAAAAG-AkAAuwMAIb8CQAC7AwAh0QIgAOYDACHWAgEAAAABAQAAANYBACABAAAA1gEAIAoMAADnAwAgmgIAAOUDADCbAgAA2QEAEJwCAADlAwAwngIBALgDACG2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHRAiAA5gMAIdYCAQC4AwAhAQwAALoFACADAAAA2QEAIAEAANoBADACAADWAQAgAwAAANkBACABAADaAQAwAgAA1gEAIAMAAADZAQAgAQAA2gEAMAIAANYBACAHDAAAuQUAIJ4CAQAAAAG2AgEAAAABvgJAAAAAAb8CQAAAAAHRAiAAAAAB1gIBAAAAAQEXAADeAQAgBp4CAQAAAAG2AgEAAAABvgJAAAAAAb8CQAAAAAHRAiAAAAAB1gIBAAAAAQEXAADgAQAwARcAAOABADAHDAAArwUAIJ4CAQCUBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh0QIgAM8EACHWAgEAlAQAIQIAAADWAQAgFwAA4wEAIAaeAgEAlAQAIbYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIdECIADPBAAh1gIBAJQEACECAAAA2QEAIBcAAOUBACACAAAA2QEAIBcAAOUBACADAAAA1gEAIB4AAN4BACAfAADjAQAgAQAAANYBACABAAAA2QEAIAMHAACsBQAgJAAArgUAICUAAK0FACAJmgIAAOQDADCbAgAA7AEAEJwCAADkAwAwngIBAKsDACG2AgEAvgMAIb4CQACuAwAhvwJAAK4DACHRAiAA2AMAIdYCAQCrAwAhAwAAANkBACABAADrAQAwIwAA7AEAIAMAAADZAQAgAQAA2gEAMAIAANYBACABAAAAHQAgAQAAAB0AIAMAAAAbACABAAAcADACAAAdACADAAAAGwAgAQAAHAAwAgAAHQAgAwAAABsAIAEAABwAMAIAAB0AIA0KAACrBQAgDQAA4AQAIA8AAOEEACAQAADiBAAgEQAA4wQAIJ4CAQAAAAG2AgEAAAABvgJAAAAAAb8CQAAAAAHSAgEAAAAB0wIBAAAAAdQCAgAAAAHVAhAAAAABARcAAPQBACAIngIBAAAAAbYCAQAAAAG-AkAAAAABvwJAAAAAAdICAQAAAAHTAgEAAAAB1AICAAAAAdUCEAAAAAEBFwAA9gEAMAEXAAD2AQAwDQoAAKoFACANAACzBAAgDwAAtAQAIBAAALUEACARAAC2BAAgngIBAJQEACG2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHSAgEAlAQAIdMCAQCUBAAh1AICALEEACHVAhAAlQQAIQIAAAAdACAXAAD5AQAgCJ4CAQCUBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh0gIBAJQEACHTAgEAlAQAIdQCAgCxBAAh1QIQAJUEACECAAAAGwAgFwAA-wEAIAIAAAAbACAXAAD7AQAgAwAAAB0AIB4AAPQBACAfAAD5AQAgAQAAAB0AIAEAAAAbACAFBwAApQUAICQAAKgFACAlAACnBQAgpgEAAKYFACCnAQAAqQUAIAuaAgAA4wMAMJsCAACCAgAQnAIAAOMDADCeAgEAqwMAIbYCAQC-AwAhvgJAAK4DACG_AkAArgMAIdICAQC-AwAh0wIBAL4DACHUAgIAvwMAIdUCEACsAwAhAwAAABsAIAEAAIECADAjAACCAgAgAwAAABsAIAEAABwAMAIAAB0AIAEAAAAjACABAAAAIwAgAwAAACEAIAEAACIAMAIAACMAIAMAAAAhACABAAAiADACAAAjACADAAAAIQAgAQAAIgAwAgAAIwAgBw4AAKQFACC2AgEAAAABvgJAAAAAAcQCAQAAAAHGAgEAAAABxwIBAAAAAdACAAAA0AICARcAAIoCACAGtgIBAAAAAb4CQAAAAAHEAgEAAAABxgIBAAAAAccCAQAAAAHQAgAAANACAgEXAACMAgAwARcAAIwCADAHDgAAowUAILYCAQCUBAAhvgJAAJYEACHEAgEAlAQAIcYCAQCUBAAhxwIBAJQEACHQAgAA3ATQAiICAAAAIwAgFwAAjwIAIAa2AgEAlAQAIb4CQACWBAAhxAIBAJQEACHGAgEAlAQAIccCAQCUBAAh0AIAANwE0AIiAgAAACEAIBcAAJECACACAAAAIQAgFwAAkQIAIAMAAAAjACAeAACKAgAgHwAAjwIAIAEAAAAjACABAAAAIQAgAwcAAKAFACAkAACiBQAgJQAAoQUAIAmaAgAA3wMAMJsCAACYAgAQnAIAAN8DADC2AgEAvgMAIb4CQACuAwAhxAIBAL4DACHGAgEAqwMAIccCAQCrAwAh0AIAAOAD0AIiAwAAACEAIAEAAJcCADAjAACYAgAgAwAAACEAIAEAACIAMAIAACMAIAEAAAAnACABAAAAJwAgAwAAACUAIAEAACYAMAIAACcAIAMAAAAlACABAAAmADACAAAnACADAAAAJQAgAQAAJgAwAgAAJwAgCg4AAJ8FACCfAhAAAAABtgIBAAAAAb4CQAAAAAG_AkAAAAABxAIBAAAAAcYCAQAAAAHHAgEAAAAB0AIAAADQAgPRAiAAAAABARcAAKACACAJnwIQAAAAAbYCAQAAAAG-AkAAAAABvwJAAAAAAcQCAQAAAAHGAgEAAAABxwIBAAAAAdACAAAA0AID0QIgAAAAAQEXAACiAgAwARcAAKICADAKDgAAngUAIJ8CEACVBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAhxAIBAJQEACHGAgEAogQAIccCAQCiBAAh0AIAAM4E0AIj0QIgAM8EACECAAAAJwAgFwAApQIAIAmfAhAAlQQAIbYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIcQCAQCUBAAhxgIBAKIEACHHAgEAogQAIdACAADOBNACI9ECIADPBAAhAgAAACUAIBcAAKcCACACAAAAJQAgFwAApwIAIAMAAAAnACAeAACgAgAgHwAApQIAIAEAAAAnACABAAAAJQAgCAcAAJkFACAkAACcBQAgJQAAmwUAIKYBAACaBQAgpwEAAJ0FACDGAgAAhgUAIMcCAACGBQAg0AIAAIYFACAMmgIAANUDADCbAgAArgIAEJwCAADVAwAwnwIQAKwDACG2AgEAvgMAIb4CQACuAwAhvwJAAK4DACHEAgEAvgMAIcYCAQDXAwAhxwIBANcDACHQAgAA1gPQAiPRAiAA2AMAIQMAAAAlACABAACtAgAwIwAArgIAIAMAAAAlACABAAAmADACAAAnACABAAAAKwAgAQAAACsAIAMAAAApACABAAAqADACAAArACADAAAAKQAgAQAAKgAwAgAAKwAgAwAAACkAIAEAACoAMAIAACsAIAwOAACYBQAgtgIBAAAAAb4CQAAAAAG_AkAAAAABwwIBAAAAAcQCAQAAAAHFAkAAAAABxgIBAAAAAccCAQAAAAHLAgEAAAABzAIBAAAAAc4CAAAAyQICARcAALYCACALtgIBAAAAAb4CQAAAAAG_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_AkAAlgQAIcACAQCUBAAhwQJAAO4EACHCAkAA7gQAIQIAAADgAgAgFwAA7QIAIAy2AgEAlAQAIbcCAQCUBAAhuAIBAJQEACG5AkAAlgQAIboCAgCxBAAhuwJAAJYEACG8AgIAsQQAIb4CQACWBAAhvwJAAJYEACHAAgEAlAQAIcECQADuBAAhwgJAAO4EACECAAAA4wIAIBcAAO8CACACAAAA4wIAIBcAAO8CACADAAAA4AIAIB4AAOgCACAfAADtAgAgAQAAAOACACABAAAA4wIAIAcHAACMBQAgJAAAjwUAICUAAI4FACCmAQAAjQUAIKcBAACQBQAgwQIAAIYFACDCAgAAhgUAIA-aAgAAzAMAMJsCAAD2AgAQnAIAAMwDADC2AgEAvgMAIbcCAQCrAwAhuAIBAKsDACG5AkAArgMAIboCAgC_AwAhuwJAAK4DACG8AgIAvwMAIb4CQACuAwAhvwJAAK4DACHAAgEAqwMAIcECQADAAwAhwgJAAMADACEDAAAA4wIAIAEAAPUCADAjAAD2AgAgAwAAAOMCACABAADkAgAwAgAA4AIAIA2aAgAAxwMAMJsCAAD8AgAQnAIAAMcDADC2AgEAAAABtwIBALgDACG4AgEAuAMAIbkCQAC7AwAhugICAMkDACG7AkAAuwMAIbwCAgDJAwAhvQJAAMoDACG-AkAAuwMAIb8CQAC7AwAhAQAAAPkCACABAAAA-QIAIA2aAgAAxwMAMJsCAAD8AgAQnAIAAMcDADC2AgEAyAMAIbcCAQC4AwAhuAIBALgDACG5AkAAuwMAIboCAgDJAwAhuwJAALsDACG8AgIAyQMAIb0CQADKAwAhvgJAALsDACG_AkAAuwMAIQG9AgAAhgUAIAMAAAD8AgAgAQAA_QIAMAIAAPkCACADAAAA_AIAIAEAAP0CADACAAD5AgAgAwAAAPwCACABAAD9AgAwAgAA-QIAIAq2AgEAAAABtwIBAAAAAbgCAQAAAAG5AkAAAAABugICAAAAAbsCQAAAAAG8AgIAAAABvQJAAAAAAb4CQAAAAAG_AkAAAAABARcAAIEDACAKtgIBAAAAAbcCAQAAAAG4AgEAAAABuQJAAAAAAboCAgAAAAG7AkAAAAABvAICAAAAAb0CQAAAAAG-AkAAAAABvwJAAAAAAQEXAACDAwAwARcAAIMDADAKtgIBAJQEACG3AgEAlAQAIbgCAQCUBAAhuQJAAJYEACG6AgIAsQQAIbsCQACWBAAhvAICALEEACG9AkAA7gQAIb4CQACWBAAhvwJAAJYEACECAAAA-QIAIBcAAIYDACAKtgIBAJQEACG3AgEAlAQAIbgCAQCUBAAhuQJAAJYEACG6AgIAsQQAIbsCQACWBAAhvAICALEEACG9AkAA7gQAIb4CQACWBAAhvwJAAJYEACECAAAA_AIAIBcAAIgDACACAAAA_AIAIBcAAIgDACADAAAA-QIAIB4AAIEDACAfAACGAwAgAQAAAPkCACABAAAA_AIAIAYHAACHBQAgJAAAigUAICUAAIkFACCmAQAAiAUAIKcBAACLBQAgvQIAAIYFACANmgIAAL0DADCbAgAAjwMAEJwCAAC9AwAwtgIBAL4DACG3AgEAqwMAIbgCAQCrAwAhuQJAAK4DACG6AgIAvwMAIbsCQACuAwAhvAICAL8DACG9AkAAwAMAIb4CQACuAwAhvwJAAK4DACEDAAAA_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_AkAAuwMAIQiiAgEAAAABowIBAAAABKQCAQAAAASlAgEAAAABpgIBAAAAAacCAQAAAAGoAgEAAAABqQIBAMsDACEIogICAAAAAaMCAgAAAASkAgIAAAAEpQICAAAAAaYCAgAAAAGnAgIAAAABqAICAAAAAakCAgCwAwAhCKICQAAAAAGjAkAAAAAFpAJAAAAABaUCQAAAAAGmAkAAAAABpwJAAAAAAagCQAAAAAGpAkAAwwMAIQiiAgEAAAABowIBAAAABKQCAQAAAASlAgEAAAABpgIBAAAAAacCAQAAAAGoAgEAAAABqQIBAMsDACEPmgIAAMwDADCbAgAA9gIAEJwCAADMAwAwtgIBAL4DACG3AgEAqwMAIbgCAQCrAwAhuQJAAK4DACG6AgIAvwMAIbsCQACuAwAhvAICAL8DACG-AkAArgMAIb8CQACuAwAhwAIBAKsDACHBAkAAwAMAIcICQADAAwAhD5oCAADNAwAwmwIAAOMCABCcAgAAzQMAMLYCAQDIAwAhtwIBALgDACG4AgEAuAMAIbkCQAC7AwAhugICAMkDACG7AkAAuwMAIbwCAgDJAwAhvgJAALsDACG_AkAAuwMAIcACAQC4AwAhwQJAAMoDACHCAkAAygMAIQ6aAgAAzgMAMJsCAADdAgAQnAIAAM4DADC2AgEAvgMAIcMCAQCrAwAhxAIBAL4DACHFAkAArgMAIcYCAQCrAwAhxwIBAKsDACHJAgAAzwPJAiLKAgAAzwPJAiLLAgEAqwMAIcwCAQCrAwAhzQJAAK4DACEHBwAAsAMAICQAANEDACAlAADRAwAgogIAAADJAgKjAgAAAMkCCKQCAAAAyQIIqQIAANADyQIiBwcAALADACAkAADRAwAgJQAA0QMAIKICAAAAyQICowIAAADJAgikAgAAAMkCCKkCAADQA8kCIgSiAgAAAMkCAqMCAAAAyQIIpAIAAADJAgipAgAA0QPJAiIOmgIAANIDADCbAgAAygIAEJwCAADSAwAwtgIBAMgDACHDAgEAuAMAIcQCAQDIAwAhxQJAALsDACHGAgEAuAMAIccCAQC4AwAhyQIAANMDyQIiygIAANMDyQIiywIBALgDACHMAgEAuAMAIc0CQAC7AwAhBKICAAAAyQICowIAAADJAgikAgAAAMkCCKkCAADRA8kCIg6aAgAA1AMAMJsCAADEAgAQnAIAANQDADC2AgEAvgMAIb4CQACuAwAhvwJAAK4DACHDAgEAqwMAIcQCAQC-AwAhxQJAAK4DACHGAgEAqwMAIccCAQCrAwAhywIBAKsDACHMAgEAqwMAIc4CAADPA8kCIgyaAgAA1QMAMJsCAACuAgAQnAIAANUDADCfAhAArAMAIbYCAQC-AwAhvgJAAK4DACG_AkAArgMAIcQCAQC-AwAhxgIBANcDACHHAgEA1wMAIdACAADWA9ACI9ECIADYAwAhBwcAAMIDACAkAADeAwAgJQAA3gMAIKICAAAA0AIDowIAAADQAgmkAgAAANACCakCAADdA9ACIw4HAADCAwAgJAAA3AMAICUAANwDACCiAgEAAAABowIBAAAABaQCAQAAAAWlAgEAAAABpgIBAAAAAacCAQAAAAGoAgEAAAABqQIBANsDACGwAgEAAAABsQIBAAAAAbICAQAAAAEFBwAAsAMAICQAANoDACAlAADaAwAgogIgAAAAAakCIADZAwAhBQcAALADACAkAADaAwAgJQAA2gMAIKICIAAAAAGpAiAA2QMAIQKiAiAAAAABqQIgANoDACEOBwAAwgMAICQAANwDACAlAADcAwAgogIBAAAAAaMCAQAAAAWkAgEAAAAFpQIBAAAAAaYCAQAAAAGnAgEAAAABqAIBAAAAAakCAQDbAwAhsAIBAAAAAbECAQAAAAGyAgEAAAABC6ICAQAAAAGjAgEAAAAFpAIBAAAABaUCAQAAAAGmAgEAAAABpwIBAAAAAagCAQAAAAGpAgEA3AMAIbACAQAAAAGxAgEAAAABsgIBAAAAAQcHAADCAwAgJAAA3gMAICUAAN4DACCiAgAAANACA6MCAAAA0AIJpAIAAADQAgmpAgAA3QPQAiMEogIAAADQAgOjAgAAANACCaQCAAAA0AIJqQIAAN4D0AIjCZoCAADfAwAwmwIAAJgCABCcAgAA3wMAMLYCAQC-AwAhvgJAAK4DACHEAgEAvgMAIcYCAQCrAwAhxwIBAKsDACHQAgAA4APQAiIHBwAAsAMAICQAAOIDACAlAADiAwAgogIAAADQAgKjAgAAANACCKQCAAAA0AIIqQIAAOED0AIiBwcAALADACAkAADiAwAgJQAA4gMAIKICAAAA0AICowIAAADQAgikAgAAANACCKkCAADhA9ACIgSiAgAAANACAqMCAAAA0AIIpAIAAADQAgipAgAA4gPQAiILmgIAAOMDADCbAgAAggIAEJwCAADjAwAwngIBAKsDACG2AgEAvgMAIb4CQACuAwAhvwJAAK4DACHSAgEAvgMAIdMCAQC-AwAh1AICAL8DACHVAhAArAMAIQmaAgAA5AMAMJsCAADsAQAQnAIAAOQDADCeAgEAqwMAIbYCAQC-AwAhvgJAAK4DACG_AkAArgMAIdECIADYAwAh1gIBAKsDACEKDAAA5wMAIJoCAADlAwAwmwIAANkBABCcAgAA5QMAMJ4CAQC4AwAhtgIBAMgDACG-AkAAuwMAIb8CQAC7AwAh0QIgAOYDACHWAgEAuAMAIQKiAiAAAAABqQIgANoDACEDswIAABsAILQCAAAbACC1AgAAGwAgDJoCAADoAwAwmwIAANMBABCcAgAA6AMAMLYCAQC-AwAhtwIBAKsDACG-AkAArgMAIb8CQACuAwAh0gIBAL4DACHXAgEAqwMAIdgCQACuAwAh2QJAAMADACHaAkAAwAMAIQeaAgAA6QMAMJsCAAC9AQAQnAIAAOkDADC-AkAArgMAIdICAQC-AwAh2wIBAKsDACHdAgAA6gPdAiIHBwAAsAMAICQAAOwDACAlAADsAwAgogIAAADdAgKjAgAAAN0CCKQCAAAA3QIIqQIAAOsD3QIiBwcAALADACAkAADsAwAgJQAA7AMAIKICAAAA3QICowIAAADdAgikAgAAAN0CCKkCAADrA90CIgSiAgAAAN0CAqMCAAAA3QIIpAIAAADdAgipAgAA7APdAiIOmgIAAO0DADCbAgAApwEAEJwCAADtAwAwtgIBAL4DACG-AkAArgMAIb8CQACuAwAh3gIBAKsDACHfAgEA1wMAIeACAQDXAwAh4QIBANcDACHiAgEA1wMAIeMCAQCrAwAh5AIBAKsDACHlAgEA1wMAIQmaAgAA7gMAMJsCAACPAQAQnAIAAO4DADC2AgEAqwMAIb4CQACuAwAhvwJAAK4DACHYAkAArgMAIeYCAQCrAwAh5wIBAKsDACEJmgIAAO8DADCbAgAAfAAQnAIAAO8DADC2AgEAuAMAIb4CQAC7AwAhvwJAALsDACHYAkAAuwMAIeYCAQC4AwAh5wIBALgDACEQmgIAAPADADCbAgAAdgAQnAIAAPADADC2AgEAqwMAIb4CQACuAwAhvwJAAK4DACHbAgEAqwMAIegCAQCrAwAh6QIBAKsDACHqAgEA1wMAIesCAQDXAwAh7AIBANcDACHtAkAAwAMAIe4CQADAAwAh7wIBANcDACHwAgEA1wMAIQuaAgAA8QMAMJsCAABgABCcAgAA8QMAMLYCAQCrAwAhvgJAAK4DACG_AkAArgMAIdgCQACuAwAh2wIBAKsDACHxAgEAqwMAIfICAQDXAwAh8wIBANcDACEMmgIAAPIDADCbAgAASgAQnAIAAPIDADCeAgEAqwMAIbYCAQCrAwAhtwIBAKsDACG-AkAArgMAIb8CQACuAwAh3QIBAKsDACH0AiAA2AMAIfUCAQDXAwAh9gIBANcDACEPBAAA9QMAIAUAAPYDACAGAAD3AwAgmgIAAPMDADCbAgAANwAQnAIAAPMDADCeAgEAuAMAIbYCAQC4AwAhtwIBALgDACG-AkAAuwMAIb8CQAC7AwAh3QIBALgDACH0AiAA5gMAIfUCAQD0AwAh9gIBAPQDACELogIBAAAAAaMCAQAAAAWkAgEAAAAFpQIBAAAAAaYCAQAAAAGnAgEAAAABqAIBAAAAAakCAQDcAwAhsAIBAAAAAbECAQAAAAGyAgEAAAABA7MCAAADACC0AgAAAwAgtQIAAAMAIAOzAgAABwAgtAIAAAcAILUCAAAHACADswIAAAsAILQCAAALACC1AgAACwAgA8QCAQAAAAHFAkAAAAABxgIBAAAAAQ8OAAD6AwAgmgIAAPkDADCbAgAAKQAQnAIAAPkDADC2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHDAgEAuAMAIcQCAQDIAwAhxQJAALsDACHGAgEAuAMAIccCAQC4AwAhywIBALgDACHMAgEAuAMAIc4CAADTA8kCIhIKAACABAAgDQAAgQQAIA8AAIIEACAQAACDBAAgEQAAhAQAIJoCAAD_AwAwmwIAABsAEJwCAAD_AwAwngIBALgDACG2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHSAgEAyAMAIdMCAQDIAwAh1AICAMkDACHVAhAAuQMAIfkCAAAbACD6AgAAGwAgDQ4AAPoDACCaAgAA-wMAMJsCAAAlABCcAgAA-wMAMJ8CEAC5AwAhtgIBAMgDACG-AkAAuwMAIb8CQAC7AwAhxAIBAMgDACHGAgEA9AMAIccCAQD0AwAh0AIAAPwD0AIj0QIgAOYDACEEogIAAADQAgOjAgAAANACCaQCAAAA0AIJqQIAAN4D0AIjCg4AAPoDACCaAgAA_QMAMJsCAAAhABCcAgAA_QMAMLYCAQDIAwAhvgJAALsDACHEAgEAyAMAIcYCAQC4AwAhxwIBALgDACHQAgAA_gPQAiIEogIAAADQAgKjAgAAANACCKQCAAAA0AIIqQIAAOID0AIiEAoAAIAEACANAACBBAAgDwAAggQAIBAAAIMEACARAACEBAAgmgIAAP8DADCbAgAAGwAQnAIAAP8DADCeAgEAuAMAIbYCAQDIAwAhvgJAALsDACG_AkAAuwMAIdICAQDIAwAh0wIBAMgDACHUAgIAyQMAIdUCEAC5AwAhFAgAAIcEACAJAAD3AwAgCwAAiAQAIAwAAOcDACCaAgAAhgQAMJsCAAARABCcAgAAhgQAMLYCAQDIAwAhvgJAALsDACG_AkAAuwMAId4CAQC4AwAh3wIBAPQDACHgAgEA9AMAIeECAQD0AwAh4gIBAPQDACHjAgEAuAMAIeQCAQC4AwAh5QIBAPQDACH5AgAAEQAg-gIAABEAIAwMAADnAwAgmgIAAOUDADCbAgAA2QEAEJwCAADlAwAwngIBALgDACG2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHRAiAA5gMAIdYCAQC4AwAh-QIAANkBACD6AgAA2QEAIAOzAgAAIQAgtAIAACEAILUCAAAhACADswIAACUAILQCAAAlACC1AgAAJQAgA7MCAAApACC0AgAAKQAgtQIAACkAIA0KAACABAAgmgIAAIUEADCbAgAAFwAQnAIAAIUEADC2AgEAyAMAIbcCAQC4AwAhvgJAALsDACG_AkAAuwMAIdICAQDIAwAh1wIBALgDACHYAkAAuwMAIdkCQADKAwAh2gJAAMoDACESCAAAhwQAIAkAAPcDACALAACIBAAgDAAA5wMAIJoCAACGBAAwmwIAABEAEJwCAACGBAAwtgIBAMgDACG-AkAAuwMAIb8CQAC7AwAh3gIBALgDACHfAgEA9AMAIeACAQD0AwAh4QIBAPQDACHiAgEA9AMAIeMCAQC4AwAh5AIBALgDACHlAgEA9AMAIQsGAAC8AwAgmgIAALcDADCbAgAADwAQnAIAALcDADCdAgEAuAMAIZ4CAQC4AwAhnwIQALkDACGgAgAAugMAIKECQAC7AwAh-QIAAA8AIPoCAAAPACADswIAABcAILQCAAAXACC1AgAAFwAgAtICAQAAAAHbAgEAAAABCQMAAIwEACAKAACABAAgmgIAAIoEADCbAgAACwAQnAIAAIoEADC-AkAAuwMAIdICAQDIAwAh2wIBALgDACHdAgAAiwTdAiIEogIAAADdAgKjAgAAAN0CCKQCAAAA3QIIqQIAAOwD3QIiEQQAAPUDACAFAAD2AwAgBgAA9wMAIJoCAADzAwAwmwIAADcAEJwCAADzAwAwngIBALgDACG2AgEAuAMAIbcCAQC4AwAhvgJAALsDACG_AkAAuwMAId0CAQC4AwAh9AIgAOYDACH1AgEA9AMAIfYCAQD0AwAh-QIAADcAIPoCAAA3ACARAwAAjAQAIJoCAACNBAAwmwIAAAcAEJwCAACNBAAwtgIBALgDACG-AkAAuwMAIb8CQAC7AwAh2wIBALgDACHoAgEAuAMAIekCAQC4AwAh6gIBAPQDACHrAgEA9AMAIewCAQD0AwAh7QJAAMoDACHuAkAAygMAIe8CAQD0AwAh8AIBAPQDACEMAwAAjAQAIJoCAACOBAAwmwIAAAMAEJwCAACOBAAwtgIBALgDACG-AkAAuwMAIb8CQAC7AwAh2AJAALsDACHbAgEAuAMAIfECAQC4AwAh8gIBAPQDACHzAgEA9AMAIQAAAAAAAf4CAQAAAAEF_gIQAAAAAYQDEAAAAAGFAxAAAAABhgMQAAAAAYcDEAAAAAEB_gJAAAAAAQseAACYBAAwHwAAnQQAMPsCAACZBAAw_AIAAJoEADD9AgAAmwQAIP4CAACcBAAw_wIAAJwEADCAAwAAnAQAMIEDAACcBAAwggMAAJ4EADCDAwAAnwQAMA0JAACBBQAgCwAAggUAIAwAAIMFACC2AgEAAAABvgJAAAAAAb8CQAAAAAHeAgEAAAAB3wIBAAAAAeACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAAAABAgAAABMAIB4AAIAFACADAAAAEwAgHgAAgAUAIB8AAKMEACABFwAAzgYAMBIIAACHBAAgCQAA9wMAIAsAAIgEACAMAADnAwAgmgIAAIYEADCbAgAAEQAQnAIAAIYEADC2AgEAAAABvgJAALsDACG_AkAAuwMAId4CAQC4AwAh3wIBAPQDACHgAgEA9AMAIeECAQD0AwAh4gIBAPQDACHjAgEAAAAB5AIBALgDACHlAgEA9AMAIQIAAAATACAXAACjBAAgAgAAAKAEACAXAAChBAAgDpoCAACfBAAwmwIAAKAEABCcAgAAnwQAMLYCAQDIAwAhvgJAALsDACG_AkAAuwMAId4CAQC4AwAh3wIBAPQDACHgAgEA9AMAIeECAQD0AwAh4gIBAPQDACHjAgEAuAMAIeQCAQC4AwAh5QIBAPQDACEOmgIAAJ8EADCbAgAAoAQAEJwCAACfBAAwtgIBAMgDACG-AkAAuwMAIb8CQAC7AwAh3gIBALgDACHfAgEA9AMAIeACAQD0AwAh4QIBAPQDACHiAgEA9AMAIeMCAQC4AwAh5AIBALgDACHlAgEA9AMAIQq2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHeAgEAlAQAId8CAQCiBAAh4AIBAKIEACHhAgEAogQAIeICAQCiBAAh4wIBAJQEACHkAgEAlAQAIQH-AgEAAAABDQkAAKQEACALAAClBAAgDAAApgQAILYCAQCUBAAhvgJAAJYEACG_AkAAlgQAId4CAQCUBAAh3wIBAKIEACHgAgEAogQAIeECAQCiBAAh4gIBAKIEACHjAgEAlAQAIeQCAQCUBAAhCx4AAPEEADAfAAD2BAAw-wIAAPIEADD8AgAA8wQAMP0CAAD0BAAg_gIAAPUEADD_AgAA9QQAMIADAAD1BAAwgQMAAPUEADCCAwAA9wQAMIMDAAD4BAAwCx4AAOQEADAfAADpBAAw-wIAAOUEADD8AgAA5gQAMP0CAADnBAAg_gIAAOgEADD_AgAA6AQAMIADAADoBAAwgQMAAOgEADCCAwAA6gQAMIMDAADrBAAwCx4AAKcEADAfAACsBAAw-wIAAKgEADD8AgAAqQQAMP0CAACqBAAg_gIAAKsEADD_AgAAqwQAMIADAACrBAAwgQMAAKsEADCCAwAArQQAMIMDAACuBAAwCw0AAOAEACAPAADhBAAgEAAA4gQAIBEAAOMEACCeAgEAAAABtgIBAAAAAb4CQAAAAAG_AkAAAAAB0wIBAAAAAdQCAgAAAAHVAhAAAAABAgAAAB0AIB4AAN8EACADAAAAHQAgHgAA3wQAIB8AALIEACABFwAAzQYAMBAKAACABAAgDQAAgQQAIA8AAIIEACAQAACDBAAgEQAAhAQAIJoCAAD_AwAwmwIAABsAEJwCAAD_AwAwngIBALgDACG2AgEAAAABvgJAALsDACG_AkAAuwMAIdICAQDIAwAh0wIBAMgDACHUAgIAyQMAIdUCEAC5AwAhAgAAAB0AIBcAALIEACACAAAArwQAIBcAALAEACALmgIAAK4EADCbAgAArwQAEJwCAACuBAAwngIBALgDACG2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHSAgEAyAMAIdMCAQDIAwAh1AICAMkDACHVAhAAuQMAIQuaAgAArgQAMJsCAACvBAAQnAIAAK4EADCeAgEAuAMAIbYCAQDIAwAhvgJAALsDACG_AkAAuwMAIdICAQDIAwAh0wIBAMgDACHUAgIAyQMAIdUCEAC5AwAhB54CAQCUBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh0wIBAJQEACHUAgIAsQQAIdUCEACVBAAhBf4CAgAAAAGEAwIAAAABhQMCAAAAAYYDAgAAAAGHAwIAAAABCw0AALMEACAPAAC0BAAgEAAAtQQAIBEAALYEACCeAgEAlAQAIbYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIdMCAQCUBAAh1AICALEEACHVAhAAlQQAIQUeAADFBgAgHwAAywYAIPsCAADGBgAg_AIAAMoGACCBAwAA1gEAIAseAADSBAAwHwAA1wQAMPsCAADTBAAw_AIAANQEADD9AgAA1QQAIP4CAADWBAAw_wIAANYEADCAAwAA1gQAMIEDAADWBAAwggMAANgEADCDAwAA2QQAMAseAADEBAAwHwAAyQQAMPsCAADFBAAw_AIAAMYEADD9AgAAxwQAIP4CAADIBAAw_wIAAMgEADCAAwAAyAQAMIEDAADIBAAwggMAAMoEADCDAwAAywQAMAseAAC3BAAwHwAAvAQAMPsCAAC4BAAw_AIAALkEADD9AgAAugQAIP4CAAC7BAAw_wIAALsEADCAAwAAuwQAMIEDAAC7BAAwggMAAL0EADCDAwAAvgQAMAq2AgEAAAABvgJAAAAAAb8CQAAAAAHDAgEAAAABxQJAAAAAAcYCAQAAAAHHAgEAAAABywIBAAAAAcwCAQAAAAHOAgAAAMkCAgIAAAArACAeAADDBAAgAwAAACsAIB4AAMMEACAfAADCBAAgARcAAMkGADAQDgAA-gMAIJoCAAD5AwAwmwIAACkAEJwCAAD5AwAwtgIBAAAAAb4CQAC7AwAhvwJAALsDACHDAgEAAAABxAIBAMgDACHFAkAAuwMAIcYCAQC4AwAhxwIBALgDACHLAgEAuAMAIcwCAQC4AwAhzgIAANMDyQIi9wIAAPgDACACAAAAKwAgFwAAwgQAIAIAAAC_BAAgFwAAwAQAIA6aAgAAvgQAMJsCAAC_BAAQnAIAAL4EADC2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHDAgEAuAMAIcQCAQDIAwAhxQJAALsDACHGAgEAuAMAIccCAQC4AwAhywIBALgDACHMAgEAuAMAIc4CAADTA8kCIg6aAgAAvgQAMJsCAAC_BAAQnAIAAL4EADC2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHDAgEAuAMAIcQCAQDIAwAhxQJAALsDACHGAgEAuAMAIccCAQC4AwAhywIBALgDACHMAgEAuAMAIc4CAADTA8kCIgq2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHDAgEAlAQAIcUCQACWBAAhxgIBAJQEACHHAgEAlAQAIcsCAQCUBAAhzAIBAJQEACHOAgAAwQTJAiIB_gIAAADJAgIKtgIBAJQEACG-AkAAlgQAIb8CQACWBAAhwwIBAJQEACHFAkAAlgQAIcYCAQCUBAAhxwIBAJQEACHLAgEAlAQAIcwCAQCUBAAhzgIAAMEEyQIiCrYCAQAAAAG-AkAAAAABvwJAAAAAAcMCAQAAAAHFAkAAAAABxgIBAAAAAccCAQAAAAHLAgEAAAABzAIBAAAAAc4CAAAAyQICCJ8CEAAAAAG2AgEAAAABvgJAAAAAAb8CQAAAAAHGAgEAAAABxwIBAAAAAdACAAAA0AID0QIgAAAAAQIAAAAnACAeAADRBAAgAwAAACcAIB4AANEEACAfAADQBAAgARcAAMgGADANDgAA-gMAIJoCAAD7AwAwmwIAACUAEJwCAAD7AwAwnwIQALkDACG2AgEAAAABvgJAALsDACG_AkAAuwMAIcQCAQDIAwAhxgIBAPQDACHHAgEA9AMAIdACAAD8A9ACI9ECIADmAwAhAgAAACcAIBcAANAEACACAAAAzAQAIBcAAM0EACAMmgIAAMsEADCbAgAAzAQAEJwCAADLBAAwnwIQALkDACG2AgEAyAMAIb4CQAC7AwAhvwJAALsDACHEAgEAyAMAIcYCAQD0AwAhxwIBAPQDACHQAgAA_APQAiPRAiAA5gMAIQyaAgAAywQAMJsCAADMBAAQnAIAAMsEADCfAhAAuQMAIbYCAQDIAwAhvgJAALsDACG_AkAAuwMAIcQCAQDIAwAhxgIBAPQDACHHAgEA9AMAIdACAAD8A9ACI9ECIADmAwAhCJ8CEACVBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAhxgIBAKIEACHHAgEAogQAIdACAADOBNACI9ECIADPBAAhAf4CAAAA0AIDAf4CIAAAAAEInwIQAJUEACG2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHGAgEAogQAIccCAQCiBAAh0AIAAM4E0AIj0QIgAM8EACEInwIQAAAAAbYCAQAAAAG-AkAAAAABvwJAAAAAAcYCAQAAAAHHAgEAAAAB0AIAAADQAgPRAiAAAAABBbYCAQAAAAG-AkAAAAABxgIBAAAAAccCAQAAAAHQAgAAANACAgIAAAAjACAeAADeBAAgAwAAACMAIB4AAN4EACAfAADdBAAgARcAAMcGADAKDgAA-gMAIJoCAAD9AwAwmwIAACEAEJwCAAD9AwAwtgIBAAAAAb4CQAC7AwAhxAIBAMgDACHGAgEAuAMAIccCAQC4AwAh0AIAAP4D0AIiAgAAACMAIBcAAN0EACACAAAA2gQAIBcAANsEACAJmgIAANkEADCbAgAA2gQAEJwCAADZBAAwtgIBAMgDACG-AkAAuwMAIcQCAQDIAwAhxgIBALgDACHHAgEAuAMAIdACAAD-A9ACIgmaAgAA2QQAMJsCAADaBAAQnAIAANkEADC2AgEAyAMAIb4CQAC7AwAhxAIBAMgDACHGAgEAuAMAIccCAQC4AwAh0AIAAP4D0AIiBbYCAQCUBAAhvgJAAJYEACHGAgEAlAQAIccCAQCUBAAh0AIAANwE0AIiAf4CAAAA0AICBbYCAQCUBAAhvgJAAJYEACHGAgEAlAQAIccCAQCUBAAh0AIAANwE0AIiBbYCAQAAAAG-AkAAAAABxgIBAAAAAccCAQAAAAHQAgAAANACAgsNAADgBAAgDwAA4QQAIBAAAOIEACARAADjBAAgngIBAAAAAbYCAQAAAAG-AkAAAAABvwJAAAAAAdMCAQAAAAHUAgIAAAAB1QIQAAAAAQMeAADFBgAg-wIAAMYGACCBAwAA1gEAIAQeAADSBAAw-wIAANMEADD9AgAA1QQAIIEDAADWBAAwBB4AAMQEADD7AgAAxQQAMP0CAADHBAAggQMAAMgEADAEHgAAtwQAMPsCAAC4BAAw_QIAALoEACCBAwAAuwQAMAi2AgEAAAABtwIBAAAAAb4CQAAAAAG_AkAAAAAB1wIBAAAAAdgCQAAAAAHZAkAAAAAB2gJAAAAAAQIAAAAZACAeAADwBAAgAwAAABkAIB4AAPAEACAfAADvBAAgARcAAMQGADANCgAAgAQAIJoCAACFBAAwmwIAABcAEJwCAACFBAAwtgIBAAAAAbcCAQC4AwAhvgJAALsDACG_AkAAuwMAIdICAQDIAwAh1wIBAAAAAdgCQAC7AwAh2QJAAMoDACHaAkAAygMAIQIAAAAZACAXAADvBAAgAgAAAOwEACAXAADtBAAgDJoCAADrBAAwmwIAAOwEABCcAgAA6wQAMLYCAQDIAwAhtwIBALgDACG-AkAAuwMAIb8CQAC7AwAh0gIBAMgDACHXAgEAuAMAIdgCQAC7AwAh2QJAAMoDACHaAkAAygMAIQyaAgAA6wQAMJsCAADsBAAQnAIAAOsEADC2AgEAyAMAIbcCAQC4AwAhvgJAALsDACG_AkAAuwMAIdICAQDIAwAh1wIBALgDACHYAkAAuwMAIdkCQADKAwAh2gJAAMoDACEItgIBAJQEACG3AgEAlAQAIb4CQACWBAAhvwJAAJYEACHXAgEAlAQAIdgCQACWBAAh2QJAAO4EACHaAkAA7gQAIQH-AkAAAAABCLYCAQCUBAAhtwIBAJQEACG-AkAAlgQAIb8CQACWBAAh1wIBAJQEACHYAkAAlgQAIdkCQADuBAAh2gJAAO4EACEItgIBAAAAAbcCAQAAAAG-AkAAAAABvwJAAAAAAdcCAQAAAAHYAkAAAAAB2QJAAAAAAdoCQAAAAAEEAwAA_wQAIL4CQAAAAAHbAgEAAAAB3QIAAADdAgICAAAADQAgHgAA_gQAIAMAAAANACAeAAD-BAAgHwAA_AQAIAEXAADDBgAwCgMAAIwEACAKAACABAAgmgIAAIoEADCbAgAACwAQnAIAAIoEADC-AkAAuwMAIdICAQDIAwAh2wIBALgDACHdAgAAiwTdAiL4AgAAiQQAIAIAAAANACAXAAD8BAAgAgAAAPkEACAXAAD6BAAgB5oCAAD4BAAwmwIAAPkEABCcAgAA-AQAML4CQAC7AwAh0gIBAMgDACHbAgEAuAMAId0CAACLBN0CIgeaAgAA-AQAMJsCAAD5BAAQnAIAAPgEADC-AkAAuwMAIdICAQDIAwAh2wIBALgDACHdAgAAiwTdAiIDvgJAAJYEACHbAgEAlAQAId0CAAD7BN0CIgH-AgAAAN0CAgQDAAD9BAAgvgJAAJYEACHbAgEAlAQAId0CAAD7BN0CIgUeAAC-BgAgHwAAwQYAIPsCAAC_BgAg_AIAAMAGACCBAwAAAQAgBAMAAP8EACC-AkAAAAAB2wIBAAAAAd0CAAAA3QICAx4AAL4GACD7AgAAvwYAIIEDAAABACANCQAAgQUAIAsAAIIFACAMAACDBQAgtgIBAAAAAb4CQAAAAAG_AkAAAAAB3gIBAAAAAd8CAQAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAHjAgEAAAAB5AIBAAAAAQQeAADxBAAw-wIAAPIEADD9AgAA9AQAIIEDAAD1BAAwBB4AAOQEADD7AgAA5QQAMP0CAADnBAAggQMAAOgEADAEHgAApwQAMPsCAACoBAAw_QIAAKoEACCBAwAAqwQAMAQeAACYBAAw-wIAAJkEADD9AgAAmwQAIIEDAACcBAAwAAAAAAAAAAAAAAAAAAAAAAAABR4AALkGACAfAAC8BgAg-wIAALoGACD8AgAAuwYAIIEDAAAdACADHgAAuQYAIPsCAAC6BgAggQMAAB0AIAAAAAAABR4AALQGACAfAAC3BgAg-wIAALUGACD8AgAAtgYAIIEDAAAdACADHgAAtAYAIPsCAAC1BgAggQMAAB0AIAAAAAUeAACvBgAgHwAAsgYAIPsCAACwBgAg_AIAALEGACCBAwAAHQAgAx4AAK8GACD7AgAAsAYAIIEDAAAdACAAAAAAAAUeAACqBgAgHwAArQYAIPsCAACrBgAg_AIAAKwGACCBAwAAEwAgAx4AAKoGACD7AgAAqwYAIIEDAAATACAAAAALHgAAsAUAMB8AALQFADD7AgAAsQUAMPwCAACyBQAw_QIAALMFACD-AgAAqwQAMP8CAACrBAAwgAMAAKsEADCBAwAAqwQAMIIDAAC1BQAwgwMAAK4EADALCgAAqwUAIA8AAOEEACAQAADiBAAgEQAA4wQAIJ4CAQAAAAG2AgEAAAABvgJAAAAAAb8CQAAAAAHSAgEAAAAB1AICAAAAAdUCEAAAAAECAAAAHQAgHgAAuAUAIAMAAAAdACAeAAC4BQAgHwAAtwUAIAEXAACpBgAwAgAAAB0AIBcAALcFACACAAAArwQAIBcAALYFACAHngIBAJQEACG2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHSAgEAlAQAIdQCAgCxBAAh1QIQAJUEACELCgAAqgUAIA8AALQEACAQAAC1BAAgEQAAtgQAIJ4CAQCUBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh0gIBAJQEACHUAgIAsQQAIdUCEACVBAAhCwoAAKsFACAPAADhBAAgEAAA4gQAIBEAAOMEACCeAgEAAAABtgIBAAAAAb4CQAAAAAG_AkAAAAAB0gIBAAAAAdQCAgAAAAHVAhAAAAABBB4AALAFADD7AgAAsQUAMP0CAACzBQAggQMAAKsEADAAAAAABR4AAKQGACAfAACnBgAg-wIAAKUGACD8AgAApgYAIIEDAAATACADHgAApAYAIPsCAAClBgAggQMAABMAIAAAAAUeAACfBgAgHwAAogYAIPsCAACgBgAg_AIAAKEGACCBAwAAEwAgAx4AAJ8GACD7AgAAoAYAIIEDAAATACAAAAAHHgAAmgYAIB8AAJ0GACD7AgAAmwYAIPwCAACcBgAg_wIAAA8AIIADAAAPACCBAwAAkgMAIAMeAACaBgAg-wIAAJsGACCBAwAAkgMAIAAAAAAAAAUeAACVBgAgHwAAmAYAIPsCAACWBgAg_AIAAJcGACCBAwAAAQAgAx4AAJUGACD7AgAAlgYAIIEDAAABACAAAAAFHgAAkAYAIB8AAJMGACD7AgAAkQYAIPwCAACSBgAggQMAAAEAIAMeAACQBgAg-wIAAJEGACCBAwAAAQAgAAAACx4AAPIFADAfAAD3BQAw-wIAAPMFADD8AgAA9AUAMP0CAAD1BQAg_gIAAPYFADD_AgAA9gUAMIADAAD2BQAwgQMAAPYFADCCAwAA-AUAMIMDAAD5BQAwCx4AAOYFADAfAADrBQAw-wIAAOcFADD8AgAA6AUAMP0CAADpBQAg_gIAAOoFADD_AgAA6gUAMIADAADqBQAwgQMAAOoFADCCAwAA7AUAMIMDAADtBQAwCx4AAN0FADAfAADhBQAw-wIAAN4FADD8AgAA3wUAMP0CAADgBQAg_gIAAPUEADD_AgAA9QQAMIADAAD1BAAwgQMAAPUEADCCAwAA4gUAMIMDAAD4BAAwBAoAAMQFACC-AkAAAAAB0gIBAAAAAd0CAAAA3QICAgAAAA0AIB4AAOUFACADAAAADQAgHgAA5QUAIB8AAOQFACABFwAAjwYAMAIAAAANACAXAADkBQAgAgAAAPkEACAXAADjBQAgA74CQACWBAAh0gIBAJQEACHdAgAA-wTdAiIECgAAwwUAIL4CQACWBAAh0gIBAJQEACHdAgAA-wTdAiIECgAAxAUAIL4CQAAAAAHSAgEAAAAB3QIAAADdAgIMtgIBAAAAAb4CQAAAAAG_AkAAAAAB6AIBAAAAAekCAQAAAAHqAgEAAAAB6wIBAAAAAewCAQAAAAHtAkAAAAAB7gJAAAAAAe8CAQAAAAHwAgEAAAABAgAAAAkAIB4AAPEFACADAAAACQAgHgAA8QUAIB8AAPAFACABFwAAjgYAMBEDAACMBAAgmgIAAI0EADCbAgAABwAQnAIAAI0EADC2AgEAAAABvgJAALsDACG_AkAAuwMAIdsCAQC4AwAh6AIBALgDACHpAgEAuAMAIeoCAQD0AwAh6wIBAPQDACHsAgEA9AMAIe0CQADKAwAh7gJAAMoDACHvAgEA9AMAIfACAQD0AwAhAgAAAAkAIBcAAPAFACACAAAA7gUAIBcAAO8FACAQmgIAAO0FADCbAgAA7gUAEJwCAADtBQAwtgIBALgDACG-AkAAuwMAIb8CQAC7AwAh2wIBALgDACHoAgEAuAMAIekCAQC4AwAh6gIBAPQDACHrAgEA9AMAIewCAQD0AwAh7QJAAMoDACHuAkAAygMAIe8CAQD0AwAh8AIBAPQDACEQmgIAAO0FADCbAgAA7gUAEJwCAADtBQAwtgIBALgDACG-AkAAuwMAIb8CQAC7AwAh2wIBALgDACHoAgEAuAMAIekCAQC4AwAh6gIBAPQDACHrAgEA9AMAIewCAQD0AwAh7QJAAMoDACHuAkAAygMAIe8CAQD0AwAh8AIBAPQDACEMtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh6AIBAJQEACHpAgEAlAQAIeoCAQCiBAAh6wIBAKIEACHsAgEAogQAIe0CQADuBAAh7gJAAO4EACHvAgEAogQAIfACAQCiBAAhDLYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIegCAQCUBAAh6QIBAJQEACHqAgEAogQAIesCAQCiBAAh7AIBAKIEACHtAkAA7gQAIe4CQADuBAAh7wIBAKIEACHwAgEAogQAIQy2AgEAAAABvgJAAAAAAb8CQAAAAAHoAgEAAAAB6QIBAAAAAeoCAQAAAAHrAgEAAAAB7AIBAAAAAe0CQAAAAAHuAkAAAAAB7wIBAAAAAfACAQAAAAEHtgIBAAAAAb4CQAAAAAG_AkAAAAAB2AJAAAAAAfECAQAAAAHyAgEAAAAB8wIBAAAAAQIAAAAFACAeAAD9BQAgAwAAAAUAIB4AAP0FACAfAAD8BQAgARcAAI0GADAMAwAAjAQAIJoCAACOBAAwmwIAAAMAEJwCAACOBAAwtgIBAAAAAb4CQAC7AwAhvwJAALsDACHYAkAAuwMAIdsCAQC4AwAh8QIBAAAAAfICAQD0AwAh8wIBAPQDACECAAAABQAgFwAA_AUAIAIAAAD6BQAgFwAA-wUAIAuaAgAA-QUAMJsCAAD6BQAQnAIAAPkFADC2AgEAuAMAIb4CQAC7AwAhvwJAALsDACHYAkAAuwMAIdsCAQC4AwAh8QIBALgDACHyAgEA9AMAIfMCAQD0AwAhC5oCAAD5BQAwmwIAAPoFABCcAgAA-QUAMLYCAQC4AwAhvgJAALsDACG_AkAAuwMAIdgCQAC7AwAh2wIBALgDACHxAgEAuAMAIfICAQD0AwAh8wIBAPQDACEHtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh2AJAAJYEACHxAgEAlAQAIfICAQCiBAAh8wIBAKIEACEHtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh2AJAAJYEACHxAgEAlAQAIfICAQCiBAAh8wIBAKIEACEHtgIBAAAAAb4CQAAAAAG_AkAAAAAB2AJAAAAAAfECAQAAAAHyAgEAAAAB8wIBAAAAAQQeAADyBQAw-wIAAPMFADD9AgAA9QUAIIEDAAD2BQAwBB4AAOYFADD7AgAA5wUAMP0CAADpBQAggQMAAOoFADAEHgAA3QUAMPsCAADeBQAw_QIAAOAFACCBAwAA9QQAMAAAAAUKAACFBgAgDQAAhgYAIA8AAIcGACAQAACIBgAgEQAAiQYAIAkIAACKBgAgCQAAgwYAIAsAAIsGACAMAAC6BQAg3wIAAIYFACDgAgAAhgUAIOECAACGBQAg4gIAAIYFACDlAgAAhgUAIAEMAAC6BQAgAAAAAQYAAIUFACAABQQAAIEGACAFAACCBgAgBgAAgwYAIPUCAACGBQAg9gIAAIYFACAHtgIBAAAAAb4CQAAAAAG_AkAAAAAB2AJAAAAAAfECAQAAAAHyAgEAAAAB8wIBAAAAAQy2AgEAAAABvgJAAAAAAb8CQAAAAAHoAgEAAAAB6QIBAAAAAeoCAQAAAAHrAgEAAAAB7AIBAAAAAe0CQAAAAAHuAkAAAAAB7wIBAAAAAfACAQAAAAEDvgJAAAAAAdICAQAAAAHdAgAAAN0CAgsFAAD_BQAgBgAAgAYAIJ4CAQAAAAG2AgEAAAABtwIBAAAAAb4CQAAAAAG_AkAAAAAB3QIBAAAAAfQCIAAAAAH1AgEAAAAB9gIBAAAAAQIAAAABACAeAACQBgAgAwAAADcAIB4AAJAGACAfAACUBgAgDQAAADcAIAUAANsFACAGAADcBQAgFwAAlAYAIJ4CAQCUBAAhtgIBAJQEACG3AgEAlAQAIb4CQACWBAAhvwJAAJYEACHdAgEAlAQAIfQCIADPBAAh9QIBAKIEACH2AgEAogQAIQsFAADbBQAgBgAA3AUAIJ4CAQCUBAAhtgIBAJQEACG3AgEAlAQAIb4CQACWBAAhvwJAAJYEACHdAgEAlAQAIfQCIADPBAAh9QIBAKIEACH2AgEAogQAIQsEAAD-BQAgBgAAgAYAIJ4CAQAAAAG2AgEAAAABtwIBAAAAAb4CQAAAAAG_AkAAAAAB3QIBAAAAAfQCIAAAAAH1AgEAAAAB9gIBAAAAAQIAAAABACAeAACVBgAgAwAAADcAIB4AAJUGACAfAACZBgAgDQAAADcAIAQAANoFACAGAADcBQAgFwAAmQYAIJ4CAQCUBAAhtgIBAJQEACG3AgEAlAQAIb4CQACWBAAhvwJAAJYEACHdAgEAlAQAIfQCIADPBAAh9QIBAKIEACH2AgEAogQAIQsEAADaBQAgBgAA3AUAIJ4CAQCUBAAhtgIBAJQEACG3AgEAlAQAIb4CQACWBAAhvwJAAJYEACHdAgEAlAQAIfQCIADPBAAh9QIBAKIEACH2AgEAogQAIQWdAgEAAAABngIBAAAAAZ8CEAAAAAGgAoAAAAABoQJAAAAAAQIAAACSAwAgHgAAmgYAIAMAAAAPACAeAACaBgAgHwAAngYAIAcAAAAPACAXAACeBgAgnQIBAJQEACGeAgEAlAQAIZ8CEACVBAAhoAKAAAAAAaECQACWBAAhBZ0CAQCUBAAhngIBAJQEACGfAhAAlQQAIaACgAAAAAGhAkAAlgQAIQ4IAADJBQAgCwAAggUAIAwAAIMFACC2AgEAAAABvgJAAAAAAb8CQAAAAAHeAgEAAAAB3wIBAAAAAeACAQAAAAHhAgEAAAAB4gIBAAAAAeMCAQAAAAHkAgEAAAAB5QIBAAAAAQIAAAATACAeAACfBgAgAwAAABEAIB4AAJ8GACAfAACjBgAgEAAAABEAIAgAAMgFACALAAClBAAgDAAApgQAIBcAAKMGACC2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHeAgEAlAQAId8CAQCiBAAh4AIBAKIEACHhAgEAogQAIeICAQCiBAAh4wIBAJQEACHkAgEAlAQAIeUCAQCiBAAhDggAAMgFACALAAClBAAgDAAApgQAILYCAQCUBAAhvgJAAJYEACG_AkAAlgQAId4CAQCUBAAh3wIBAKIEACHgAgEAogQAIeECAQCiBAAh4gIBAKIEACHjAgEAlAQAIeQCAQCUBAAh5QIBAKIEACEOCAAAyQUAIAkAAIEFACAMAACDBQAgtgIBAAAAAb4CQAAAAAG_AkAAAAAB3gIBAAAAAd8CAQAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAHjAgEAAAAB5AIBAAAAAeUCAQAAAAECAAAAEwAgHgAApAYAIAMAAAARACAeAACkBgAgHwAAqAYAIBAAAAARACAIAADIBQAgCQAApAQAIAwAAKYEACAXAACoBgAgtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh3gIBAJQEACHfAgEAogQAIeACAQCiBAAh4QIBAKIEACHiAgEAogQAIeMCAQCUBAAh5AIBAJQEACHlAgEAogQAIQ4IAADIBQAgCQAApAQAIAwAAKYEACC2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHeAgEAlAQAId8CAQCiBAAh4AIBAKIEACHhAgEAogQAIeICAQCiBAAh4wIBAJQEACHkAgEAlAQAIeUCAQCiBAAhB54CAQAAAAG2AgEAAAABvgJAAAAAAb8CQAAAAAHSAgEAAAAB1AICAAAAAdUCEAAAAAEOCAAAyQUAIAkAAIEFACALAACCBQAgtgIBAAAAAb4CQAAAAAG_AkAAAAAB3gIBAAAAAd8CAQAAAAHgAgEAAAAB4QIBAAAAAeICAQAAAAHjAgEAAAAB5AIBAAAAAeUCAQAAAAECAAAAEwAgHgAAqgYAIAMAAAARACAeAACqBgAgHwAArgYAIBAAAAARACAIAADIBQAgCQAApAQAIAsAAKUEACAXAACuBgAgtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh3gIBAJQEACHfAgEAogQAIeACAQCiBAAh4QIBAKIEACHiAgEAogQAIeMCAQCUBAAh5AIBAJQEACHlAgEAogQAIQ4IAADIBQAgCQAApAQAIAsAAKUEACC2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHeAgEAlAQAId8CAQCiBAAh4AIBAKIEACHhAgEAogQAIeICAQCiBAAh4wIBAJQEACHkAgEAlAQAIeUCAQCiBAAhDAoAAKsFACANAADgBAAgEAAA4gQAIBEAAOMEACCeAgEAAAABtgIBAAAAAb4CQAAAAAG_AkAAAAAB0gIBAAAAAdMCAQAAAAHUAgIAAAAB1QIQAAAAAQIAAAAdACAeAACvBgAgAwAAABsAIB4AAK8GACAfAACzBgAgDgAAABsAIAoAAKoFACANAACzBAAgEAAAtQQAIBEAALYEACAXAACzBgAgngIBAJQEACG2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHSAgEAlAQAIdMCAQCUBAAh1AICALEEACHVAhAAlQQAIQwKAACqBQAgDQAAswQAIBAAALUEACARAAC2BAAgngIBAJQEACG2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHSAgEAlAQAIdMCAQCUBAAh1AICALEEACHVAhAAlQQAIQwKAACrBQAgDQAA4AQAIA8AAOEEACARAADjBAAgngIBAAAAAbYCAQAAAAG-AkAAAAABvwJAAAAAAdICAQAAAAHTAgEAAAAB1AICAAAAAdUCEAAAAAECAAAAHQAgHgAAtAYAIAMAAAAbACAeAAC0BgAgHwAAuAYAIA4AAAAbACAKAACqBQAgDQAAswQAIA8AALQEACARAAC2BAAgFwAAuAYAIJ4CAQCUBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh0gIBAJQEACHTAgEAlAQAIdQCAgCxBAAh1QIQAJUEACEMCgAAqgUAIA0AALMEACAPAAC0BAAgEQAAtgQAIJ4CAQCUBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh0gIBAJQEACHTAgEAlAQAIdQCAgCxBAAh1QIQAJUEACEMCgAAqwUAIA0AAOAEACAPAADhBAAgEAAA4gQAIJ4CAQAAAAG2AgEAAAABvgJAAAAAAb8CQAAAAAHSAgEAAAAB0wIBAAAAAdQCAgAAAAHVAhAAAAABAgAAAB0AIB4AALkGACADAAAAGwAgHgAAuQYAIB8AAL0GACAOAAAAGwAgCgAAqgUAIA0AALMEACAPAAC0BAAgEAAAtQQAIBcAAL0GACCeAgEAlAQAIbYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIdICAQCUBAAh0wIBAJQEACHUAgIAsQQAIdUCEACVBAAhDAoAAKoFACANAACzBAAgDwAAtAQAIBAAALUEACCeAgEAlAQAIbYCAQCUBAAhvgJAAJYEACG_AkAAlgQAIdICAQCUBAAh0wIBAJQEACHUAgIAsQQAIdUCEACVBAAhCwQAAP4FACAFAAD_BQAgngIBAAAAAbYCAQAAAAG3AgEAAAABvgJAAAAAAb8CQAAAAAHdAgEAAAAB9AIgAAAAAfUCAQAAAAH2AgEAAAABAgAAAAEAIB4AAL4GACADAAAANwAgHgAAvgYAIB8AAMIGACANAAAANwAgBAAA2gUAIAUAANsFACAXAADCBgAgngIBAJQEACG2AgEAlAQAIbcCAQCUBAAhvgJAAJYEACG_AkAAlgQAId0CAQCUBAAh9AIgAM8EACH1AgEAogQAIfYCAQCiBAAhCwQAANoFACAFAADbBQAgngIBAJQEACG2AgEAlAQAIbcCAQCUBAAhvgJAAJYEACG_AkAAlgQAId0CAQCUBAAh9AIgAM8EACH1AgEAogQAIfYCAQCiBAAhA74CQAAAAAHbAgEAAAAB3QIAAADdAgIItgIBAAAAAbcCAQAAAAG-AkAAAAABvwJAAAAAAdcCAQAAAAHYAkAAAAAB2QJAAAAAAdoCQAAAAAEGngIBAAAAAbYCAQAAAAG-AkAAAAABvwJAAAAAAdECIAAAAAHWAgEAAAABAgAAANYBACAeAADFBgAgBbYCAQAAAAG-AkAAAAABxgIBAAAAAccCAQAAAAHQAgAAANACAgifAhAAAAABtgIBAAAAAb4CQAAAAAG_AkAAAAABxgIBAAAAAccCAQAAAAHQAgAAANACA9ECIAAAAAEKtgIBAAAAAb4CQAAAAAG_AkAAAAABwwIBAAAAAcUCQAAAAAHGAgEAAAABxwIBAAAAAcsCAQAAAAHMAgEAAAABzgIAAADJAgIDAAAA2QEAIB4AAMUGACAfAADMBgAgCAAAANkBACAXAADMBgAgngIBAJQEACG2AgEAlAQAIb4CQACWBAAhvwJAAJYEACHRAiAAzwQAIdYCAQCUBAAhBp4CAQCUBAAhtgIBAJQEACG-AkAAlgQAIb8CQACWBAAh0QIgAM8EACHWAgEAlAQAIQeeAgEAAAABtgIBAAAAAb4CQAAAAAG_AkAAAAAB0wIBAAAAAdQCAgAAAAHVAhAAAAABCrYCAQAAAAG-AkAAAAABvwJAAAAAAd4CAQAAAAHfAgEAAAAB4AIBAAAAAeECAQAAAAHiAgEAAAAB4wIBAAAAAeQCAQAAAAEEBAYCBQoDBg4EBwARAQMAAQEDAAECAwABCgAFBQcAEAgQBgkWBAsaCAweCQIGFAUHAAcBBhUAAQoABQYHAA8KAAUNAAoPJAwQKA0RLA4CBwALDB8JAQwgAAEOAAkBDgAJAQ4ACQMPLQAQLgARLwADCTAACzEADDIAAwQzAAU0AAY1AAAAAAMHABYkABclABgAAAADBwAWJAAXJQAYAQMAAQEDAAEDBwAdJAAeJQAfAAAAAwcAHSQAHiUAHwEDAAEBAwABAwcAJCQAJSUAJgAAAAMHACQkACUlACYAAAADBwAsJAAtJQAuAAAAAwcALCQALSUALgEInAEGAQiiAQYDBwAzJAA0JQA1AAAAAwcAMyQANCUANQIDAAEKAAUCAwABCgAFAwcAOiQAOyUAPAAAAAMHADokADslADwBCgAFAQoABQMHAEEkAEIlAEMAAAADBwBBJABCJQBDAAADBwBIJABJJQBKAAAAAwcASCQASSUASgIKAAUNAAoCCgAFDQAKBQcATyQAUiUAU6YBAFCnAQBRAAAAAAAFBwBPJABSJQBTpgEAUKcBAFEBDgAJAQ4ACQMHAFgkAFklAFoAAAADBwBYJABZJQBaAQ4ACQEOAAkFBwBfJABiJQBjpgEAYKcBAGEAAAAAAAUHAF8kAGIlAGOmAQBgpwEAYQEOAAkBDgAJAwcAaCQAaSUAagAAAAMHAGgkAGklAGoAAAADBwBwJABxJQByAAAAAwcAcCQAcSUAcgAAAAUHAHgkAHslAHymAQB5pwEAegAAAAAABQcAeCQAeyUAfKYBAHmnAQB6AAAABQcAggEkAIUBJQCGAaYBAIMBpwEAhAEAAAAAAAUHAIIBJACFASUAhgGmAQCDAacBAIQBAAAFBwCLASQAjgElAI8BpgEAjAGnAQCNAQAAAAAABQcAiwEkAI4BJQCPAaYBAIwBpwEAjQESAgETNgEUOQEVOgEWOwEYPQEZPxIaQBMbQgEcRBIdRRQgRgEhRwEiSBImSxUnTBkoTQIpTgIqTwIrUAIsUQItUwIuVRIvVhowWAIxWhIyWxszXAI0XQI1XhI2YRw3YiA4YwM5ZAM6ZQM7ZgM8ZwM9aQM-axI_bCFAbgNBcBJCcSJDcgNEcwNFdBJGdyNHeCdIeihJeyhKfihLfyhMgAEoTYIBKE6EARJPhQEpUIcBKFGJARJSigEqU4sBKFSMAShVjQESVpABK1eRAS9YkgEFWZMBBVqUAQVblQEFXJYBBV2YAQVemgESX5sBMGCeAQVhoAESYqEBMWOjAQVkpAEFZaUBEmaoATJnqQE2aKoBBGmrAQRqrAEEa60BBGyuAQRtsAEEbrIBEm-zATdwtQEEcbcBEnK4AThzuQEEdLoBBHW7ARJ2vgE5d78BPXjAAQh5wQEIesIBCHvDAQh8xAEIfcYBCH7IARJ_yQE-gAHLAQiBAc0BEoIBzgE_gwHPAQiEAdABCIUB0QEShgHUAUCHAdUBRIgB1wEKiQHYAQqKAdsBCosB3AEKjAHdAQqNAd8BCo4B4QESjwHiAUWQAeQBCpEB5gESkgHnAUaTAegBCpQB6QEKlQHqARKWAe0BR5cB7gFLmAHvAQmZAfABCZoB8QEJmwHyAQmcAfMBCZ0B9QEJngH3ARKfAfgBTKAB-gEJoQH8ARKiAf0BTaMB_gEJpAH_AQmlAYACEqgBgwJOqQGEAlSqAYUCDKsBhgIMrAGHAgytAYgCDK4BiQIMrwGLAgywAY0CErEBjgJVsgGQAgyzAZICErQBkwJWtQGUAgy2AZUCDLcBlgISuAGZAle5AZoCW7oBmwINuwGcAg28AZ0CDb0BngINvgGfAg2_AaECDcABowISwQGkAlzCAaYCDcMBqAISxAGpAl3FAaoCDcYBqwINxwGsAhLIAa8CXskBsAJkygGxAg7LAbICDswBswIOzQG0Ag7OAbUCDs8BtwIO0AG5AhLRAboCZdIBvAIO0wG-AhLUAb8CZtUBwAIO1gHBAg7XAcICEtgBxQJn2QHGAmvaAcgCbNsByQJs3AHMAmzdAc0CbN4BzgJs3wHQAmzgAdICEuEB0wJt4gHVAmzjAdcCEuQB2AJu5QHZAmzmAdoCbOcB2wIS6AHeAm_pAd8Cc-oB4QJ06wHiAnTsAeUCdO0B5gJ07gHnAnTvAekCdPAB6wIS8QHsAnXyAe4CdPMB8AIS9AHxAnb1AfICdPYB8wJ09wH0AhL4AfcCd_kB-AJ9-gH6An77AfsCfvwB_gJ-_QH_An7-AYADfv8BggN-gAKEAxKBAoUDf4IChwN-gwKJAxKEAooDgAGFAosDfoYCjAN-hwKNAxKIApADgQGJApEDhwGKApMDBosClAMGjAKWAwaNApcDBo4CmAMGjwKaAwaQApwDEpECnQOIAZICnwMGkwKhAxKUAqIDiQGVAqMDBpYCpAMGlwKlAxKYAqgDigGZAqkDkAE"
+ strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"user\",\"sessions\",\"accounts\",\"complexes\",\"_count\",\"plan\",\"users\",\"complex\",\"invitations\",\"courts\",\"sport\",\"court\",\"availabilities\",\"priceRules\",\"bookings\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"data\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"create\",\"update\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"having\",\"_min\",\"_max\",\"User.groupBy\",\"User.aggregate\",\"Session.findUnique\",\"Session.findUniqueOrThrow\",\"Session.findFirst\",\"Session.findFirstOrThrow\",\"Session.findMany\",\"Session.createOne\",\"Session.createMany\",\"Session.createManyAndReturn\",\"Session.updateOne\",\"Session.updateMany\",\"Session.updateManyAndReturn\",\"Session.upsertOne\",\"Session.deleteOne\",\"Session.deleteMany\",\"Session.groupBy\",\"Session.aggregate\",\"Account.findUnique\",\"Account.findUniqueOrThrow\",\"Account.findFirst\",\"Account.findFirstOrThrow\",\"Account.findMany\",\"Account.createOne\",\"Account.createMany\",\"Account.createManyAndReturn\",\"Account.updateOne\",\"Account.updateMany\",\"Account.updateManyAndReturn\",\"Account.upsertOne\",\"Account.deleteOne\",\"Account.deleteMany\",\"Account.groupBy\",\"Account.aggregate\",\"Verification.findUnique\",\"Verification.findUniqueOrThrow\",\"Verification.findFirst\",\"Verification.findFirstOrThrow\",\"Verification.findMany\",\"Verification.createOne\",\"Verification.createMany\",\"Verification.createManyAndReturn\",\"Verification.updateOne\",\"Verification.updateMany\",\"Verification.updateManyAndReturn\",\"Verification.upsertOne\",\"Verification.deleteOne\",\"Verification.deleteMany\",\"Verification.groupBy\",\"Verification.aggregate\",\"Complex.findUnique\",\"Complex.findUniqueOrThrow\",\"Complex.findFirst\",\"Complex.findFirstOrThrow\",\"Complex.findMany\",\"Complex.createOne\",\"Complex.createMany\",\"Complex.createManyAndReturn\",\"Complex.updateOne\",\"Complex.updateMany\",\"Complex.updateManyAndReturn\",\"Complex.upsertOne\",\"Complex.deleteOne\",\"Complex.deleteMany\",\"Complex.groupBy\",\"Complex.aggregate\",\"ComplexUser.findUnique\",\"ComplexUser.findUniqueOrThrow\",\"ComplexUser.findFirst\",\"ComplexUser.findFirstOrThrow\",\"ComplexUser.findMany\",\"ComplexUser.createOne\",\"ComplexUser.createMany\",\"ComplexUser.createManyAndReturn\",\"ComplexUser.updateOne\",\"ComplexUser.updateMany\",\"ComplexUser.updateManyAndReturn\",\"ComplexUser.upsertOne\",\"ComplexUser.deleteOne\",\"ComplexUser.deleteMany\",\"ComplexUser.groupBy\",\"ComplexUser.aggregate\",\"ComplexInvitation.findUnique\",\"ComplexInvitation.findUniqueOrThrow\",\"ComplexInvitation.findFirst\",\"ComplexInvitation.findFirstOrThrow\",\"ComplexInvitation.findMany\",\"ComplexInvitation.createOne\",\"ComplexInvitation.createMany\",\"ComplexInvitation.createManyAndReturn\",\"ComplexInvitation.updateOne\",\"ComplexInvitation.updateMany\",\"ComplexInvitation.updateManyAndReturn\",\"ComplexInvitation.upsertOne\",\"ComplexInvitation.deleteOne\",\"ComplexInvitation.deleteMany\",\"ComplexInvitation.groupBy\",\"ComplexInvitation.aggregate\",\"Sport.findUnique\",\"Sport.findUniqueOrThrow\",\"Sport.findFirst\",\"Sport.findFirstOrThrow\",\"Sport.findMany\",\"Sport.createOne\",\"Sport.createMany\",\"Sport.createManyAndReturn\",\"Sport.updateOne\",\"Sport.updateMany\",\"Sport.updateManyAndReturn\",\"Sport.upsertOne\",\"Sport.deleteOne\",\"Sport.deleteMany\",\"Sport.groupBy\",\"Sport.aggregate\",\"Court.findUnique\",\"Court.findUniqueOrThrow\",\"Court.findFirst\",\"Court.findFirstOrThrow\",\"Court.findMany\",\"Court.createOne\",\"Court.createMany\",\"Court.createManyAndReturn\",\"Court.updateOne\",\"Court.updateMany\",\"Court.updateManyAndReturn\",\"Court.upsertOne\",\"Court.deleteOne\",\"Court.deleteMany\",\"_avg\",\"_sum\",\"Court.groupBy\",\"Court.aggregate\",\"CourtAvailability.findUnique\",\"CourtAvailability.findUniqueOrThrow\",\"CourtAvailability.findFirst\",\"CourtAvailability.findFirstOrThrow\",\"CourtAvailability.findMany\",\"CourtAvailability.createOne\",\"CourtAvailability.createMany\",\"CourtAvailability.createManyAndReturn\",\"CourtAvailability.updateOne\",\"CourtAvailability.updateMany\",\"CourtAvailability.updateManyAndReturn\",\"CourtAvailability.upsertOne\",\"CourtAvailability.deleteOne\",\"CourtAvailability.deleteMany\",\"CourtAvailability.groupBy\",\"CourtAvailability.aggregate\",\"CourtPriceRule.findUnique\",\"CourtPriceRule.findUniqueOrThrow\",\"CourtPriceRule.findFirst\",\"CourtPriceRule.findFirstOrThrow\",\"CourtPriceRule.findMany\",\"CourtPriceRule.createOne\",\"CourtPriceRule.createMany\",\"CourtPriceRule.createManyAndReturn\",\"CourtPriceRule.updateOne\",\"CourtPriceRule.updateMany\",\"CourtPriceRule.updateManyAndReturn\",\"CourtPriceRule.upsertOne\",\"CourtPriceRule.deleteOne\",\"CourtPriceRule.deleteMany\",\"CourtPriceRule.groupBy\",\"CourtPriceRule.aggregate\",\"CourtBooking.findUnique\",\"CourtBooking.findUniqueOrThrow\",\"CourtBooking.findFirst\",\"CourtBooking.findFirstOrThrow\",\"CourtBooking.findMany\",\"CourtBooking.createOne\",\"CourtBooking.createMany\",\"CourtBooking.createManyAndReturn\",\"CourtBooking.updateOne\",\"CourtBooking.updateMany\",\"CourtBooking.updateManyAndReturn\",\"CourtBooking.upsertOne\",\"CourtBooking.deleteOne\",\"CourtBooking.deleteMany\",\"CourtBooking.groupBy\",\"CourtBooking.aggregate\",\"CourtBookingLog.findUnique\",\"CourtBookingLog.findUniqueOrThrow\",\"CourtBookingLog.findFirst\",\"CourtBookingLog.findFirstOrThrow\",\"CourtBookingLog.findMany\",\"CourtBookingLog.createOne\",\"CourtBookingLog.createMany\",\"CourtBookingLog.createManyAndReturn\",\"CourtBookingLog.updateOne\",\"CourtBookingLog.updateMany\",\"CourtBookingLog.updateManyAndReturn\",\"CourtBookingLog.upsertOne\",\"CourtBookingLog.deleteOne\",\"CourtBookingLog.deleteMany\",\"CourtBookingLog.groupBy\",\"CourtBookingLog.aggregate\",\"PasswordResetRequest.findUnique\",\"PasswordResetRequest.findUniqueOrThrow\",\"PasswordResetRequest.findFirst\",\"PasswordResetRequest.findFirstOrThrow\",\"PasswordResetRequest.findMany\",\"PasswordResetRequest.createOne\",\"PasswordResetRequest.createMany\",\"PasswordResetRequest.createManyAndReturn\",\"PasswordResetRequest.updateOne\",\"PasswordResetRequest.updateMany\",\"PasswordResetRequest.updateManyAndReturn\",\"PasswordResetRequest.upsertOne\",\"PasswordResetRequest.deleteOne\",\"PasswordResetRequest.deleteMany\",\"PasswordResetRequest.groupBy\",\"PasswordResetRequest.aggregate\",\"Plan.findUnique\",\"Plan.findUniqueOrThrow\",\"Plan.findFirst\",\"Plan.findFirstOrThrow\",\"Plan.findMany\",\"Plan.createOne\",\"Plan.createMany\",\"Plan.createManyAndReturn\",\"Plan.updateOne\",\"Plan.updateMany\",\"Plan.updateManyAndReturn\",\"Plan.upsertOne\",\"Plan.deleteOne\",\"Plan.deleteMany\",\"Plan.groupBy\",\"Plan.aggregate\",\"AND\",\"OR\",\"NOT\",\"code\",\"name\",\"price\",\"rules\",\"lastUpdatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"contains\",\"startsWith\",\"endsWith\",\"every\",\"some\",\"none\",\"id\",\"email\",\"otpHash\",\"otpExpiresAt\",\"otpAttempts\",\"otpLastSentAt\",\"otpResendCount\",\"usedAt\",\"createdAt\",\"updatedAt\",\"bookingCode\",\"courtId\",\"bookingDate\",\"startTime\",\"endTime\",\"CourtBookingStatus\",\"previousStatus\",\"newStatus\",\"customerName\",\"customerPhone\",\"customerEmail\",\"changedAt\",\"status\",\"DayOfWeek\",\"dayOfWeek\",\"isActive\",\"complexId\",\"sportId\",\"slotDurationMinutes\",\"basePrice\",\"slug\",\"tokenHash\",\"expiresAt\",\"acceptedAt\",\"revokedAt\",\"userId\",\"ComplexUserRole\",\"role\",\"complexName\",\"physicalAddress\",\"city\",\"state\",\"country\",\"complexSlug\",\"adminEmail\",\"planCode\",\"identifier\",\"value\",\"accountId\",\"providerId\",\"accessToken\",\"refreshToken\",\"idToken\",\"accessTokenExpiresAt\",\"refreshTokenExpiresAt\",\"scope\",\"password\",\"token\",\"ipAddress\",\"userAgent\",\"emailVerified\",\"image\",\"phone\",\"courtId_bookingDate_startTime\",\"complexId_userId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"),
+ graph: "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-AgAA4wO-AiIBDgAA5AUAIAoOAADfAwAgigIAAOIDADCLAgAAIQAQjAIAAOIDADCmAgEAAAABrgJAAKIDACGxAgEArwMAIbMCAQCfAwAhtAIBAJ8DACG-AgAA4wO-AiIDAAAAIQAgAQAAIgAwAgAAIwAgDQ4AAN8DACCKAgAA4AMAMIsCAAAlABCMAgAA4AMAMI8CEACgAwAhpgIBAK8DACGuAkAAogMAIa8CQACiAwAhsQIBAK8DACGzAgEAvAMAIbQCAQC8AwAhvgIAAOEDvgIjvwIgAMwDACEEDgAA5AUAILMCAADrBAAgtAIAAOsEACC-AgAA6wQAIA0OAADfAwAgigIAAOADADCLAgAAJQAQjAIAAOADADCPAhAAoAMAIaYCAQAAAAGuAkAAogMAIa8CQACiAwAhsQIBAK8DACGzAgEAvAMAIbQCAQC8AwAhvgIAAOEDvgIjvwIgAMwDACEDAAAAJQAgAQAAJgAwAgAAJwAgEA4AAN8DACCKAgAA3gMAMIsCAAApABCMAgAA3gMAMKYCAQCvAwAhrgJAAKIDACGvAkAAogMAIbACAQCfAwAhsQIBAK8DACGyAkAAogMAIbMCAQCfAwAhtAIBAJ8DACG4AgEAnwMAIbkCAQCfAwAhugIBALwDACG8AgAAuwO2AiICDgAA5AUAILoCAADrBAAgEQ4AAN8DACCKAgAA3gMAMIsCAAApABCMAgAA3gMAMKYCAQAAAAGuAkAAogMAIa8CQACiAwAhsAIBAAAAAbECAQCvAwAhsgJAAKIDACGzAgEAnwMAIbQCAQCfAwAhuAIBAJ8DACG5AgEAnwMAIboCAQC8AwAhvAIAALsDtgIi5QIAAN0DACADAAAAKQAgAQAAKgAwAgAAKwAgAQAAACEAIAEAAAAlACABAAAAKQAgAQAAAAsAIAEAAAAXACABAAAAGwAgAQAAAAMAIAEAAAAHACABAAAACwAgAQAAAAEAIA8EAADaAwAgBQAA2wMAIAYAANwDACCKAgAA2QMAMIsCAAA3ABCMAgAA2QMAMI4CAQCfAwAhpgIBAJ8DACGnAgEAnwMAIa4CQACiAwAhrwJAAKIDACHLAgEAnwMAIeICIADMAwAh4wIBALwDACHkAgEAvAMAIQUEAADhBQAgBQAA4gUAIAYAAOMFACDjAgAA6wQAIOQCAADrBAAgAwAAADcAIAEAADgAMAIAAAEAIAMAAAA3ACABAAA4ADACAAABACADAAAANwAgAQAAOAAwAgAAAQAgDAQAAN4FACAFAADfBQAgBgAA4AUAII4CAQAAAAGmAgEAAAABpwIBAAAAAa4CQAAAAAGvAkAAAAABywIBAAAAAeICIAAAAAHjAgEAAAAB5AIBAAAAAQEXAAA8ACAJjgIBAAAAAaYCAQAAAAGnAgEAAAABrgJAAAAAAa8CQAAAAAHLAgEAAAAB4gIgAAAAAeMCAQAAAAHkAgEAAAABARcAAD4AMAEXAAA-ADAMBAAAugUAIAUAALsFACAGAAC8BQAgjgIBAPkDACGmAgEA-QMAIacCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcsCAQD5AwAh4gIgALQEACHjAgEAhwQAIeQCAQCHBAAhAgAAAAEAIBcAAEEAIAmOAgEA-QMAIaYCAQD5AwAhpwIBAPkDACGuAkAA-wMAIa8CQAD7AwAhywIBAPkDACHiAiAAtAQAIeMCAQCHBAAh5AIBAIcEACECAAAANwAgFwAAQwAgAgAAADcAIBcAAEMAIAMAAAABACAeAAA8ACAfAABBACABAAAAAQAgAQAAADcAIAUHAAC3BQAgJAAAuQUAICUAALgFACDjAgAA6wQAIOQCAADrBAAgDIoCAADYAwAwiwIAAEoAEIwCAADYAwAwjgIBAJIDACGmAgEAkgMAIacCAQCSAwAhrgJAAJUDACGvAkAAlQMAIcsCAQCSAwAh4gIgAMADACHjAgEAtQMAIeQCAQC1AwAhAwAAADcAIAEAAEkAMCMAAEoAIAMAAAA3ACABAAA4ADACAAABACABAAAABQAgAQAAAAUAIAMAAAADACABAAAEADACAAAFACADAAAAAwAgAQAABAAwAgAABQAgAwAAAAMAIAEAAAQAMAIAAAUAIAkDAAC2BQAgpgIBAAAAAa4CQAAAAAGvAkAAAAABxgJAAAAAAckCAQAAAAHfAgEAAAAB4AIBAAAAAeECAQAAAAEBFwAAUgAgCKYCAQAAAAGuAkAAAAABrwJAAAAAAcYCQAAAAAHJAgEAAAAB3wIBAAAAAeACAQAAAAHhAgEAAAABARcAAFQAMAEXAABUADAJAwAAtQUAIKYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcYCQAD7AwAhyQIBAPkDACHfAgEA-QMAIeACAQCHBAAh4QIBAIcEACECAAAABQAgFwAAVwAgCKYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcYCQAD7AwAhyQIBAPkDACHfAgEA-QMAIeACAQCHBAAh4QIBAIcEACECAAAAAwAgFwAAWQAgAgAAAAMAIBcAAFkAIAMAAAAFACAeAABSACAfAABXACABAAAABQAgAQAAAAMAIAUHAACyBQAgJAAAtAUAICUAALMFACDgAgAA6wQAIOECAADrBAAgC4oCAADXAwAwiwIAAGAAEIwCAADXAwAwpgIBAJIDACGuAkAAlQMAIa8CQACVAwAhxgJAAJUDACHJAgEAkgMAId8CAQCSAwAh4AIBALUDACHhAgEAtQMAIQMAAAADACABAABfADAjAABgACADAAAAAwAgAQAABAAwAgAABQAgAQAAAAkAIAEAAAAJACADAAAABwAgAQAACAAwAgAACQAgAwAAAAcAIAEAAAgAMAIAAAkAIAMAAAAHACABAAAIADACAAAJACAOAwAAsQUAIKYCAQAAAAGuAkAAAAABrwJAAAAAAckCAQAAAAHWAgEAAAAB1wIBAAAAAdgCAQAAAAHZAgEAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAAB3QIBAAAAAd4CAQAAAAEBFwAAaAAgDaYCAQAAAAGuAkAAAAABrwJAAAAAAckCAQAAAAHWAgEAAAAB1wIBAAAAAdgCAQAAAAHZAgEAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAAB3QIBAAAAAd4CAQAAAAEBFwAAagAwARcAAGoAMA4DAACwBQAgpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhyQIBAPkDACHWAgEA-QMAIdcCAQD5AwAh2AIBAIcEACHZAgEAhwQAIdoCAQCHBAAh2wJAANMEACHcAkAA0wQAId0CAQCHBAAh3gIBAIcEACECAAAACQAgFwAAbQAgDaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIckCAQD5AwAh1gIBAPkDACHXAgEA-QMAIdgCAQCHBAAh2QIBAIcEACHaAgEAhwQAIdsCQADTBAAh3AJAANMEACHdAgEAhwQAId4CAQCHBAAhAgAAAAcAIBcAAG8AIAIAAAAHACAXAABvACADAAAACQAgHgAAaAAgHwAAbQAgAQAAAAkAIAEAAAAHACAKBwAArQUAICQAAK8FACAlAACuBQAg2AIAAOsEACDZAgAA6wQAINoCAADrBAAg2wIAAOsEACDcAgAA6wQAIN0CAADrBAAg3gIAAOsEACAQigIAANYDADCLAgAAdgAQjAIAANYDADCmAgEAkgMAIa4CQACVAwAhrwJAAJUDACHJAgEAkgMAIdYCAQCSAwAh1wIBAJIDACHYAgEAtQMAIdkCAQC1AwAh2gIBALUDACHbAkAApwMAIdwCQACnAwAh3QIBALUDACHeAgEAtQMAIQMAAAAHACABAAB1ADAjAAB2ACADAAAABwAgAQAACAAwAgAACQAgCYoCAADVAwAwiwIAAHwAEIwCAADVAwAwpgIBAAAAAa4CQACiAwAhrwJAAKIDACHGAkAAogMAIdQCAQCfAwAh1QIBAJ8DACEBAAAAeQAgAQAAAHkAIAmKAgAA1QMAMIsCAAB8ABCMAgAA1QMAMKYCAQCfAwAhrgJAAKIDACGvAkAAogMAIcYCQACiAwAh1AIBAJ8DACHVAgEAnwMAIQADAAAAfAAgAQAAfQAwAgAAeQAgAwAAAHwAIAEAAH0AMAIAAHkAIAMAAAB8ACABAAB9ADACAAB5ACAGpgIBAAAAAa4CQAAAAAGvAkAAAAABxgJAAAAAAdQCAQAAAAHVAgEAAAABARcAAIEBACAGpgIBAAAAAa4CQAAAAAGvAkAAAAABxgJAAAAAAdQCAQAAAAHVAgEAAAABARcAAIMBADABFwAAgwEAMAamAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHGAkAA-wMAIdQCAQD5AwAh1QIBAPkDACECAAAAeQAgFwAAhgEAIAamAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHGAkAA-wMAIdQCAQD5AwAh1QIBAPkDACECAAAAfAAgFwAAiAEAIAIAAAB8ACAXAACIAQAgAwAAAHkAIB4AAIEBACAfAACGAQAgAQAAAHkAIAEAAAB8ACADBwAAqgUAICQAAKwFACAlAACrBQAgCYoCAADUAwAwiwIAAI8BABCMAgAA1AMAMKYCAQCSAwAhrgJAAJUDACGvAkAAlQMAIcYCQACVAwAh1AIBAJIDACHVAgEAkgMAIQMAAAB8ACABAACOAQAwIwAAjwEAIAMAAAB8ACABAAB9ADACAAB5ACABAAAAEwAgAQAAABMAIAMAAAARACABAAASADACAAATACADAAAAEQAgAQAAEgAwAgAAEwAgAwAAABEAIAEAABIAMAIAABMAIA8IAACpBQAgCQAA5gQAIAsAAOcEACAMAADoBAAgpgIBAAAAAa4CQAAAAAGvAkAAAAABzAIBAAAAAc0CAQAAAAHOAgEAAAABzwIBAAAAAdACAQAAAAHRAgEAAAAB0gIBAAAAAdMCAQAAAAEBFwAAlwEAIAumAgEAAAABrgJAAAAAAa8CQAAAAAHMAgEAAAABzQIBAAAAAc4CAQAAAAHPAgEAAAAB0AIBAAAAAdECAQAAAAHSAgEAAAAB0wIBAAAAAQEXAACZAQAwARcAAJkBADABAAAADwAgDwgAAKgFACAJAACJBAAgCwAAigQAIAwAAIsEACCmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHMAgEA-QMAIc0CAQCHBAAhzgIBAIcEACHPAgEAhwQAIdACAQCHBAAh0QIBAPkDACHSAgEA-QMAIdMCAQCHBAAhAgAAABMAIBcAAJ0BACALpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhzAIBAPkDACHNAgEAhwQAIc4CAQCHBAAhzwIBAIcEACHQAgEAhwQAIdECAQD5AwAh0gIBAPkDACHTAgEAhwQAIQIAAAARACAXAACfAQAgAgAAABEAIBcAAJ8BACABAAAADwAgAwAAABMAIB4AAJcBACAfAACdAQAgAQAAABMAIAEAAAARACAIBwAApQUAICQAAKcFACAlAACmBQAgzQIAAOsEACDOAgAA6wQAIM8CAADrBAAg0AIAAOsEACDTAgAA6wQAIA6KAgAA0wMAMIsCAACnAQAQjAIAANMDADCmAgEApQMAIa4CQACVAwAhrwJAAJUDACHMAgEAkgMAIc0CAQC1AwAhzgIBALUDACHPAgEAtQMAIdACAQC1AwAh0QIBAJIDACHSAgEAkgMAIdMCAQC1AwAhAwAAABEAIAEAAKYBADAjAACnAQAgAwAAABEAIAEAABIAMAIAABMAIAEAAAANACABAAAADQAgAwAAAAsAIAEAAAwAMAIAAA0AIAMAAAALACABAAAMADACAAANACADAAAACwAgAQAADAAwAgAADQAgBgMAAOQEACAKAACkBQAgrgJAAAAAAcACAQAAAAHJAgEAAAABywIAAADLAgIBFwAArwEAIASuAkAAAAABwAIBAAAAAckCAQAAAAHLAgAAAMsCAgEXAACxAQAwARcAALEBADAGAwAA4gQAIAoAAKMFACCuAkAA-wMAIcACAQD5AwAhyQIBAPkDACHLAgAA4ATLAiICAAAADQAgFwAAtAEAIASuAkAA-wMAIcACAQD5AwAhyQIBAPkDACHLAgAA4ATLAiICAAAACwAgFwAAtgEAIAIAAAALACAXAAC2AQAgAwAAAA0AIB4AAK8BACAfAAC0AQAgAQAAAA0AIAEAAAALACADBwAAoAUAICQAAKIFACAlAAChBQAgB4oCAADPAwAwiwIAAL0BABCMAgAAzwMAMK4CQACVAwAhwAIBAKUDACHJAgEAkgMAIcsCAADQA8sCIgMAAAALACABAAC8AQAwIwAAvQEAIAMAAAALACABAAAMADACAAANACABAAAAGQAgAQAAABkAIAMAAAAXACABAAAYADACAAAZACADAAAAFwAgAQAAGAAwAgAAGQAgAwAAABcAIAEAABgAMAIAABkAIAoKAACfBQAgpgIBAAAAAacCAQAAAAGuAkAAAAABrwJAAAAAAcACAQAAAAHFAgEAAAABxgJAAAAAAccCQAAAAAHIAkAAAAABARcAAMUBACAJpgIBAAAAAacCAQAAAAGuAkAAAAABrwJAAAAAAcACAQAAAAHFAgEAAAABxgJAAAAAAccCQAAAAAHIAkAAAAABARcAAMcBADABFwAAxwEAMAoKAACeBQAgpgIBAPkDACGnAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHAAgEA-QMAIcUCAQD5AwAhxgJAAPsDACHHAkAA0wQAIcgCQADTBAAhAgAAABkAIBcAAMoBACAJpgIBAPkDACGnAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHAAgEA-QMAIcUCAQD5AwAhxgJAAPsDACHHAkAA0wQAIcgCQADTBAAhAgAAABcAIBcAAMwBACACAAAAFwAgFwAAzAEAIAMAAAAZACAeAADFAQAgHwAAygEAIAEAAAAZACABAAAAFwAgBQcAAJsFACAkAACdBQAgJQAAnAUAIMcCAADrBAAgyAIAAOsEACAMigIAAM4DADCLAgAA0wEAEIwCAADOAwAwpgIBAKUDACGnAgEAkgMAIa4CQACVAwAhrwJAAJUDACHAAgEApQMAIcUCAQCSAwAhxgJAAJUDACHHAkAApwMAIcgCQACnAwAhAwAAABcAIAEAANIBADAjAADTAQAgAwAAABcAIAEAABgAMAIAABkAIAoMAADNAwAgigIAAMsDADCLAgAA2QEAEIwCAADLAwAwjgIBAAAAAaYCAQAAAAGuAkAAogMAIa8CQACiAwAhvwIgAMwDACHEAgEAAAABAQAAANYBACABAAAA1gEAIAoMAADNAwAgigIAAMsDADCLAgAA2QEAEIwCAADLAwAwjgIBAJ8DACGmAgEArwMAIa4CQACiAwAhrwJAAKIDACG_AiAAzAMAIcQCAQCfAwAhAQwAAJoFACADAAAA2QEAIAEAANoBADACAADWAQAgAwAAANkBACABAADaAQAwAgAA1gEAIAMAAADZAQAgAQAA2gEAMAIAANYBACAHDAAAmQUAII4CAQAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAG_AiAAAAABxAIBAAAAAQEXAADeAQAgBo4CAQAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAG_AiAAAAABxAIBAAAAAQEXAADgAQAwARcAAOABADAHDAAAjwUAII4CAQD5AwAhpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhvwIgALQEACHEAgEA-QMAIQIAAADWAQAgFwAA4wEAIAaOAgEA-QMAIaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIb8CIAC0BAAhxAIBAPkDACECAAAA2QEAIBcAAOUBACACAAAA2QEAIBcAAOUBACADAAAA1gEAIB4AAN4BACAfAADjAQAgAQAAANYBACABAAAA2QEAIAMHAACMBQAgJAAAjgUAICUAAI0FACAJigIAAMoDADCLAgAA7AEAEIwCAADKAwAwjgIBAJIDACGmAgEApQMAIa4CQACVAwAhrwJAAJUDACG_AiAAwAMAIcQCAQCSAwAhAwAAANkBACABAADrAQAwIwAA7AEAIAMAAADZAQAgAQAA2gEAMAIAANYBACABAAAAHQAgAQAAAB0AIAMAAAAbACABAAAcADACAAAdACADAAAAGwAgAQAAHAAwAgAAHQAgAwAAABsAIAEAABwAMAIAAB0AIA0KAACLBQAgDQAAxQQAIA8AAMYEACAQAADHBAAgEQAAyAQAII4CAQAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAHAAgEAAAABwQIBAAAAAcICAgAAAAHDAhAAAAABARcAAPQBACAIjgIBAAAAAaYCAQAAAAGuAkAAAAABrwJAAAAAAcACAQAAAAHBAgEAAAABwgICAAAAAcMCEAAAAAEBFwAA9gEAMAEXAAD2AQAwDQoAAIoFACANAACYBAAgDwAAmQQAIBAAAJoEACARAACbBAAgjgIBAPkDACGmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHAAgEA-QMAIcECAQD5AwAhwgICAJYEACHDAhAA-gMAIQIAAAAdACAXAAD5AQAgCI4CAQD5AwAhpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhwAIBAPkDACHBAgEA-QMAIcICAgCWBAAhwwIQAPoDACECAAAAGwAgFwAA-wEAIAIAAAAbACAXAAD7AQAgAwAAAB0AIB4AAPQBACAfAAD5AQAgAQAAAB0AIAEAAAAbACAFBwAAhQUAICQAAIgFACAlAACHBQAgpgEAAIYFACCnAQAAiQUAIAuKAgAAyQMAMIsCAACCAgAQjAIAAMkDADCOAgEAkgMAIaYCAQClAwAhrgJAAJUDACGvAkAAlQMAIcACAQClAwAhwQIBAKUDACHCAgIApgMAIcMCEACTAwAhAwAAABsAIAEAAIECADAjAACCAgAgAwAAABsAIAEAABwAMAIAAB0AIAEAAAAjACABAAAAIwAgAwAAACEAIAEAACIAMAIAACMAIAMAAAAhACABAAAiADACAAAjACADAAAAIQAgAQAAIgAwAgAAIwAgBw4AAIQFACCmAgEAAAABrgJAAAAAAbECAQAAAAGzAgEAAAABtAIBAAAAAb4CAAAAvgICARcAAIoCACAGpgIBAAAAAa4CQAAAAAGxAgEAAAABswIBAAAAAbQCAQAAAAG-AgAAAL4CAgEXAACMAgAwARcAAIwCADAHDgAAgwUAIKYCAQD5AwAhrgJAAPsDACGxAgEA-QMAIbMCAQD5AwAhtAIBAPkDACG-AgAAwQS-AiICAAAAIwAgFwAAjwIAIAamAgEA-QMAIa4CQAD7AwAhsQIBAPkDACGzAgEA-QMAIbQCAQD5AwAhvgIAAMEEvgIiAgAAACEAIBcAAJECACACAAAAIQAgFwAAkQIAIAMAAAAjACAeAACKAgAgHwAAjwIAIAEAAAAjACABAAAAIQAgAwcAAIAFACAkAACCBQAgJQAAgQUAIAmKAgAAxQMAMIsCAACYAgAQjAIAAMUDADCmAgEApQMAIa4CQACVAwAhsQIBAKUDACGzAgEAkgMAIbQCAQCSAwAhvgIAAMYDvgIiAwAAACEAIAEAAJcCADAjAACYAgAgAwAAACEAIAEAACIAMAIAACMAIAEAAAAnACABAAAAJwAgAwAAACUAIAEAACYAMAIAACcAIAMAAAAlACABAAAmADACAAAnACADAAAAJQAgAQAAJgAwAgAAJwAgCg4AAP8EACCPAhAAAAABpgIBAAAAAa4CQAAAAAGvAkAAAAABsQIBAAAAAbMCAQAAAAG0AgEAAAABvgIAAAC-AgO_AiAAAAABARcAAKACACAJjwIQAAAAAaYCAQAAAAGuAkAAAAABrwJAAAAAAbECAQAAAAGzAgEAAAABtAIBAAAAAb4CAAAAvgIDvwIgAAAAAQEXAACiAgAwARcAAKICADAKDgAA_gQAII8CEAD6AwAhpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhsQIBAPkDACGzAgEAhwQAIbQCAQCHBAAhvgIAALMEvgIjvwIgALQEACECAAAAJwAgFwAApQIAIAmPAhAA-gMAIaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIbECAQD5AwAhswIBAIcEACG0AgEAhwQAIb4CAACzBL4CI78CIAC0BAAhAgAAACUAIBcAAKcCACACAAAAJQAgFwAApwIAIAMAAAAnACAeAACgAgAgHwAApQIAIAEAAAAnACABAAAAJQAgCAcAAPkEACAkAAD8BAAgJQAA-wQAIKYBAAD6BAAgpwEAAP0EACCzAgAA6wQAILQCAADrBAAgvgIAAOsEACAMigIAAL4DADCLAgAArgIAEIwCAAC-AwAwjwIQAJMDACGmAgEApQMAIa4CQACVAwAhrwJAAJUDACGxAgEApQMAIbMCAQC1AwAhtAIBALUDACG-AgAAvwO-AiO_AiAAwAMAIQMAAAAlACABAACtAgAwIwAArgIAIAMAAAAlACABAAAmADACAAAnACABAAAAKwAgAQAAACsAIAMAAAApACABAAAqADACAAArACADAAAAKQAgAQAAKgAwAgAAKwAgAwAAACkAIAEAACoAMAIAACsAIA0OAAD4BAAgpgIBAAAAAa4CQAAAAAGvAkAAAAABsAIBAAAAAbECAQAAAAGyAkAAAAABswIBAAAAAbQCAQAAAAG4AgEAAAABuQIBAAAAAboCAQAAAAG8AgAAALYCAgEXAAC2AgAgDKYCAQAAAAGuAkAAAAABrwJAAAAAAbACAQAAAAGxAgEAAAABsgJAAAAAAbMCAQAAAAG0AgEAAAABuAIBAAAAAbkCAQAAAAG6AgEAAAABvAIAAAC2AgIBFwAAuAIAMAEXAAC4AgAwDQ4AAPcEACCmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACGwAgEA-QMAIbECAQD5AwAhsgJAAPsDACGzAgEA-QMAIbQCAQD5AwAhuAIBAPkDACG5AgEA-QMAIboCAQCHBAAhvAIAAKYEtgIiAgAAACsAIBcAALsCACAMpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhsAIBAPkDACGxAgEA-QMAIbICQAD7AwAhswIBAPkDACG0AgEA-QMAIbgCAQD5AwAhuQIBAPkDACG6AgEAhwQAIbwCAACmBLYCIgIAAAApACAXAAC9AgAgAgAAACkAIBcAAL0CACADAAAAKwAgHgAAtgIAIB8AALsCACABAAAAKwAgAQAAACkAIAQHAAD0BAAgJAAA9gQAICUAAPUEACC6AgAA6wQAIA-KAgAAvQMAMIsCAADEAgAQjAIAAL0DADCmAgEApQMAIa4CQACVAwAhrwJAAJUDACGwAgEAkgMAIbECAQClAwAhsgJAAJUDACGzAgEAkgMAIbQCAQCSAwAhuAIBAJIDACG5AgEAkgMAIboCAQC1AwAhvAIAALQDtgIiAwAAACkAIAEAAMMCADAjAADEAgAgAwAAACkAIAEAACoAMAIAACsAIA-KAgAAugMAMIsCAADKAgAQjAIAALoDADCmAgEAAAABsAIBAJ8DACGxAgEArwMAIbICQACiAwAhswIBAJ8DACG0AgEAnwMAIbYCAAC7A7YCIrcCAAC7A7YCIrgCAQCfAwAhuQIBAJ8DACG6AgEAvAMAIbsCQACiAwAhAQAAAMcCACABAAAAxwIAIA-KAgAAugMAMIsCAADKAgAQjAIAALoDADCmAgEArwMAIbACAQCfAwAhsQIBAK8DACGyAkAAogMAIbMCAQCfAwAhtAIBAJ8DACG2AgAAuwO2AiK3AgAAuwO2AiK4AgEAnwMAIbkCAQCfAwAhugIBALwDACG7AkAAogMAIQG6AgAA6wQAIAMAAADKAgAgAQAAywIAMAIAAMcCACADAAAAygIAIAEAAMsCADACAADHAgAgAwAAAMoCACABAADLAgAwAgAAxwIAIAymAgEAAAABsAIBAAAAAbECAQAAAAGyAkAAAAABswIBAAAAAbQCAQAAAAG2AgAAALYCArcCAAAAtgICuAIBAAAAAbkCAQAAAAG6AgEAAAABuwJAAAAAAQEXAADPAgAgDKYCAQAAAAGwAgEAAAABsQIBAAAAAbICQAAAAAGzAgEAAAABtAIBAAAAAbYCAAAAtgICtwIAAAC2AgK4AgEAAAABuQIBAAAAAboCAQAAAAG7AkAAAAABARcAANECADABFwAA0QIAMAymAgEA-QMAIbACAQD5AwAhsQIBAPkDACGyAkAA-wMAIbMCAQD5AwAhtAIBAPkDACG2AgAApgS2AiK3AgAApgS2AiK4AgEA-QMAIbkCAQD5AwAhugIBAIcEACG7AkAA-wMAIQIAAADHAgAgFwAA1AIAIAymAgEA-QMAIbACAQD5AwAhsQIBAPkDACGyAkAA-wMAIbMCAQD5AwAhtAIBAPkDACG2AgAApgS2AiK3AgAApgS2AiK4AgEA-QMAIbkCAQD5AwAhugIBAIcEACG7AkAA-wMAIQIAAADKAgAgFwAA1gIAIAIAAADKAgAgFwAA1gIAIAMAAADHAgAgHgAAzwIAIB8AANQCACABAAAAxwIAIAEAAADKAgAgBAcAAPEEACAkAADzBAAgJQAA8gQAILoCAADrBAAgD4oCAACzAwAwiwIAAN0CABCMAgAAswMAMKYCAQClAwAhsAIBAJIDACGxAgEApQMAIbICQACVAwAhswIBAJIDACG0AgEAkgMAIbYCAAC0A7YCIrcCAAC0A7YCIrgCAQCSAwAhuQIBAJIDACG6AgEAtQMAIbsCQACVAwAhAwAAAMoCACABAADcAgAwIwAA3QIAIAMAAADKAgAgAQAAywIAMAIAAMcCACANigIAAK4DADCLAgAA4wIAEIwCAACuAwAwpgIBAAAAAacCAQCfAwAhqAIBAJ8DACGpAkAAogMAIaoCAgCwAwAhqwJAAKIDACGsAgIAsAMAIa0CQACxAwAhrgJAAKIDACGvAkAAogMAIQEAAADgAgAgAQAAAOACACANigIAAK4DADCLAgAA4wIAEIwCAACuAwAwpgIBAK8DACGnAgEAnwMAIagCAQCfAwAhqQJAAKIDACGqAgIAsAMAIasCQACiAwAhrAICALADACGtAkAAsQMAIa4CQACiAwAhrwJAAKIDACEBrQIAAOsEACADAAAA4wIAIAEAAOQCADACAADgAgAgAwAAAOMCACABAADkAgAwAgAA4AIAIAMAAADjAgAgAQAA5AIAMAIAAOACACAKpgIBAAAAAacCAQAAAAGoAgEAAAABqQJAAAAAAaoCAgAAAAGrAkAAAAABrAICAAAAAa0CQAAAAAGuAkAAAAABrwJAAAAAAQEXAADoAgAgCqYCAQAAAAGnAgEAAAABqAIBAAAAAakCQAAAAAGqAgIAAAABqwJAAAAAAawCAgAAAAGtAkAAAAABrgJAAAAAAa8CQAAAAAEBFwAA6gIAMAEXAADqAgAwCqYCAQD5AwAhpwIBAPkDACGoAgEA-QMAIakCQAD7AwAhqgICAJYEACGrAkAA-wMAIawCAgCWBAAhrQJAANMEACGuAkAA-wMAIa8CQAD7AwAhAgAAAOACACAXAADtAgAgCqYCAQD5AwAhpwIBAPkDACGoAgEA-QMAIakCQAD7AwAhqgICAJYEACGrAkAA-wMAIawCAgCWBAAhrQJAANMEACGuAkAA-wMAIa8CQAD7AwAhAgAAAOMCACAXAADvAgAgAgAAAOMCACAXAADvAgAgAwAAAOACACAeAADoAgAgHwAA7QIAIAEAAADgAgAgAQAAAOMCACAGBwAA7AQAICQAAO8EACAlAADuBAAgpgEAAO0EACCnAQAA8AQAIK0CAADrBAAgDYoCAACkAwAwiwIAAPYCABCMAgAApAMAMKYCAQClAwAhpwIBAJIDACGoAgEAkgMAIakCQACVAwAhqgICAKYDACGrAkAAlQMAIawCAgCmAwAhrQJAAKcDACGuAkAAlQMAIa8CQACVAwAhAwAAAOMCACABAAD1AgAwIwAA9gIAIAMAAADjAgAgAQAA5AIAMAIAAOACACAJBgAAowMAIIoCAACeAwAwiwIAAA8AEIwCAACeAwAwjQIBAAAAAY4CAQCfAwAhjwIQAKADACGQAgAAoQMAIJECQACiAwAhAQAAAPkCACABAAAA-QIAIAEGAADqBAAgAwAAAA8AIAEAAPwCADACAAD5AgAgAwAAAA8AIAEAAPwCADACAAD5AgAgAwAAAA8AIAEAAPwCADACAAD5AgAgBgYAAOkEACCNAgEAAAABjgIBAAAAAY8CEAAAAAGQAoAAAAABkQJAAAAAAQEXAACAAwAgBY0CAQAAAAGOAgEAAAABjwIQAAAAAZACgAAAAAGRAkAAAAABARcAAIIDADABFwAAggMAMAYGAAD8AwAgjQIBAPkDACGOAgEA-QMAIY8CEAD6AwAhkAKAAAAAAZECQAD7AwAhAgAAAPkCACAXAACFAwAgBY0CAQD5AwAhjgIBAPkDACGPAhAA-gMAIZACgAAAAAGRAkAA-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_A74CI78CIADAAwAhBwcAAKkDACAkAADEAwAgJQAAxAMAIJICAAAAvgIDkwIAAAC-AgmUAgAAAL4CCZkCAADDA74CIwUHAACXAwAgJAAAwgMAICUAAMIDACCSAiAAAAABmQIgAMEDACEFBwAAlwMAICQAAMIDACAlAADCAwAgkgIgAAAAAZkCIADBAwAhApICIAAAAAGZAiAAwgMAIQcHAACpAwAgJAAAxAMAICUAAMQDACCSAgAAAL4CA5MCAAAAvgIJlAIAAAC-AgmZAgAAwwO-AiMEkgIAAAC-AgOTAgAAAL4CCZQCAAAAvgIJmQIAAMQDvgIjCYoCAADFAwAwiwIAAJgCABCMAgAAxQMAMKYCAQClAwAhrgJAAJUDACGxAgEApQMAIbMCAQCSAwAhtAIBAJIDACG-AgAAxgO-AiIHBwAAlwMAICQAAMgDACAlAADIAwAgkgIAAAC-AgKTAgAAAL4CCJQCAAAAvgIImQIAAMcDvgIiBwcAAJcDACAkAADIAwAgJQAAyAMAIJICAAAAvgICkwIAAAC-AgiUAgAAAL4CCJkCAADHA74CIgSSAgAAAL4CApMCAAAAvgIIlAIAAAC-AgiZAgAAyAO-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_QMAMB8AAIIEADDpAgAA_gMAMOoCAAD_AwAw6wIAAIAEACDsAgAAgQQAMO0CAACBBAAw7gIAAIEEADDvAgAAgQQAMPACAACDBAAw8QIAAIQEADANCQAA5gQAIAsAAOcEACAMAADoBAAgpgIBAAAAAa4CQAAAAAGvAkAAAAABzAIBAAAAAc0CAQAAAAHOAgEAAAABzwIBAAAAAdACAQAAAAHRAgEAAAAB0gIBAAAAAQIAAAATACAeAADlBAAgAwAAABMAIB4AAOUEACAfAACIBAAgARcAAK4GADASCAAA7AMAIAkAANwDACALAADtAwAgDAAAzQMAIIoCAADrAwAwiwIAABEAEIwCAADrAwAwpgIBAAAAAa4CQACiAwAhrwJAAKIDACHMAgEAnwMAIc0CAQC8AwAhzgIBALwDACHPAgEAvAMAIdACAQC8AwAh0QIBAAAAAdICAQCfAwAh0wIBALwDACECAAAAEwAgFwAAiAQAIAIAAACFBAAgFwAAhgQAIA6KAgAAhAQAMIsCAACFBAAQjAIAAIQEADCmAgEArwMAIa4CQACiAwAhrwJAAKIDACHMAgEAnwMAIc0CAQC8AwAhzgIBALwDACHPAgEAvAMAIdACAQC8AwAh0QIBAJ8DACHSAgEAnwMAIdMCAQC8AwAhDooCAACEBAAwiwIAAIUEABCMAgAAhAQAMKYCAQCvAwAhrgJAAKIDACGvAkAAogMAIcwCAQCfAwAhzQIBALwDACHOAgEAvAMAIc8CAQC8AwAh0AIBALwDACHRAgEAnwMAIdICAQCfAwAh0wIBALwDACEKpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhzAIBAPkDACHNAgEAhwQAIc4CAQCHBAAhzwIBAIcEACHQAgEAhwQAIdECAQD5AwAh0gIBAPkDACEB7AIBAAAAAQ0JAACJBAAgCwAAigQAIAwAAIsEACCmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHMAgEA-QMAIc0CAQCHBAAhzgIBAIcEACHPAgEAhwQAIdACAQCHBAAh0QIBAPkDACHSAgEA-QMAIQseAADWBAAwHwAA2wQAMOkCAADXBAAw6gIAANgEADDrAgAA2QQAIOwCAADaBAAw7QIAANoEADDuAgAA2gQAMO8CAADaBAAw8AIAANwEADDxAgAA3QQAMAseAADJBAAwHwAAzgQAMOkCAADKBAAw6gIAAMsEADDrAgAAzAQAIOwCAADNBAAw7QIAAM0EADDuAgAAzQQAMO8CAADNBAAw8AIAAM8EADDxAgAA0AQAMAseAACMBAAwHwAAkQQAMOkCAACNBAAw6gIAAI4EADDrAgAAjwQAIOwCAACQBAAw7QIAAJAEADDuAgAAkAQAMO8CAACQBAAw8AIAAJIEADDxAgAAkwQAMAsNAADFBAAgDwAAxgQAIBAAAMcEACARAADIBAAgjgIBAAAAAaYCAQAAAAGuAkAAAAABrwJAAAAAAcECAQAAAAHCAgIAAAABwwIQAAAAAQIAAAAdACAeAADEBAAgAwAAAB0AIB4AAMQEACAfAACXBAAgARcAAK0GADAQCgAA5QMAIA0AAOYDACAPAADnAwAgEAAA6AMAIBEAAOkDACCKAgAA5AMAMIsCAAAbABCMAgAA5AMAMI4CAQCfAwAhpgIBAAAAAa4CQACiAwAhrwJAAKIDACHAAgEArwMAIcECAQCvAwAhwgICALADACHDAhAAoAMAIQIAAAAdACAXAACXBAAgAgAAAJQEACAXAACVBAAgC4oCAACTBAAwiwIAAJQEABCMAgAAkwQAMI4CAQCfAwAhpgIBAK8DACGuAkAAogMAIa8CQACiAwAhwAIBAK8DACHBAgEArwMAIcICAgCwAwAhwwIQAKADACELigIAAJMEADCLAgAAlAQAEIwCAACTBAAwjgIBAJ8DACGmAgEArwMAIa4CQACiAwAhrwJAAKIDACHAAgEArwMAIcECAQCvAwAhwgICALADACHDAhAAoAMAIQeOAgEA-QMAIaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcECAQD5AwAhwgICAJYEACHDAhAA-gMAIQXsAgIAAAAB8gICAAAAAfMCAgAAAAH0AgIAAAAB9QICAAAAAQsNAACYBAAgDwAAmQQAIBAAAJoEACARAACbBAAgjgIBAPkDACGmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHBAgEA-QMAIcICAgCWBAAhwwIQAPoDACEFHgAApQYAIB8AAKsGACDpAgAApgYAIOoCAACqBgAg7wIAANYBACALHgAAtwQAMB8AALwEADDpAgAAuAQAMOoCAAC5BAAw6wIAALoEACDsAgAAuwQAMO0CAAC7BAAw7gIAALsEADDvAgAAuwQAMPACAAC9BAAw8QIAAL4EADALHgAAqQQAMB8AAK4EADDpAgAAqgQAMOoCAACrBAAw6wIAAKwEACDsAgAArQQAMO0CAACtBAAw7gIAAK0EADDvAgAArQQAMPACAACvBAAw8QIAALAEADALHgAAnAQAMB8AAKEEADDpAgAAnQQAMOoCAACeBAAw6wIAAJ8EACDsAgAAoAQAMO0CAACgBAAw7gIAAKAEADDvAgAAoAQAMPACAACiBAAw8QIAAKMEADALpgIBAAAAAa4CQAAAAAGvAkAAAAABsAIBAAAAAbICQAAAAAGzAgEAAAABtAIBAAAAAbgCAQAAAAG5AgEAAAABugIBAAAAAbwCAAAAtgICAgAAACsAIB4AAKgEACADAAAAKwAgHgAAqAQAIB8AAKcEACABFwAAqQYAMBEOAADfAwAgigIAAN4DADCLAgAAKQAQjAIAAN4DADCmAgEAAAABrgJAAKIDACGvAkAAogMAIbACAQAAAAGxAgEArwMAIbICQACiAwAhswIBAJ8DACG0AgEAnwMAIbgCAQCfAwAhuQIBAJ8DACG6AgEAvAMAIbwCAAC7A7YCIuUCAADdAwAgAgAAACsAIBcAAKcEACACAAAApAQAIBcAAKUEACAPigIAAKMEADCLAgAApAQAEIwCAACjBAAwpgIBAK8DACGuAkAAogMAIa8CQACiAwAhsAIBAJ8DACGxAgEArwMAIbICQACiAwAhswIBAJ8DACG0AgEAnwMAIbgCAQCfAwAhuQIBAJ8DACG6AgEAvAMAIbwCAAC7A7YCIg-KAgAAowQAMIsCAACkBAAQjAIAAKMEADCmAgEArwMAIa4CQACiAwAhrwJAAKIDACGwAgEAnwMAIbECAQCvAwAhsgJAAKIDACGzAgEAnwMAIbQCAQCfAwAhuAIBAJ8DACG5AgEAnwMAIboCAQC8AwAhvAIAALsDtgIiC6YCAQD5AwAhrgJAAPsDACGvAkAA-wMAIbACAQD5AwAhsgJAAPsDACGzAgEA-QMAIbQCAQD5AwAhuAIBAPkDACG5AgEA-QMAIboCAQCHBAAhvAIAAKYEtgIiAewCAAAAtgICC6YCAQD5AwAhrgJAAPsDACGvAkAA-wMAIbACAQD5AwAhsgJAAPsDACGzAgEA-QMAIbQCAQD5AwAhuAIBAPkDACG5AgEA-QMAIboCAQCHBAAhvAIAAKYEtgIiC6YCAQAAAAGuAkAAAAABrwJAAAAAAbACAQAAAAGyAkAAAAABswIBAAAAAbQCAQAAAAG4AgEAAAABuQIBAAAAAboCAQAAAAG8AgAAALYCAgiPAhAAAAABpgIBAAAAAa4CQAAAAAGvAkAAAAABswIBAAAAAbQCAQAAAAG-AgAAAL4CA78CIAAAAAECAAAAJwAgHgAAtgQAIAMAAAAnACAeAAC2BAAgHwAAtQQAIAEXAACoBgAwDQ4AAN8DACCKAgAA4AMAMIsCAAAlABCMAgAA4AMAMI8CEACgAwAhpgIBAAAAAa4CQACiAwAhrwJAAKIDACGxAgEArwMAIbMCAQC8AwAhtAIBALwDACG-AgAA4QO-AiO_AiAAzAMAIQIAAAAnACAXAAC1BAAgAgAAALEEACAXAACyBAAgDIoCAACwBAAwiwIAALEEABCMAgAAsAQAMI8CEACgAwAhpgIBAK8DACGuAkAAogMAIa8CQACiAwAhsQIBAK8DACGzAgEAvAMAIbQCAQC8AwAhvgIAAOEDvgIjvwIgAMwDACEMigIAALAEADCLAgAAsQQAEIwCAACwBAAwjwIQAKADACGmAgEArwMAIa4CQACiAwAhrwJAAKIDACGxAgEArwMAIbMCAQC8AwAhtAIBALwDACG-AgAA4QO-AiO_AiAAzAMAIQiPAhAA-gMAIaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIbMCAQCHBAAhtAIBAIcEACG-AgAAswS-AiO_AiAAtAQAIQHsAgAAAL4CAwHsAiAAAAABCI8CEAD6AwAhpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhswIBAIcEACG0AgEAhwQAIb4CAACzBL4CI78CIAC0BAAhCI8CEAAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAGzAgEAAAABtAIBAAAAAb4CAAAAvgIDvwIgAAAAAQWmAgEAAAABrgJAAAAAAbMCAQAAAAG0AgEAAAABvgIAAAC-AgICAAAAIwAgHgAAwwQAIAMAAAAjACAeAADDBAAgHwAAwgQAIAEXAACnBgAwCg4AAN8DACCKAgAA4gMAMIsCAAAhABCMAgAA4gMAMKYCAQAAAAGuAkAAogMAIbECAQCvAwAhswIBAJ8DACG0AgEAnwMAIb4CAADjA74CIgIAAAAjACAXAADCBAAgAgAAAL8EACAXAADABAAgCYoCAAC-BAAwiwIAAL8EABCMAgAAvgQAMKYCAQCvAwAhrgJAAKIDACGxAgEArwMAIbMCAQCfAwAhtAIBAJ8DACG-AgAA4wO-AiIJigIAAL4EADCLAgAAvwQAEIwCAAC-BAAwpgIBAK8DACGuAkAAogMAIbECAQCvAwAhswIBAJ8DACG0AgEAnwMAIb4CAADjA74CIgWmAgEA-QMAIa4CQAD7AwAhswIBAPkDACG0AgEA-QMAIb4CAADBBL4CIgHsAgAAAL4CAgWmAgEA-QMAIa4CQAD7AwAhswIBAPkDACG0AgEA-QMAIb4CAADBBL4CIgWmAgEAAAABrgJAAAAAAbMCAQAAAAG0AgEAAAABvgIAAAC-AgILDQAAxQQAIA8AAMYEACAQAADHBAAgEQAAyAQAII4CAQAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAHBAgEAAAABwgICAAAAAcMCEAAAAAEDHgAApQYAIOkCAACmBgAg7wIAANYBACAEHgAAtwQAMOkCAAC4BAAw6wIAALoEACDvAgAAuwQAMAQeAACpBAAw6QIAAKoEADDrAgAArAQAIO8CAACtBAAwBB4AAJwEADDpAgAAnQQAMOsCAACfBAAg7wIAAKAEADAIpgIBAAAAAacCAQAAAAGuAkAAAAABrwJAAAAAAcUCAQAAAAHGAkAAAAABxwJAAAAAAcgCQAAAAAECAAAAGQAgHgAA1QQAIAMAAAAZACAeAADVBAAgHwAA1AQAIAEXAACkBgAwDQoAAOUDACCKAgAA6gMAMIsCAAAXABCMAgAA6gMAMKYCAQAAAAGnAgEAnwMAIa4CQACiAwAhrwJAAKIDACHAAgEArwMAIcUCAQAAAAHGAkAAogMAIccCQACxAwAhyAJAALEDACECAAAAGQAgFwAA1AQAIAIAAADRBAAgFwAA0gQAIAyKAgAA0AQAMIsCAADRBAAQjAIAANAEADCmAgEArwMAIacCAQCfAwAhrgJAAKIDACGvAkAAogMAIcACAQCvAwAhxQIBAJ8DACHGAkAAogMAIccCQACxAwAhyAJAALEDACEMigIAANAEADCLAgAA0QQAEIwCAADQBAAwpgIBAK8DACGnAgEAnwMAIa4CQACiAwAhrwJAAKIDACHAAgEArwMAIcUCAQCfAwAhxgJAAKIDACHHAkAAsQMAIcgCQACxAwAhCKYCAQD5AwAhpwIBAPkDACGuAkAA-wMAIa8CQAD7AwAhxQIBAPkDACHGAkAA-wMAIccCQADTBAAhyAJAANMEACEB7AJAAAAAAQimAgEA-QMAIacCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcUCAQD5AwAhxgJAAPsDACHHAkAA0wQAIcgCQADTBAAhCKYCAQAAAAGnAgEAAAABrgJAAAAAAa8CQAAAAAHFAgEAAAABxgJAAAAAAccCQAAAAAHIAkAAAAABBAMAAOQEACCuAkAAAAAByQIBAAAAAcsCAAAAywICAgAAAA0AIB4AAOMEACADAAAADQAgHgAA4wQAIB8AAOEEACABFwAAowYAMAoDAADxAwAgCgAA5QMAIIoCAADvAwAwiwIAAAsAEIwCAADvAwAwrgJAAKIDACHAAgEArwMAIckCAQCfAwAhywIAAPADywIi5gIAAO4DACACAAAADQAgFwAA4QQAIAIAAADeBAAgFwAA3wQAIAeKAgAA3QQAMIsCAADeBAAQjAIAAN0EADCuAkAAogMAIcACAQCvAwAhyQIBAJ8DACHLAgAA8APLAiIHigIAAN0EADCLAgAA3gQAEIwCAADdBAAwrgJAAKIDACHAAgEArwMAIckCAQCfAwAhywIAAPADywIiA64CQAD7AwAhyQIBAPkDACHLAgAA4ATLAiIB7AIAAADLAgIEAwAA4gQAIK4CQAD7AwAhyQIBAPkDACHLAgAA4ATLAiIFHgAAngYAIB8AAKEGACDpAgAAnwYAIOoCAACgBgAg7wIAAAEAIAQDAADkBAAgrgJAAAAAAckCAQAAAAHLAgAAAMsCAgMeAACeBgAg6QIAAJ8GACDvAgAAAQAgDQkAAOYEACALAADnBAAgDAAA6AQAIKYCAQAAAAGuAkAAAAABrwJAAAAAAcwCAQAAAAHNAgEAAAABzgIBAAAAAc8CAQAAAAHQAgEAAAAB0QIBAAAAAdICAQAAAAEEHgAA1gQAMOkCAADXBAAw6wIAANkEACDvAgAA2gQAMAQeAADJBAAw6QIAAMoEADDrAgAAzAQAIO8CAADNBAAwBB4AAIwEADDpAgAAjQQAMOsCAACPBAAg7wIAAJAEADAEHgAA_QMAMOkCAAD-AwAw6wIAAIAEACDvAgAAgQQAMAAAAAAAAAAAAAAAAAAFHgAAmQYAIB8AAJwGACDpAgAAmgYAIOoCAACbBgAg7wIAAB0AIAMeAACZBgAg6QIAAJoGACDvAgAAHQAgAAAAAAAFHgAAlAYAIB8AAJcGACDpAgAAlQYAIOoCAACWBgAg7wIAAB0AIAMeAACUBgAg6QIAAJUGACDvAgAAHQAgAAAABR4AAI8GACAfAACSBgAg6QIAAJAGACDqAgAAkQYAIO8CAAAdACADHgAAjwYAIOkCAACQBgAg7wIAAB0AIAAAAAAABR4AAIoGACAfAACNBgAg6QIAAIsGACDqAgAAjAYAIO8CAAATACADHgAAigYAIOkCAACLBgAg7wIAABMAIAAAAAseAACQBQAwHwAAlAUAMOkCAACRBQAw6gIAAJIFADDrAgAAkwUAIOwCAACQBAAw7QIAAJAEADDuAgAAkAQAMO8CAACQBAAw8AIAAJUFADDxAgAAkwQAMAsKAACLBQAgDwAAxgQAIBAAAMcEACARAADIBAAgjgIBAAAAAaYCAQAAAAGuAkAAAAABrwJAAAAAAcACAQAAAAHCAgIAAAABwwIQAAAAAQIAAAAdACAeAACYBQAgAwAAAB0AIB4AAJgFACAfAACXBQAgARcAAIkGADACAAAAHQAgFwAAlwUAIAIAAACUBAAgFwAAlgUAIAeOAgEA-QMAIaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcACAQD5AwAhwgICAJYEACHDAhAA-gMAIQsKAACKBQAgDwAAmQQAIBAAAJoEACARAACbBAAgjgIBAPkDACGmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHAAgEA-QMAIcICAgCWBAAhwwIQAPoDACELCgAAiwUAIA8AAMYEACAQAADHBAAgEQAAyAQAII4CAQAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAHAAgEAAAABwgICAAAAAcMCEAAAAAEEHgAAkAUAMOkCAACRBQAw6wIAAJMFACDvAgAAkAQAMAAAAAAFHgAAhAYAIB8AAIcGACDpAgAAhQYAIOoCAACGBgAg7wIAABMAIAMeAACEBgAg6QIAAIUGACDvAgAAEwAgAAAABR4AAP8FACAfAACCBgAg6QIAAIAGACDqAgAAgQYAIO8CAAATACADHgAA_wUAIOkCAACABgAg7wIAABMAIAAAAAceAAD6BQAgHwAA_QUAIOkCAAD7BQAg6gIAAPwFACDtAgAADwAg7gIAAA8AIO8CAAD5AgAgAx4AAPoFACDpAgAA-wUAIO8CAAD5AgAgAAAAAAAABR4AAPUFACAfAAD4BQAg6QIAAPYFACDqAgAA9wUAIO8CAAABACADHgAA9QUAIOkCAAD2BQAg7wIAAAEAIAAAAAUeAADwBQAgHwAA8wUAIOkCAADxBQAg6gIAAPIFACDvAgAAAQAgAx4AAPAFACDpAgAA8QUAIO8CAAABACAAAAALHgAA0gUAMB8AANcFADDpAgAA0wUAMOoCAADUBQAw6wIAANUFACDsAgAA1gUAMO0CAADWBQAw7gIAANYFADDvAgAA1gUAMPACAADYBQAw8QIAANkFADALHgAAxgUAMB8AAMsFADDpAgAAxwUAMOoCAADIBQAw6wIAAMkFACDsAgAAygUAMO0CAADKBQAw7gIAAMoFADDvAgAAygUAMPACAADMBQAw8QIAAM0FADALHgAAvQUAMB8AAMEFADDpAgAAvgUAMOoCAAC_BQAw6wIAAMAFACDsAgAA2gQAMO0CAADaBAAw7gIAANoEADDvAgAA2gQAMPACAADCBQAw8QIAAN0EADAECgAApAUAIK4CQAAAAAHAAgEAAAABywIAAADLAgICAAAADQAgHgAAxQUAIAMAAAANACAeAADFBQAgHwAAxAUAIAEXAADvBQAwAgAAAA0AIBcAAMQFACACAAAA3gQAIBcAAMMFACADrgJAAPsDACHAAgEA-QMAIcsCAADgBMsCIgQKAACjBQAgrgJAAPsDACHAAgEA-QMAIcsCAADgBMsCIgQKAACkBQAgrgJAAAAAAcACAQAAAAHLAgAAAMsCAgymAgEAAAABrgJAAAAAAa8CQAAAAAHWAgEAAAAB1wIBAAAAAdgCAQAAAAHZAgEAAAAB2gIBAAAAAdsCQAAAAAHcAkAAAAAB3QIBAAAAAd4CAQAAAAECAAAACQAgHgAA0QUAIAMAAAAJACAeAADRBQAgHwAA0AUAIAEXAADuBQAwEQMAAPEDACCKAgAA8gMAMIsCAAAHABCMAgAA8gMAMKYCAQAAAAGuAkAAogMAIa8CQACiAwAhyQIBAJ8DACHWAgEAnwMAIdcCAQCfAwAh2AIBALwDACHZAgEAvAMAIdoCAQC8AwAh2wJAALEDACHcAkAAsQMAId0CAQC8AwAh3gIBALwDACECAAAACQAgFwAA0AUAIAIAAADOBQAgFwAAzwUAIBCKAgAAzQUAMIsCAADOBQAQjAIAAM0FADCmAgEAnwMAIa4CQACiAwAhrwJAAKIDACHJAgEAnwMAIdYCAQCfAwAh1wIBAJ8DACHYAgEAvAMAIdkCAQC8AwAh2gIBALwDACHbAkAAsQMAIdwCQACxAwAh3QIBALwDACHeAgEAvAMAIRCKAgAAzQUAMIsCAADOBQAQjAIAAM0FADCmAgEAnwMAIa4CQACiAwAhrwJAAKIDACHJAgEAnwMAIdYCAQCfAwAh1wIBAJ8DACHYAgEAvAMAIdkCAQC8AwAh2gIBALwDACHbAkAAsQMAIdwCQACxAwAh3QIBALwDACHeAgEAvAMAIQymAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHWAgEA-QMAIdcCAQD5AwAh2AIBAIcEACHZAgEAhwQAIdoCAQCHBAAh2wJAANMEACHcAkAA0wQAId0CAQCHBAAh3gIBAIcEACEMpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAh1gIBAPkDACHXAgEA-QMAIdgCAQCHBAAh2QIBAIcEACHaAgEAhwQAIdsCQADTBAAh3AJAANMEACHdAgEAhwQAId4CAQCHBAAhDKYCAQAAAAGuAkAAAAABrwJAAAAAAdYCAQAAAAHXAgEAAAAB2AIBAAAAAdkCAQAAAAHaAgEAAAAB2wJAAAAAAdwCQAAAAAHdAgEAAAAB3gIBAAAAAQemAgEAAAABrgJAAAAAAa8CQAAAAAHGAkAAAAAB3wIBAAAAAeACAQAAAAHhAgEAAAABAgAAAAUAIB4AAN0FACADAAAABQAgHgAA3QUAIB8AANwFACABFwAA7QUAMAwDAADxAwAgigIAAPMDADCLAgAAAwAQjAIAAPMDADCmAgEAAAABrgJAAKIDACGvAkAAogMAIcYCQACiAwAhyQIBAJ8DACHfAgEAAAAB4AIBALwDACHhAgEAvAMAIQIAAAAFACAXAADcBQAgAgAAANoFACAXAADbBQAgC4oCAADZBQAwiwIAANoFABCMAgAA2QUAMKYCAQCfAwAhrgJAAKIDACGvAkAAogMAIcYCQACiAwAhyQIBAJ8DACHfAgEAnwMAIeACAQC8AwAh4QIBALwDACELigIAANkFADCLAgAA2gUAEIwCAADZBQAwpgIBAJ8DACGuAkAAogMAIa8CQACiAwAhxgJAAKIDACHJAgEAnwMAId8CAQCfAwAh4AIBALwDACHhAgEAvAMAIQemAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHGAkAA-wMAId8CAQD5AwAh4AIBAIcEACHhAgEAhwQAIQemAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHGAkAA-wMAId8CAQD5AwAh4AIBAIcEACHhAgEAhwQAIQemAgEAAAABrgJAAAAAAa8CQAAAAAHGAkAAAAAB3wIBAAAAAeACAQAAAAHhAgEAAAABBB4AANIFADDpAgAA0wUAMOsCAADVBQAg7wIAANYFADAEHgAAxgUAMOkCAADHBQAw6wIAAMkFACDvAgAAygUAMAQeAAC9BQAw6QIAAL4FADDrAgAAwAUAIO8CAADaBAAwAAAABQoAAOUFACANAADmBQAgDwAA5wUAIBAAAOgFACARAADpBQAgCQgAAOoFACAJAADjBQAgCwAA6wUAIAwAAJoFACDNAgAA6wQAIM4CAADrBAAgzwIAAOsEACDQAgAA6wQAINMCAADrBAAgAQwAAJoFACAAAAABBgAA6gQAIAAFBAAA4QUAIAUAAOIFACAGAADjBQAg4wIAAOsEACDkAgAA6wQAIAemAgEAAAABrgJAAAAAAa8CQAAAAAHGAkAAAAAB3wIBAAAAAeACAQAAAAHhAgEAAAABDKYCAQAAAAGuAkAAAAABrwJAAAAAAdYCAQAAAAHXAgEAAAAB2AIBAAAAAdkCAQAAAAHaAgEAAAAB2wJAAAAAAdwCQAAAAAHdAgEAAAAB3gIBAAAAAQOuAkAAAAABwAIBAAAAAcsCAAAAywICCwUAAN8FACAGAADgBQAgjgIBAAAAAaYCAQAAAAGnAgEAAAABrgJAAAAAAa8CQAAAAAHLAgEAAAAB4gIgAAAAAeMCAQAAAAHkAgEAAAABAgAAAAEAIB4AAPAFACADAAAANwAgHgAA8AUAIB8AAPQFACANAAAANwAgBQAAuwUAIAYAALwFACAXAAD0BQAgjgIBAPkDACGmAgEA-QMAIacCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcsCAQD5AwAh4gIgALQEACHjAgEAhwQAIeQCAQCHBAAhCwUAALsFACAGAAC8BQAgjgIBAPkDACGmAgEA-QMAIacCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcsCAQD5AwAh4gIgALQEACHjAgEAhwQAIeQCAQCHBAAhCwQAAN4FACAGAADgBQAgjgIBAAAAAaYCAQAAAAGnAgEAAAABrgJAAAAAAa8CQAAAAAHLAgEAAAAB4gIgAAAAAeMCAQAAAAHkAgEAAAABAgAAAAEAIB4AAPUFACADAAAANwAgHgAA9QUAIB8AAPkFACANAAAANwAgBAAAugUAIAYAALwFACAXAAD5BQAgjgIBAPkDACGmAgEA-QMAIacCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcsCAQD5AwAh4gIgALQEACHjAgEAhwQAIeQCAQCHBAAhCwQAALoFACAGAAC8BQAgjgIBAPkDACGmAgEA-QMAIacCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcsCAQD5AwAh4gIgALQEACHjAgEAhwQAIeQCAQCHBAAhBY0CAQAAAAGOAgEAAAABjwIQAAAAAZACgAAAAAGRAkAAAAABAgAAAPkCACAeAAD6BQAgAwAAAA8AIB4AAPoFACAfAAD-BQAgBwAAAA8AIBcAAP4FACCNAgEA-QMAIY4CAQD5AwAhjwIQAPoDACGQAoAAAAABkQJAAPsDACEFjQIBAPkDACGOAgEA-QMAIY8CEAD6AwAhkAKAAAAAAZECQAD7AwAhDggAAKkFACALAADnBAAgDAAA6AQAIKYCAQAAAAGuAkAAAAABrwJAAAAAAcwCAQAAAAHNAgEAAAABzgIBAAAAAc8CAQAAAAHQAgEAAAAB0QIBAAAAAdICAQAAAAHTAgEAAAABAgAAABMAIB4AAP8FACADAAAAEQAgHgAA_wUAIB8AAIMGACAQAAAAEQAgCAAAqAUAIAsAAIoEACAMAACLBAAgFwAAgwYAIKYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcwCAQD5AwAhzQIBAIcEACHOAgEAhwQAIc8CAQCHBAAh0AIBAIcEACHRAgEA-QMAIdICAQD5AwAh0wIBAIcEACEOCAAAqAUAIAsAAIoEACAMAACLBAAgpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhzAIBAPkDACHNAgEAhwQAIc4CAQCHBAAhzwIBAIcEACHQAgEAhwQAIdECAQD5AwAh0gIBAPkDACHTAgEAhwQAIQ4IAACpBQAgCQAA5gQAIAwAAOgEACCmAgEAAAABrgJAAAAAAa8CQAAAAAHMAgEAAAABzQIBAAAAAc4CAQAAAAHPAgEAAAAB0AIBAAAAAdECAQAAAAHSAgEAAAAB0wIBAAAAAQIAAAATACAeAACEBgAgAwAAABEAIB4AAIQGACAfAACIBgAgEAAAABEAIAgAAKgFACAJAACJBAAgDAAAiwQAIBcAAIgGACCmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHMAgEA-QMAIc0CAQCHBAAhzgIBAIcEACHPAgEAhwQAIdACAQCHBAAh0QIBAPkDACHSAgEA-QMAIdMCAQCHBAAhDggAAKgFACAJAACJBAAgDAAAiwQAIKYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcwCAQD5AwAhzQIBAIcEACHOAgEAhwQAIc8CAQCHBAAh0AIBAIcEACHRAgEA-QMAIdICAQD5AwAh0wIBAIcEACEHjgIBAAAAAaYCAQAAAAGuAkAAAAABrwJAAAAAAcACAQAAAAHCAgIAAAABwwIQAAAAAQ4IAACpBQAgCQAA5gQAIAsAAOcEACCmAgEAAAABrgJAAAAAAa8CQAAAAAHMAgEAAAABzQIBAAAAAc4CAQAAAAHPAgEAAAAB0AIBAAAAAdECAQAAAAHSAgEAAAAB0wIBAAAAAQIAAAATACAeAACKBgAgAwAAABEAIB4AAIoGACAfAACOBgAgEAAAABEAIAgAAKgFACAJAACJBAAgCwAAigQAIBcAAI4GACCmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHMAgEA-QMAIc0CAQCHBAAhzgIBAIcEACHPAgEAhwQAIdACAQCHBAAh0QIBAPkDACHSAgEA-QMAIdMCAQCHBAAhDggAAKgFACAJAACJBAAgCwAAigQAIKYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcwCAQD5AwAhzQIBAIcEACHOAgEAhwQAIc8CAQCHBAAh0AIBAIcEACHRAgEA-QMAIdICAQD5AwAh0wIBAIcEACEMCgAAiwUAIA0AAMUEACAQAADHBAAgEQAAyAQAII4CAQAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAHAAgEAAAABwQIBAAAAAcICAgAAAAHDAhAAAAABAgAAAB0AIB4AAI8GACADAAAAGwAgHgAAjwYAIB8AAJMGACAOAAAAGwAgCgAAigUAIA0AAJgEACAQAACaBAAgEQAAmwQAIBcAAJMGACCOAgEA-QMAIaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcACAQD5AwAhwQIBAPkDACHCAgIAlgQAIcMCEAD6AwAhDAoAAIoFACANAACYBAAgEAAAmgQAIBEAAJsEACCOAgEA-QMAIaYCAQD5AwAhrgJAAPsDACGvAkAA-wMAIcACAQD5AwAhwQIBAPkDACHCAgIAlgQAIcMCEAD6AwAhDAoAAIsFACANAADFBAAgDwAAxgQAIBEAAMgEACCOAgEAAAABpgIBAAAAAa4CQAAAAAGvAkAAAAABwAIBAAAAAcECAQAAAAHCAgIAAAABwwIQAAAAAQIAAAAdACAeAACUBgAgAwAAABsAIB4AAJQGACAfAACYBgAgDgAAABsAIAoAAIoFACANAACYBAAgDwAAmQQAIBEAAJsEACAXAACYBgAgjgIBAPkDACGmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHAAgEA-QMAIcECAQD5AwAhwgICAJYEACHDAhAA-gMAIQwKAACKBQAgDQAAmAQAIA8AAJkEACARAACbBAAgjgIBAPkDACGmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACHAAgEA-QMAIcECAQD5AwAhwgICAJYEACHDAhAA-gMAIQwKAACLBQAgDQAAxQQAIA8AAMYEACAQAADHBAAgjgIBAAAAAaYCAQAAAAGuAkAAAAABrwJAAAAAAcACAQAAAAHBAgEAAAABwgICAAAAAcMCEAAAAAECAAAAHQAgHgAAmQYAIAMAAAAbACAeAACZBgAgHwAAnQYAIA4AAAAbACAKAACKBQAgDQAAmAQAIA8AAJkEACAQAACaBAAgFwAAnQYAII4CAQD5AwAhpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhwAIBAPkDACHBAgEA-QMAIcICAgCWBAAhwwIQAPoDACEMCgAAigUAIA0AAJgEACAPAACZBAAgEAAAmgQAII4CAQD5AwAhpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhwAIBAPkDACHBAgEA-QMAIcICAgCWBAAhwwIQAPoDACELBAAA3gUAIAUAAN8FACCOAgEAAAABpgIBAAAAAacCAQAAAAGuAkAAAAABrwJAAAAAAcsCAQAAAAHiAiAAAAAB4wIBAAAAAeQCAQAAAAECAAAAAQAgHgAAngYAIAMAAAA3ACAeAACeBgAgHwAAogYAIA0AAAA3ACAEAAC6BQAgBQAAuwUAIBcAAKIGACCOAgEA-QMAIaYCAQD5AwAhpwIBAPkDACGuAkAA-wMAIa8CQAD7AwAhywIBAPkDACHiAiAAtAQAIeMCAQCHBAAh5AIBAIcEACELBAAAugUAIAUAALsFACCOAgEA-QMAIaYCAQD5AwAhpwIBAPkDACGuAkAA-wMAIa8CQAD7AwAhywIBAPkDACHiAiAAtAQAIeMCAQCHBAAh5AIBAIcEACEDrgJAAAAAAckCAQAAAAHLAgAAAMsCAgimAgEAAAABpwIBAAAAAa4CQAAAAAGvAkAAAAABxQIBAAAAAcYCQAAAAAHHAkAAAAAByAJAAAAAAQaOAgEAAAABpgIBAAAAAa4CQAAAAAGvAkAAAAABvwIgAAAAAcQCAQAAAAECAAAA1gEAIB4AAKUGACAFpgIBAAAAAa4CQAAAAAGzAgEAAAABtAIBAAAAAb4CAAAAvgICCI8CEAAAAAGmAgEAAAABrgJAAAAAAa8CQAAAAAGzAgEAAAABtAIBAAAAAb4CAAAAvgIDvwIgAAAAAQumAgEAAAABrgJAAAAAAa8CQAAAAAGwAgEAAAABsgJAAAAAAbMCAQAAAAG0AgEAAAABuAIBAAAAAbkCAQAAAAG6AgEAAAABvAIAAAC2AgIDAAAA2QEAIB4AAKUGACAfAACsBgAgCAAAANkBACAXAACsBgAgjgIBAPkDACGmAgEA-QMAIa4CQAD7AwAhrwJAAPsDACG_AiAAtAQAIcQCAQD5AwAhBo4CAQD5AwAhpgIBAPkDACGuAkAA-wMAIa8CQAD7AwAhvwIgALQEACHEAgEA-QMAIQeOAgEAAAABpgIBAAAAAa4CQAAAAAGvAkAAAAABwQIBAAAAAcICAgAAAAHDAhAAAAABCqYCAQAAAAGuAkAAAAABrwJAAAAAAcwCAQAAAAHNAgEAAAABzgIBAAAAAc8CAQAAAAHQAgEAAAAB0QIBAAAAAdICAQAAAAEEBAYCBQoDBg4EBwARAQMAAQEDAAECAwABCgAFBQcAEAgQBgkWBAsaCAweCQIGFAUHAAcBBhUAAQoABQYHAA8KAAUNAAoPJAwQKA0RLA4CBwALDB8JAQwgAAEOAAkBDgAJAQ4ACQMPLQAQLgARLwADCTAACzEADDIAAwQzAAU0AAY1AAAAAAMHABYkABclABgAAAADBwAWJAAXJQAYAQMAAQEDAAEDBwAdJAAeJQAfAAAAAwcAHSQAHiUAHwEDAAEBAwABAwcAJCQAJSUAJgAAAAMHACQkACUlACYAAAADBwAsJAAtJQAuAAAAAwcALCQALSUALgEInAEGAQiiAQYDBwAzJAA0JQA1AAAAAwcAMyQANCUANQIDAAEKAAUCAwABCgAFAwcAOiQAOyUAPAAAAAMHADokADslADwBCgAFAQoABQMHAEEkAEIlAEMAAAADBwBBJABCJQBDAAADBwBIJABJJQBKAAAAAwcASCQASSUASgIKAAUNAAoCCgAFDQAKBQcATyQAUiUAU6YBAFCnAQBRAAAAAAAFBwBPJABSJQBTpgEAUKcBAFEBDgAJAQ4ACQMHAFgkAFklAFoAAAADBwBYJABZJQBaAQ4ACQEOAAkFBwBfJABiJQBjpgEAYKcBAGEAAAAAAAUHAF8kAGIlAGOmAQBgpwEAYQEOAAkBDgAJAwcAaCQAaSUAagAAAAMHAGgkAGklAGoAAAADBwBwJABxJQByAAAAAwcAcCQAcSUAcgAAAAUHAHgkAHslAHymAQB5pwEAegAAAAAABQcAeCQAeyUAfKYBAHmnAQB6AAAFBwCBASQAhAElAIUBpgEAggGnAQCDAQAAAAAABQcAgQEkAIQBJQCFAaYBAIIBpwEAgwESAgETNgEUOQEVOgEWOwEYPQEZPxIaQBMbQgEcRBIdRRQgRgEhRwEiSBImSxUnTBkoTQIpTgIqTwIrUAIsUQItUwIuVRIvVhowWAIxWhIyWxszXAI0XQI1XhI2YRw3YiA4YwM5ZAM6ZQM7ZgM8ZwM9aQM-axI_bCFAbgNBcBJCcSJDcgNEcwNFdBJGdyNHeCdIeihJeyhKfihLfyhMgAEoTYIBKE6EARJPhQEpUIcBKFGJARJSigEqU4sBKFSMAShVjQESVpABK1eRAS9YkgEFWZMBBVqUAQVblQEFXJYBBV2YAQVemgESX5sBMGCeAQVhoAESYqEBMWOjAQVkpAEFZaUBEmaoATJnqQE2aKoBBGmrAQRqrAEEa60BBGyuAQRtsAEEbrIBEm-zATdwtQEEcbcBEnK4AThzuQEEdLoBBHW7ARJ2vgE5d78BPXjAAQh5wQEIesIBCHvDAQh8xAEIfcYBCH7IARJ_yQE-gAHLAQiBAc0BEoIBzgE_gwHPAQiEAdABCIUB0QEShgHUAUCHAdUBRIgB1wEKiQHYAQqKAdsBCosB3AEKjAHdAQqNAd8BCo4B4QESjwHiAUWQAeQBCpEB5gESkgHnAUaTAegBCpQB6QEKlQHqARKWAe0BR5cB7gFLmAHvAQmZAfABCZoB8QEJmwHyAQmcAfMBCZ0B9QEJngH3ARKfAfgBTKAB-gEJoQH8ARKiAf0BTaMB_gEJpAH_AQmlAYACEqgBgwJOqQGEAlSqAYUCDKsBhgIMrAGHAgytAYgCDK4BiQIMrwGLAgywAY0CErEBjgJVsgGQAgyzAZICErQBkwJWtQGUAgy2AZUCDLcBlgISuAGZAle5AZoCW7oBmwINuwGcAg28AZ0CDb0BngINvgGfAg2_AaECDcABowISwQGkAlzCAaYCDcMBqAISxAGpAl3FAaoCDcYBqwINxwGsAhLIAa8CXskBsAJkygGxAg7LAbICDswBswIOzQG0Ag7OAbUCDs8BtwIO0AG5AhLRAboCZdIBvAIO0wG-AhLUAb8CZtUBwAIO1gHBAg7XAcICEtgBxQJn2QHGAmvaAcgCbNsByQJs3AHMAmzdAc0CbN4BzgJs3wHQAmzgAdICEuEB0wJt4gHVAmzjAdcCEuQB2AJu5QHZAmzmAdoCbOcB2wIS6AHeAm_pAd8Cc-oB4QJ06wHiAnTsAeUCdO0B5gJ07gHnAnTvAekCdPAB6wIS8QHsAnXyAe4CdPMB8AIS9AHxAnb1AfICdPYB8wJ09wH0AhL4AfcCd_kB-AJ9-gH6Agb7AfsCBvwB_QIG_QH-Agb-Af8CBv8BgQMGgAKDAxKBAoQDfoIChgMGgwKIAxKEAokDf4UCigMGhgKLAwaHAowDEogCjwOAAYkCkAOGAQ"
}
async function decodeBase64AsWasm(wasmBase64: string): Promise {
@@ -318,16 +318,6 @@ export interface PrismaClient<
*/
get courtBookingLog(): Prisma.CourtBookingLogDelegate;
- /**
- * `prisma.onboardingRequest`: Exposes CRUD operations for the **OnboardingRequest** model.
- * Example usage:
- * ```ts
- * // Fetch zero or more OnboardingRequests
- * const onboardingRequests = await prisma.onboardingRequest.findMany()
- * ```
- */
- get onboardingRequest(): Prisma.OnboardingRequestDelegate;
-
/**
* `prisma.passwordResetRequest`: Exposes CRUD operations for the **PasswordResetRequest** model.
* Example usage:
diff --git a/apps/backend/src/generated/prisma/internal/prismaNamespace.ts b/apps/backend/src/generated/prisma/internal/prismaNamespace.ts
index fc6691e..7eebafc 100644
--- a/apps/backend/src/generated/prisma/internal/prismaNamespace.ts
+++ b/apps/backend/src/generated/prisma/internal/prismaNamespace.ts
@@ -397,7 +397,6 @@ export const ModelName = {
CourtPriceRule: 'CourtPriceRule',
CourtBooking: 'CourtBooking',
CourtBookingLog: 'CourtBookingLog',
- OnboardingRequest: 'OnboardingRequest',
PasswordResetRequest: 'PasswordResetRequest',
Plan: 'Plan'
} as const
@@ -415,7 +414,7 @@ export type TypeMap
- fields: Prisma.OnboardingRequestFieldRefs
- operations: {
- findUnique: {
- args: Prisma.OnboardingRequestFindUniqueArgs
- result: runtime.Types.Utils.PayloadToResult | null
- }
- findUniqueOrThrow: {
- args: Prisma.OnboardingRequestFindUniqueOrThrowArgs
- result: runtime.Types.Utils.PayloadToResult
- }
- findFirst: {
- args: Prisma.OnboardingRequestFindFirstArgs
- result: runtime.Types.Utils.PayloadToResult | null
- }
- findFirstOrThrow: {
- args: Prisma.OnboardingRequestFindFirstOrThrowArgs
- result: runtime.Types.Utils.PayloadToResult
- }
- findMany: {
- args: Prisma.OnboardingRequestFindManyArgs
- result: runtime.Types.Utils.PayloadToResult[]
- }
- create: {
- args: Prisma.OnboardingRequestCreateArgs
- result: runtime.Types.Utils.PayloadToResult
- }
- createMany: {
- args: Prisma.OnboardingRequestCreateManyArgs
- result: BatchPayload
- }
- createManyAndReturn: {
- args: Prisma.OnboardingRequestCreateManyAndReturnArgs
- result: runtime.Types.Utils.PayloadToResult[]
- }
- delete: {
- args: Prisma.OnboardingRequestDeleteArgs
- result: runtime.Types.Utils.PayloadToResult
- }
- update: {
- args: Prisma.OnboardingRequestUpdateArgs
- result: runtime.Types.Utils.PayloadToResult
- }
- deleteMany: {
- args: Prisma.OnboardingRequestDeleteManyArgs
- result: BatchPayload
- }
- updateMany: {
- args: Prisma.OnboardingRequestUpdateManyArgs
- result: BatchPayload
- }
- updateManyAndReturn: {
- args: Prisma.OnboardingRequestUpdateManyAndReturnArgs
- result: runtime.Types.Utils.PayloadToResult[]
- }
- upsert: {
- args: Prisma.OnboardingRequestUpsertArgs
- result: runtime.Types.Utils.PayloadToResult
- }
- aggregate: {
- args: Prisma.OnboardingRequestAggregateArgs
- result: runtime.Types.Utils.Optional
- }
- groupBy: {
- args: Prisma.OnboardingRequestGroupByArgs
- result: runtime.Types.Utils.Optional[]
- }
- count: {
- args: Prisma.OnboardingRequestCountArgs
- result: runtime.Types.Utils.Optional | number
- }
- }
- }
PasswordResetRequest: {
payload: Prisma.$PasswordResetRequestPayload
fields: Prisma.PasswordResetRequestFieldRefs
@@ -1806,6 +1731,7 @@ export const CourtBookingScalarFieldEnum = {
endTime: 'endTime',
customerName: 'customerName',
customerPhone: 'customerPhone',
+ customerEmail: 'customerEmail',
status: 'status',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
@@ -1825,30 +1751,13 @@ export const CourtBookingLogScalarFieldEnum = {
newStatus: 'newStatus',
customerName: 'customerName',
customerPhone: 'customerPhone',
+ customerEmail: 'customerEmail',
changedAt: 'changedAt'
} as const
export type CourtBookingLogScalarFieldEnum = (typeof CourtBookingLogScalarFieldEnum)[keyof typeof CourtBookingLogScalarFieldEnum]
-export const OnboardingRequestScalarFieldEnum = {
- id: 'id',
- fullName: 'fullName',
- email: 'email',
- otpHash: 'otpHash',
- otpExpiresAt: 'otpExpiresAt',
- otpAttempts: 'otpAttempts',
- otpLastSentAt: 'otpLastSentAt',
- otpResendCount: 'otpResendCount',
- emailVerifiedAt: 'emailVerifiedAt',
- completedAt: 'completedAt',
- createdAt: 'createdAt',
- updatedAt: 'updatedAt'
-} as const
-
-export type OnboardingRequestScalarFieldEnum = (typeof OnboardingRequestScalarFieldEnum)[keyof typeof OnboardingRequestScalarFieldEnum]
-
-
export const PasswordResetRequestScalarFieldEnum = {
id: 'id',
email: 'email',
@@ -2162,7 +2071,6 @@ export type GlobalOmitConfig = {
courtPriceRule?: Prisma.CourtPriceRuleOmit
courtBooking?: Prisma.CourtBookingOmit
courtBookingLog?: Prisma.CourtBookingLogOmit
- onboardingRequest?: Prisma.OnboardingRequestOmit
passwordResetRequest?: Prisma.PasswordResetRequestOmit
plan?: Prisma.PlanOmit
}
diff --git a/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts b/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts
index 659ab1a..51b012f 100644
--- a/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts
+++ b/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts
@@ -64,7 +64,6 @@ export const ModelName = {
CourtPriceRule: 'CourtPriceRule',
CourtBooking: 'CourtBooking',
CourtBookingLog: 'CourtBookingLog',
- OnboardingRequest: 'OnboardingRequest',
PasswordResetRequest: 'PasswordResetRequest',
Plan: 'Plan'
} as const
@@ -249,6 +248,7 @@ export const CourtBookingScalarFieldEnum = {
endTime: 'endTime',
customerName: 'customerName',
customerPhone: 'customerPhone',
+ customerEmail: 'customerEmail',
status: 'status',
createdAt: 'createdAt',
updatedAt: 'updatedAt'
@@ -268,30 +268,13 @@ export const CourtBookingLogScalarFieldEnum = {
newStatus: 'newStatus',
customerName: 'customerName',
customerPhone: 'customerPhone',
+ customerEmail: 'customerEmail',
changedAt: 'changedAt'
} as const
export type CourtBookingLogScalarFieldEnum = (typeof CourtBookingLogScalarFieldEnum)[keyof typeof CourtBookingLogScalarFieldEnum]
-export const OnboardingRequestScalarFieldEnum = {
- id: 'id',
- fullName: 'fullName',
- email: 'email',
- otpHash: 'otpHash',
- otpExpiresAt: 'otpExpiresAt',
- otpAttempts: 'otpAttempts',
- otpLastSentAt: 'otpLastSentAt',
- otpResendCount: 'otpResendCount',
- emailVerifiedAt: 'emailVerifiedAt',
- completedAt: 'completedAt',
- createdAt: 'createdAt',
- updatedAt: 'updatedAt'
-} as const
-
-export type OnboardingRequestScalarFieldEnum = (typeof OnboardingRequestScalarFieldEnum)[keyof typeof OnboardingRequestScalarFieldEnum]
-
-
export const PasswordResetRequestScalarFieldEnum = {
id: 'id',
email: 'email',
diff --git a/apps/backend/src/generated/prisma/models.ts b/apps/backend/src/generated/prisma/models.ts
index e243233..90f253a 100644
--- a/apps/backend/src/generated/prisma/models.ts
+++ b/apps/backend/src/generated/prisma/models.ts
@@ -21,7 +21,6 @@ export type * from './models/CourtAvailability'
export type * from './models/CourtPriceRule'
export type * from './models/CourtBooking'
export type * from './models/CourtBookingLog'
-export type * from './models/OnboardingRequest'
export type * from './models/PasswordResetRequest'
export type * from './models/Plan'
export type * from './commonInputTypes'
\ No newline at end of file
diff --git a/apps/backend/src/generated/prisma/models/CourtBooking.ts b/apps/backend/src/generated/prisma/models/CourtBooking.ts
index 13f0a2c..00ca840 100644
--- a/apps/backend/src/generated/prisma/models/CourtBooking.ts
+++ b/apps/backend/src/generated/prisma/models/CourtBooking.ts
@@ -33,6 +33,7 @@ export type CourtBookingMinAggregateOutputType = {
endTime: string | null
customerName: string | null
customerPhone: string | null
+ customerEmail: string | null
status: $Enums.CourtBookingStatus | null
createdAt: Date | null
updatedAt: Date | null
@@ -47,6 +48,7 @@ export type CourtBookingMaxAggregateOutputType = {
endTime: string | null
customerName: string | null
customerPhone: string | null
+ customerEmail: string | null
status: $Enums.CourtBookingStatus | null
createdAt: Date | null
updatedAt: Date | null
@@ -61,6 +63,7 @@ export type CourtBookingCountAggregateOutputType = {
endTime: number
customerName: number
customerPhone: number
+ customerEmail: number
status: number
createdAt: number
updatedAt: number
@@ -77,6 +80,7 @@ export type CourtBookingMinAggregateInputType = {
endTime?: true
customerName?: true
customerPhone?: true
+ customerEmail?: true
status?: true
createdAt?: true
updatedAt?: true
@@ -91,6 +95,7 @@ export type CourtBookingMaxAggregateInputType = {
endTime?: true
customerName?: true
customerPhone?: true
+ customerEmail?: true
status?: true
createdAt?: true
updatedAt?: true
@@ -105,6 +110,7 @@ export type CourtBookingCountAggregateInputType = {
endTime?: true
customerName?: true
customerPhone?: true
+ customerEmail?: true
status?: true
createdAt?: true
updatedAt?: true
@@ -192,6 +198,7 @@ export type CourtBookingGroupByOutputType = {
endTime: string
customerName: string
customerPhone: string
+ customerEmail: string | null
status: $Enums.CourtBookingStatus
createdAt: Date
updatedAt: Date
@@ -227,6 +234,7 @@ export type CourtBookingWhereInput = {
endTime?: Prisma.StringFilter<"CourtBooking"> | string
customerName?: Prisma.StringFilter<"CourtBooking"> | string
customerPhone?: Prisma.StringFilter<"CourtBooking"> | string
+ customerEmail?: Prisma.StringNullableFilter<"CourtBooking"> | string | null
status?: Prisma.EnumCourtBookingStatusFilter<"CourtBooking"> | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFilter<"CourtBooking"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"CourtBooking"> | Date | string
@@ -242,6 +250,7 @@ export type CourtBookingOrderByWithRelationInput = {
endTime?: Prisma.SortOrder
customerName?: Prisma.SortOrder
customerPhone?: Prisma.SortOrder
+ customerEmail?: Prisma.SortOrderInput | Prisma.SortOrder
status?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
@@ -261,6 +270,7 @@ export type CourtBookingWhereUniqueInput = Prisma.AtLeast<{
endTime?: Prisma.StringFilter<"CourtBooking"> | string
customerName?: Prisma.StringFilter<"CourtBooking"> | string
customerPhone?: Prisma.StringFilter<"CourtBooking"> | string
+ customerEmail?: Prisma.StringNullableFilter<"CourtBooking"> | string | null
status?: Prisma.EnumCourtBookingStatusFilter<"CourtBooking"> | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFilter<"CourtBooking"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"CourtBooking"> | Date | string
@@ -276,6 +286,7 @@ export type CourtBookingOrderByWithAggregationInput = {
endTime?: Prisma.SortOrder
customerName?: Prisma.SortOrder
customerPhone?: Prisma.SortOrder
+ customerEmail?: Prisma.SortOrderInput | Prisma.SortOrder
status?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
@@ -296,6 +307,7 @@ export type CourtBookingScalarWhereWithAggregatesInput = {
endTime?: Prisma.StringWithAggregatesFilter<"CourtBooking"> | string
customerName?: Prisma.StringWithAggregatesFilter<"CourtBooking"> | string
customerPhone?: Prisma.StringWithAggregatesFilter<"CourtBooking"> | string
+ customerEmail?: Prisma.StringNullableWithAggregatesFilter<"CourtBooking"> | string | null
status?: Prisma.EnumCourtBookingStatusWithAggregatesFilter<"CourtBooking"> | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeWithAggregatesFilter<"CourtBooking"> | Date | string
updatedAt?: Prisma.DateTimeWithAggregatesFilter<"CourtBooking"> | Date | string
@@ -309,6 +321,7 @@ export type CourtBookingCreateInput = {
endTime: string
customerName: string
customerPhone: string
+ customerEmail?: string | null
status?: $Enums.CourtBookingStatus
createdAt?: Date | string
updatedAt?: Date | string
@@ -324,6 +337,7 @@ export type CourtBookingUncheckedCreateInput = {
endTime: string
customerName: string
customerPhone: string
+ customerEmail?: string | null
status?: $Enums.CourtBookingStatus
createdAt?: Date | string
updatedAt?: Date | string
@@ -337,6 +351,7 @@ export type CourtBookingUpdateInput = {
endTime?: Prisma.StringFieldUpdateOperationsInput | string
customerName?: Prisma.StringFieldUpdateOperationsInput | string
customerPhone?: Prisma.StringFieldUpdateOperationsInput | string
+ customerEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
status?: Prisma.EnumCourtBookingStatusFieldUpdateOperationsInput | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -352,6 +367,7 @@ export type CourtBookingUncheckedUpdateInput = {
endTime?: Prisma.StringFieldUpdateOperationsInput | string
customerName?: Prisma.StringFieldUpdateOperationsInput | string
customerPhone?: Prisma.StringFieldUpdateOperationsInput | string
+ customerEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
status?: Prisma.EnumCourtBookingStatusFieldUpdateOperationsInput | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -366,6 +382,7 @@ export type CourtBookingCreateManyInput = {
endTime: string
customerName: string
customerPhone: string
+ customerEmail?: string | null
status?: $Enums.CourtBookingStatus
createdAt?: Date | string
updatedAt?: Date | string
@@ -379,6 +396,7 @@ export type CourtBookingUpdateManyMutationInput = {
endTime?: Prisma.StringFieldUpdateOperationsInput | string
customerName?: Prisma.StringFieldUpdateOperationsInput | string
customerPhone?: Prisma.StringFieldUpdateOperationsInput | string
+ customerEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
status?: Prisma.EnumCourtBookingStatusFieldUpdateOperationsInput | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -393,6 +411,7 @@ export type CourtBookingUncheckedUpdateManyInput = {
endTime?: Prisma.StringFieldUpdateOperationsInput | string
customerName?: Prisma.StringFieldUpdateOperationsInput | string
customerPhone?: Prisma.StringFieldUpdateOperationsInput | string
+ customerEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
status?: Prisma.EnumCourtBookingStatusFieldUpdateOperationsInput | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -423,6 +442,7 @@ export type CourtBookingCountOrderByAggregateInput = {
endTime?: Prisma.SortOrder
customerName?: Prisma.SortOrder
customerPhone?: Prisma.SortOrder
+ customerEmail?: Prisma.SortOrder
status?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
@@ -437,6 +457,7 @@ export type CourtBookingMaxOrderByAggregateInput = {
endTime?: Prisma.SortOrder
customerName?: Prisma.SortOrder
customerPhone?: Prisma.SortOrder
+ customerEmail?: Prisma.SortOrder
status?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
@@ -451,6 +472,7 @@ export type CourtBookingMinOrderByAggregateInput = {
endTime?: Prisma.SortOrder
customerName?: Prisma.SortOrder
customerPhone?: Prisma.SortOrder
+ customerEmail?: Prisma.SortOrder
status?: Prisma.SortOrder
createdAt?: Prisma.SortOrder
updatedAt?: Prisma.SortOrder
@@ -510,6 +532,7 @@ export type CourtBookingCreateWithoutCourtInput = {
endTime: string
customerName: string
customerPhone: string
+ customerEmail?: string | null
status?: $Enums.CourtBookingStatus
createdAt?: Date | string
updatedAt?: Date | string
@@ -523,6 +546,7 @@ export type CourtBookingUncheckedCreateWithoutCourtInput = {
endTime: string
customerName: string
customerPhone: string
+ customerEmail?: string | null
status?: $Enums.CourtBookingStatus
createdAt?: Date | string
updatedAt?: Date | string
@@ -566,6 +590,7 @@ export type CourtBookingScalarWhereInput = {
endTime?: Prisma.StringFilter<"CourtBooking"> | string
customerName?: Prisma.StringFilter<"CourtBooking"> | string
customerPhone?: Prisma.StringFilter<"CourtBooking"> | string
+ customerEmail?: Prisma.StringNullableFilter<"CourtBooking"> | string | null
status?: Prisma.EnumCourtBookingStatusFilter<"CourtBooking"> | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFilter<"CourtBooking"> | Date | string
updatedAt?: Prisma.DateTimeFilter<"CourtBooking"> | Date | string
@@ -579,6 +604,7 @@ export type CourtBookingCreateManyCourtInput = {
endTime: string
customerName: string
customerPhone: string
+ customerEmail?: string | null
status?: $Enums.CourtBookingStatus
createdAt?: Date | string
updatedAt?: Date | string
@@ -592,6 +618,7 @@ export type CourtBookingUpdateWithoutCourtInput = {
endTime?: Prisma.StringFieldUpdateOperationsInput | string
customerName?: Prisma.StringFieldUpdateOperationsInput | string
customerPhone?: Prisma.StringFieldUpdateOperationsInput | string
+ customerEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
status?: Prisma.EnumCourtBookingStatusFieldUpdateOperationsInput | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -605,6 +632,7 @@ export type CourtBookingUncheckedUpdateWithoutCourtInput = {
endTime?: Prisma.StringFieldUpdateOperationsInput | string
customerName?: Prisma.StringFieldUpdateOperationsInput | string
customerPhone?: Prisma.StringFieldUpdateOperationsInput | string
+ customerEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
status?: Prisma.EnumCourtBookingStatusFieldUpdateOperationsInput | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -618,6 +646,7 @@ export type CourtBookingUncheckedUpdateManyWithoutCourtInput = {
endTime?: Prisma.StringFieldUpdateOperationsInput | string
customerName?: Prisma.StringFieldUpdateOperationsInput | string
customerPhone?: Prisma.StringFieldUpdateOperationsInput | string
+ customerEmail?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
status?: Prisma.EnumCourtBookingStatusFieldUpdateOperationsInput | $Enums.CourtBookingStatus
createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
@@ -634,6 +663,7 @@ export type CourtBookingSelect = runtime.Types.Extensions.GetOmit<"id" | "bookingCode" | "courtId" | "bookingDate" | "startTime" | "endTime" | "customerName" | "customerPhone" | "status" | "createdAt" | "updatedAt", ExtArgs["result"]["courtBooking"]>
+export type CourtBookingOmit = runtime.Types.Extensions.GetOmit<"id" | "bookingCode" | "courtId" | "bookingDate" | "startTime" | "endTime" | "customerName" | "customerPhone" | "customerEmail" | "status" | "createdAt" | "updatedAt", ExtArgs["result"]["courtBooking"]>
export type CourtBookingInclude = {
court?: boolean | Prisma.CourtDefaultArgs
}
@@ -709,6 +742,7 @@ export type $CourtBookingPayload
readonly customerName: Prisma.FieldRef<"CourtBooking", 'String'>
readonly customerPhone: Prisma.FieldRef<"CourtBooking", 'String'>
+ readonly customerEmail: Prisma.FieldRef<"CourtBooking", 'String'>
readonly status: Prisma.FieldRef<"CourtBooking", 'CourtBookingStatus'>
readonly createdAt: Prisma.FieldRef<"CourtBooking", 'DateTime'>
readonly updatedAt: Prisma.FieldRef<"CourtBooking", 'DateTime'>
diff --git a/apps/backend/src/generated/prisma/models/OnboardingRequest.ts b/apps/backend/src/generated/prisma/models/OnboardingRequest.ts
deleted file mode 100644
index b7f62cc..0000000
--- a/apps/backend/src/generated/prisma/models/OnboardingRequest.ts
+++ /dev/null
@@ -1,1395 +0,0 @@
-
-/* !!! This is code generated by Prisma. Do not edit directly. !!! */
-/* eslint-disable */
-// biome-ignore-all lint: generated file
-// @ts-nocheck
-/*
- * This file exports the `OnboardingRequest` model and its related types.
- *
- * 🟢 You can import this file directly.
- */
-import type * as runtime from "@prisma/client/runtime/client"
-import type * as $Enums from "../enums"
-import type * as Prisma from "../internal/prismaNamespace"
-
-/**
- * Model OnboardingRequest
- *
- */
-export type OnboardingRequestModel = runtime.Types.Result.DefaultSelection
-
-export type AggregateOnboardingRequest = {
- _count: OnboardingRequestCountAggregateOutputType | null
- _avg: OnboardingRequestAvgAggregateOutputType | null
- _sum: OnboardingRequestSumAggregateOutputType | null
- _min: OnboardingRequestMinAggregateOutputType | null
- _max: OnboardingRequestMaxAggregateOutputType | null
-}
-
-export type OnboardingRequestAvgAggregateOutputType = {
- otpAttempts: number | null
- otpResendCount: number | null
-}
-
-export type OnboardingRequestSumAggregateOutputType = {
- otpAttempts: number | null
- otpResendCount: number | null
-}
-
-export type OnboardingRequestMinAggregateOutputType = {
- id: string | null
- fullName: string | null
- email: string | null
- otpHash: string | null
- otpExpiresAt: Date | null
- otpAttempts: number | null
- otpLastSentAt: Date | null
- otpResendCount: number | null
- emailVerifiedAt: Date | null
- completedAt: Date | null
- createdAt: Date | null
- updatedAt: Date | null
-}
-
-export type OnboardingRequestMaxAggregateOutputType = {
- id: string | null
- fullName: string | null
- email: string | null
- otpHash: string | null
- otpExpiresAt: Date | null
- otpAttempts: number | null
- otpLastSentAt: Date | null
- otpResendCount: number | null
- emailVerifiedAt: Date | null
- completedAt: Date | null
- createdAt: Date | null
- updatedAt: Date | null
-}
-
-export type OnboardingRequestCountAggregateOutputType = {
- id: number
- fullName: number
- email: number
- otpHash: number
- otpExpiresAt: number
- otpAttempts: number
- otpLastSentAt: number
- otpResendCount: number
- emailVerifiedAt: number
- completedAt: number
- createdAt: number
- updatedAt: number
- _all: number
-}
-
-
-export type OnboardingRequestAvgAggregateInputType = {
- otpAttempts?: true
- otpResendCount?: true
-}
-
-export type OnboardingRequestSumAggregateInputType = {
- otpAttempts?: true
- otpResendCount?: true
-}
-
-export type OnboardingRequestMinAggregateInputType = {
- id?: true
- fullName?: true
- email?: true
- otpHash?: true
- otpExpiresAt?: true
- otpAttempts?: true
- otpLastSentAt?: true
- otpResendCount?: true
- emailVerifiedAt?: true
- completedAt?: true
- createdAt?: true
- updatedAt?: true
-}
-
-export type OnboardingRequestMaxAggregateInputType = {
- id?: true
- fullName?: true
- email?: true
- otpHash?: true
- otpExpiresAt?: true
- otpAttempts?: true
- otpLastSentAt?: true
- otpResendCount?: true
- emailVerifiedAt?: true
- completedAt?: true
- createdAt?: true
- updatedAt?: true
-}
-
-export type OnboardingRequestCountAggregateInputType = {
- id?: true
- fullName?: true
- email?: true
- otpHash?: true
- otpExpiresAt?: true
- otpAttempts?: true
- otpLastSentAt?: true
- otpResendCount?: true
- emailVerifiedAt?: true
- completedAt?: true
- createdAt?: true
- updatedAt?: true
- _all?: true
-}
-
-export type OnboardingRequestAggregateArgs = {
- /**
- * Filter which OnboardingRequest to aggregate.
- */
- where?: Prisma.OnboardingRequestWhereInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
- *
- * Determine the order of OnboardingRequests to fetch.
- */
- orderBy?: Prisma.OnboardingRequestOrderByWithRelationInput | Prisma.OnboardingRequestOrderByWithRelationInput[]
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
- *
- * Sets the start position
- */
- cursor?: Prisma.OnboardingRequestWhereUniqueInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Take `±n` OnboardingRequests from the position of the cursor.
- */
- take?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Skip the first `n` OnboardingRequests.
- */
- skip?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
- *
- * Count returned OnboardingRequests
- **/
- _count?: true | OnboardingRequestCountAggregateInputType
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
- *
- * Select which fields to average
- **/
- _avg?: OnboardingRequestAvgAggregateInputType
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
- *
- * Select which fields to sum
- **/
- _sum?: OnboardingRequestSumAggregateInputType
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
- *
- * Select which fields to find the minimum value
- **/
- _min?: OnboardingRequestMinAggregateInputType
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
- *
- * Select which fields to find the maximum value
- **/
- _max?: OnboardingRequestMaxAggregateInputType
-}
-
-export type GetOnboardingRequestAggregateType = {
- [P in keyof T & keyof AggregateOnboardingRequest]: P extends '_count' | 'count'
- ? T[P] extends true
- ? number
- : Prisma.GetScalarType
- : Prisma.GetScalarType
-}
-
-
-
-
-export type OnboardingRequestGroupByArgs = {
- where?: Prisma.OnboardingRequestWhereInput
- orderBy?: Prisma.OnboardingRequestOrderByWithAggregationInput | Prisma.OnboardingRequestOrderByWithAggregationInput[]
- by: Prisma.OnboardingRequestScalarFieldEnum[] | Prisma.OnboardingRequestScalarFieldEnum
- having?: Prisma.OnboardingRequestScalarWhereWithAggregatesInput
- take?: number
- skip?: number
- _count?: OnboardingRequestCountAggregateInputType | true
- _avg?: OnboardingRequestAvgAggregateInputType
- _sum?: OnboardingRequestSumAggregateInputType
- _min?: OnboardingRequestMinAggregateInputType
- _max?: OnboardingRequestMaxAggregateInputType
-}
-
-export type OnboardingRequestGroupByOutputType = {
- id: string
- fullName: string
- email: string
- otpHash: string
- otpExpiresAt: Date
- otpAttempts: number
- otpLastSentAt: Date
- otpResendCount: number
- emailVerifiedAt: Date | null
- completedAt: Date | null
- createdAt: Date
- updatedAt: Date
- _count: OnboardingRequestCountAggregateOutputType | null
- _avg: OnboardingRequestAvgAggregateOutputType | null
- _sum: OnboardingRequestSumAggregateOutputType | null
- _min: OnboardingRequestMinAggregateOutputType | null
- _max: OnboardingRequestMaxAggregateOutputType | null
-}
-
-export type GetOnboardingRequestGroupByPayload = Prisma.PrismaPromise<
- Array<
- Prisma.PickEnumerable &
- {
- [P in ((keyof T) & (keyof OnboardingRequestGroupByOutputType))]: P extends '_count'
- ? T[P] extends boolean
- ? number
- : Prisma.GetScalarType
- : Prisma.GetScalarType
- }
- >
- >
-
-
-
-export type OnboardingRequestWhereInput = {
- AND?: Prisma.OnboardingRequestWhereInput | Prisma.OnboardingRequestWhereInput[]
- OR?: Prisma.OnboardingRequestWhereInput[]
- NOT?: Prisma.OnboardingRequestWhereInput | Prisma.OnboardingRequestWhereInput[]
- id?: Prisma.UuidFilter<"OnboardingRequest"> | string
- fullName?: Prisma.StringFilter<"OnboardingRequest"> | string
- email?: Prisma.StringFilter<"OnboardingRequest"> | string
- otpHash?: Prisma.StringFilter<"OnboardingRequest"> | string
- otpExpiresAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
- otpAttempts?: Prisma.IntFilter<"OnboardingRequest"> | number
- otpLastSentAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
- otpResendCount?: Prisma.IntFilter<"OnboardingRequest"> | number
- emailVerifiedAt?: Prisma.DateTimeNullableFilter<"OnboardingRequest"> | Date | string | null
- completedAt?: Prisma.DateTimeNullableFilter<"OnboardingRequest"> | Date | string | null
- createdAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
- updatedAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
-}
-
-export type OnboardingRequestOrderByWithRelationInput = {
- id?: Prisma.SortOrder
- fullName?: Prisma.SortOrder
- email?: Prisma.SortOrder
- otpHash?: Prisma.SortOrder
- otpExpiresAt?: Prisma.SortOrder
- otpAttempts?: Prisma.SortOrder
- otpLastSentAt?: Prisma.SortOrder
- otpResendCount?: Prisma.SortOrder
- emailVerifiedAt?: Prisma.SortOrderInput | Prisma.SortOrder
- completedAt?: Prisma.SortOrderInput | Prisma.SortOrder
- createdAt?: Prisma.SortOrder
- updatedAt?: Prisma.SortOrder
-}
-
-export type OnboardingRequestWhereUniqueInput = Prisma.AtLeast<{
- id?: string
- AND?: Prisma.OnboardingRequestWhereInput | Prisma.OnboardingRequestWhereInput[]
- OR?: Prisma.OnboardingRequestWhereInput[]
- NOT?: Prisma.OnboardingRequestWhereInput | Prisma.OnboardingRequestWhereInput[]
- fullName?: Prisma.StringFilter<"OnboardingRequest"> | string
- email?: Prisma.StringFilter<"OnboardingRequest"> | string
- otpHash?: Prisma.StringFilter<"OnboardingRequest"> | string
- otpExpiresAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
- otpAttempts?: Prisma.IntFilter<"OnboardingRequest"> | number
- otpLastSentAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
- otpResendCount?: Prisma.IntFilter<"OnboardingRequest"> | number
- emailVerifiedAt?: Prisma.DateTimeNullableFilter<"OnboardingRequest"> | Date | string | null
- completedAt?: Prisma.DateTimeNullableFilter<"OnboardingRequest"> | Date | string | null
- createdAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
- updatedAt?: Prisma.DateTimeFilter<"OnboardingRequest"> | Date | string
-}, "id">
-
-export type OnboardingRequestOrderByWithAggregationInput = {
- id?: Prisma.SortOrder
- fullName?: Prisma.SortOrder
- email?: Prisma.SortOrder
- otpHash?: Prisma.SortOrder
- otpExpiresAt?: Prisma.SortOrder
- otpAttempts?: Prisma.SortOrder
- otpLastSentAt?: Prisma.SortOrder
- otpResendCount?: Prisma.SortOrder
- emailVerifiedAt?: Prisma.SortOrderInput | Prisma.SortOrder
- completedAt?: Prisma.SortOrderInput | Prisma.SortOrder
- createdAt?: Prisma.SortOrder
- updatedAt?: Prisma.SortOrder
- _count?: Prisma.OnboardingRequestCountOrderByAggregateInput
- _avg?: Prisma.OnboardingRequestAvgOrderByAggregateInput
- _max?: Prisma.OnboardingRequestMaxOrderByAggregateInput
- _min?: Prisma.OnboardingRequestMinOrderByAggregateInput
- _sum?: Prisma.OnboardingRequestSumOrderByAggregateInput
-}
-
-export type OnboardingRequestScalarWhereWithAggregatesInput = {
- AND?: Prisma.OnboardingRequestScalarWhereWithAggregatesInput | Prisma.OnboardingRequestScalarWhereWithAggregatesInput[]
- OR?: Prisma.OnboardingRequestScalarWhereWithAggregatesInput[]
- NOT?: Prisma.OnboardingRequestScalarWhereWithAggregatesInput | Prisma.OnboardingRequestScalarWhereWithAggregatesInput[]
- id?: Prisma.UuidWithAggregatesFilter<"OnboardingRequest"> | string
- fullName?: Prisma.StringWithAggregatesFilter<"OnboardingRequest"> | string
- email?: Prisma.StringWithAggregatesFilter<"OnboardingRequest"> | string
- otpHash?: Prisma.StringWithAggregatesFilter<"OnboardingRequest"> | string
- otpExpiresAt?: Prisma.DateTimeWithAggregatesFilter<"OnboardingRequest"> | Date | string
- otpAttempts?: Prisma.IntWithAggregatesFilter<"OnboardingRequest"> | number
- otpLastSentAt?: Prisma.DateTimeWithAggregatesFilter<"OnboardingRequest"> | Date | string
- otpResendCount?: Prisma.IntWithAggregatesFilter<"OnboardingRequest"> | number
- emailVerifiedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"OnboardingRequest"> | Date | string | null
- completedAt?: Prisma.DateTimeNullableWithAggregatesFilter<"OnboardingRequest"> | Date | string | null
- createdAt?: Prisma.DateTimeWithAggregatesFilter<"OnboardingRequest"> | Date | string
- updatedAt?: Prisma.DateTimeWithAggregatesFilter<"OnboardingRequest"> | Date | string
-}
-
-export type OnboardingRequestCreateInput = {
- id: string
- fullName: string
- email: string
- otpHash: string
- otpExpiresAt: Date | string
- otpAttempts?: number
- otpLastSentAt: Date | string
- otpResendCount?: number
- emailVerifiedAt?: Date | string | null
- completedAt?: Date | string | null
- createdAt?: Date | string
- updatedAt?: Date | string
-}
-
-export type OnboardingRequestUncheckedCreateInput = {
- id: string
- fullName: string
- email: string
- otpHash: string
- otpExpiresAt: Date | string
- otpAttempts?: number
- otpLastSentAt: Date | string
- otpResendCount?: number
- emailVerifiedAt?: Date | string | null
- completedAt?: Date | string | null
- createdAt?: Date | string
- updatedAt?: Date | string
-}
-
-export type OnboardingRequestUpdateInput = {
- id?: Prisma.StringFieldUpdateOperationsInput | string
- fullName?: Prisma.StringFieldUpdateOperationsInput | string
- email?: Prisma.StringFieldUpdateOperationsInput | string
- otpHash?: Prisma.StringFieldUpdateOperationsInput | string
- otpExpiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpAttempts?: Prisma.IntFieldUpdateOperationsInput | number
- otpLastSentAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpResendCount?: Prisma.IntFieldUpdateOperationsInput | number
- emailVerifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
-}
-
-export type OnboardingRequestUncheckedUpdateInput = {
- id?: Prisma.StringFieldUpdateOperationsInput | string
- fullName?: Prisma.StringFieldUpdateOperationsInput | string
- email?: Prisma.StringFieldUpdateOperationsInput | string
- otpHash?: Prisma.StringFieldUpdateOperationsInput | string
- otpExpiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpAttempts?: Prisma.IntFieldUpdateOperationsInput | number
- otpLastSentAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpResendCount?: Prisma.IntFieldUpdateOperationsInput | number
- emailVerifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
-}
-
-export type OnboardingRequestCreateManyInput = {
- id: string
- fullName: string
- email: string
- otpHash: string
- otpExpiresAt: Date | string
- otpAttempts?: number
- otpLastSentAt: Date | string
- otpResendCount?: number
- emailVerifiedAt?: Date | string | null
- completedAt?: Date | string | null
- createdAt?: Date | string
- updatedAt?: Date | string
-}
-
-export type OnboardingRequestUpdateManyMutationInput = {
- id?: Prisma.StringFieldUpdateOperationsInput | string
- fullName?: Prisma.StringFieldUpdateOperationsInput | string
- email?: Prisma.StringFieldUpdateOperationsInput | string
- otpHash?: Prisma.StringFieldUpdateOperationsInput | string
- otpExpiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpAttempts?: Prisma.IntFieldUpdateOperationsInput | number
- otpLastSentAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpResendCount?: Prisma.IntFieldUpdateOperationsInput | number
- emailVerifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
-}
-
-export type OnboardingRequestUncheckedUpdateManyInput = {
- id?: Prisma.StringFieldUpdateOperationsInput | string
- fullName?: Prisma.StringFieldUpdateOperationsInput | string
- email?: Prisma.StringFieldUpdateOperationsInput | string
- otpHash?: Prisma.StringFieldUpdateOperationsInput | string
- otpExpiresAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpAttempts?: Prisma.IntFieldUpdateOperationsInput | number
- otpLastSentAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- otpResendCount?: Prisma.IntFieldUpdateOperationsInput | number
- emailVerifiedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- completedAt?: Prisma.NullableDateTimeFieldUpdateOperationsInput | Date | string | null
- createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
- updatedAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
-}
-
-export type OnboardingRequestCountOrderByAggregateInput = {
- id?: Prisma.SortOrder
- fullName?: Prisma.SortOrder
- email?: Prisma.SortOrder
- otpHash?: Prisma.SortOrder
- otpExpiresAt?: Prisma.SortOrder
- otpAttempts?: Prisma.SortOrder
- otpLastSentAt?: Prisma.SortOrder
- otpResendCount?: Prisma.SortOrder
- emailVerifiedAt?: Prisma.SortOrder
- completedAt?: Prisma.SortOrder
- createdAt?: Prisma.SortOrder
- updatedAt?: Prisma.SortOrder
-}
-
-export type OnboardingRequestAvgOrderByAggregateInput = {
- otpAttempts?: Prisma.SortOrder
- otpResendCount?: Prisma.SortOrder
-}
-
-export type OnboardingRequestMaxOrderByAggregateInput = {
- id?: Prisma.SortOrder
- fullName?: Prisma.SortOrder
- email?: Prisma.SortOrder
- otpHash?: Prisma.SortOrder
- otpExpiresAt?: Prisma.SortOrder
- otpAttempts?: Prisma.SortOrder
- otpLastSentAt?: Prisma.SortOrder
- otpResendCount?: Prisma.SortOrder
- emailVerifiedAt?: Prisma.SortOrder
- completedAt?: Prisma.SortOrder
- createdAt?: Prisma.SortOrder
- updatedAt?: Prisma.SortOrder
-}
-
-export type OnboardingRequestMinOrderByAggregateInput = {
- id?: Prisma.SortOrder
- fullName?: Prisma.SortOrder
- email?: Prisma.SortOrder
- otpHash?: Prisma.SortOrder
- otpExpiresAt?: Prisma.SortOrder
- otpAttempts?: Prisma.SortOrder
- otpLastSentAt?: Prisma.SortOrder
- otpResendCount?: Prisma.SortOrder
- emailVerifiedAt?: Prisma.SortOrder
- completedAt?: Prisma.SortOrder
- createdAt?: Prisma.SortOrder
- updatedAt?: Prisma.SortOrder
-}
-
-export type OnboardingRequestSumOrderByAggregateInput = {
- otpAttempts?: Prisma.SortOrder
- otpResendCount?: Prisma.SortOrder
-}
-
-
-
-export type OnboardingRequestSelect = runtime.Types.Extensions.GetSelect<{
- id?: boolean
- fullName?: boolean
- email?: boolean
- otpHash?: boolean
- otpExpiresAt?: boolean
- otpAttempts?: boolean
- otpLastSentAt?: boolean
- otpResendCount?: boolean
- emailVerifiedAt?: boolean
- completedAt?: boolean
- createdAt?: boolean
- updatedAt?: boolean
-}, ExtArgs["result"]["onboardingRequest"]>
-
-export type OnboardingRequestSelectCreateManyAndReturn = runtime.Types.Extensions.GetSelect<{
- id?: boolean
- fullName?: boolean
- email?: boolean
- otpHash?: boolean
- otpExpiresAt?: boolean
- otpAttempts?: boolean
- otpLastSentAt?: boolean
- otpResendCount?: boolean
- emailVerifiedAt?: boolean
- completedAt?: boolean
- createdAt?: boolean
- updatedAt?: boolean
-}, ExtArgs["result"]["onboardingRequest"]>
-
-export type OnboardingRequestSelectUpdateManyAndReturn = runtime.Types.Extensions.GetSelect<{
- id?: boolean
- fullName?: boolean
- email?: boolean
- otpHash?: boolean
- otpExpiresAt?: boolean
- otpAttempts?: boolean
- otpLastSentAt?: boolean
- otpResendCount?: boolean
- emailVerifiedAt?: boolean
- completedAt?: boolean
- createdAt?: boolean
- updatedAt?: boolean
-}, ExtArgs["result"]["onboardingRequest"]>
-
-export type OnboardingRequestSelectScalar = {
- id?: boolean
- fullName?: boolean
- email?: boolean
- otpHash?: boolean
- otpExpiresAt?: boolean
- otpAttempts?: boolean
- otpLastSentAt?: boolean
- otpResendCount?: boolean
- emailVerifiedAt?: boolean
- completedAt?: boolean
- createdAt?: boolean
- updatedAt?: boolean
-}
-
-export type OnboardingRequestOmit = runtime.Types.Extensions.GetOmit<"id" | "fullName" | "email" | "otpHash" | "otpExpiresAt" | "otpAttempts" | "otpLastSentAt" | "otpResendCount" | "emailVerifiedAt" | "completedAt" | "createdAt" | "updatedAt", ExtArgs["result"]["onboardingRequest"]>
-
-export type $OnboardingRequestPayload = {
- name: "OnboardingRequest"
- objects: {}
- scalars: runtime.Types.Extensions.GetPayloadResult<{
- id: string
- fullName: string
- email: string
- otpHash: string
- otpExpiresAt: Date
- otpAttempts: number
- otpLastSentAt: Date
- otpResendCount: number
- emailVerifiedAt: Date | null
- completedAt: Date | null
- createdAt: Date
- updatedAt: Date
- }, ExtArgs["result"]["onboardingRequest"]>
- composites: {}
-}
-
-export type OnboardingRequestGetPayload = runtime.Types.Result.GetResult
-
-export type OnboardingRequestCountArgs =
- Omit & {
- select?: OnboardingRequestCountAggregateInputType | true
- }
-
-export interface OnboardingRequestDelegate {
- [K: symbol]: { types: Prisma.TypeMap['model']['OnboardingRequest'], meta: { name: 'OnboardingRequest' } }
- /**
- * Find zero or one OnboardingRequest that matches the filter.
- * @param {OnboardingRequestFindUniqueArgs} args - Arguments to find a OnboardingRequest
- * @example
- * // Get one OnboardingRequest
- * const onboardingRequest = await prisma.onboardingRequest.findUnique({
- * where: {
- * // ... provide filter here
- * }
- * })
- */
- findUnique(args: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
-
- /**
- * Find one OnboardingRequest that matches the filter or throw an error with `error.code='P2025'`
- * if no matches were found.
- * @param {OnboardingRequestFindUniqueOrThrowArgs} args - Arguments to find a OnboardingRequest
- * @example
- * // Get one OnboardingRequest
- * const onboardingRequest = await prisma.onboardingRequest.findUniqueOrThrow({
- * where: {
- * // ... provide filter here
- * }
- * })
- */
- findUniqueOrThrow(args: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>
-
- /**
- * Find the first OnboardingRequest that matches the filter.
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- * @param {OnboardingRequestFindFirstArgs} args - Arguments to find a OnboardingRequest
- * @example
- * // Get one OnboardingRequest
- * const onboardingRequest = await prisma.onboardingRequest.findFirst({
- * where: {
- * // ... provide filter here
- * }
- * })
- */
- findFirst(args?: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
-
- /**
- * Find the first OnboardingRequest that matches the filter or
- * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- * @param {OnboardingRequestFindFirstOrThrowArgs} args - Arguments to find a OnboardingRequest
- * @example
- * // Get one OnboardingRequest
- * const onboardingRequest = await prisma.onboardingRequest.findFirstOrThrow({
- * where: {
- * // ... provide filter here
- * }
- * })
- */
- findFirstOrThrow(args?: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>
-
- /**
- * Find zero or more OnboardingRequests that matches the filter.
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- * @param {OnboardingRequestFindManyArgs} args - Arguments to filter and select certain fields only.
- * @example
- * // Get all OnboardingRequests
- * const onboardingRequests = await prisma.onboardingRequest.findMany()
- *
- * // Get first 10 OnboardingRequests
- * const onboardingRequests = await prisma.onboardingRequest.findMany({ take: 10 })
- *
- * // Only select the `id`
- * const onboardingRequestWithIdOnly = await prisma.onboardingRequest.findMany({ select: { id: true } })
- *
- */
- findMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "findMany", GlobalOmitOptions>>
-
- /**
- * Create a OnboardingRequest.
- * @param {OnboardingRequestCreateArgs} args - Arguments to create a OnboardingRequest.
- * @example
- * // Create one OnboardingRequest
- * const OnboardingRequest = await prisma.onboardingRequest.create({
- * data: {
- * // ... data to create a OnboardingRequest
- * }
- * })
- *
- */
- create(args: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>
-
- /**
- * Create many OnboardingRequests.
- * @param {OnboardingRequestCreateManyArgs} args - Arguments to create many OnboardingRequests.
- * @example
- * // Create many OnboardingRequests
- * const onboardingRequest = await prisma.onboardingRequest.createMany({
- * data: [
- * // ... provide data here
- * ]
- * })
- *
- */
- createMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise
-
- /**
- * Create many OnboardingRequests and returns the data saved in the database.
- * @param {OnboardingRequestCreateManyAndReturnArgs} args - Arguments to create many OnboardingRequests.
- * @example
- * // Create many OnboardingRequests
- * const onboardingRequest = await prisma.onboardingRequest.createManyAndReturn({
- * data: [
- * // ... provide data here
- * ]
- * })
- *
- * // Create many OnboardingRequests and only return the `id`
- * const onboardingRequestWithIdOnly = await prisma.onboardingRequest.createManyAndReturn({
- * select: { id: true },
- * data: [
- * // ... provide data here
- * ]
- * })
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- *
- */
- createManyAndReturn(args?: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "createManyAndReturn", GlobalOmitOptions>>
-
- /**
- * Delete a OnboardingRequest.
- * @param {OnboardingRequestDeleteArgs} args - Arguments to delete one OnboardingRequest.
- * @example
- * // Delete one OnboardingRequest
- * const OnboardingRequest = await prisma.onboardingRequest.delete({
- * where: {
- * // ... filter to delete one OnboardingRequest
- * }
- * })
- *
- */
- delete(args: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>
-
- /**
- * Update one OnboardingRequest.
- * @param {OnboardingRequestUpdateArgs} args - Arguments to update one OnboardingRequest.
- * @example
- * // Update one OnboardingRequest
- * const onboardingRequest = await prisma.onboardingRequest.update({
- * where: {
- * // ... provide filter here
- * },
- * data: {
- * // ... provide data here
- * }
- * })
- *
- */
- update(args: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>
-
- /**
- * Delete zero or more OnboardingRequests.
- * @param {OnboardingRequestDeleteManyArgs} args - Arguments to filter OnboardingRequests to delete.
- * @example
- * // Delete a few OnboardingRequests
- * const { count } = await prisma.onboardingRequest.deleteMany({
- * where: {
- * // ... provide filter here
- * }
- * })
- *
- */
- deleteMany(args?: Prisma.SelectSubset>): Prisma.PrismaPromise
-
- /**
- * Update zero or more OnboardingRequests.
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- * @param {OnboardingRequestUpdateManyArgs} args - Arguments to update one or more rows.
- * @example
- * // Update many OnboardingRequests
- * const onboardingRequest = await prisma.onboardingRequest.updateMany({
- * where: {
- * // ... provide filter here
- * },
- * data: {
- * // ... provide data here
- * }
- * })
- *
- */
- updateMany(args: Prisma.SelectSubset>): Prisma.PrismaPromise
-
- /**
- * Update zero or more OnboardingRequests and returns the data updated in the database.
- * @param {OnboardingRequestUpdateManyAndReturnArgs} args - Arguments to update many OnboardingRequests.
- * @example
- * // Update many OnboardingRequests
- * const onboardingRequest = await prisma.onboardingRequest.updateManyAndReturn({
- * where: {
- * // ... provide filter here
- * },
- * data: [
- * // ... provide data here
- * ]
- * })
- *
- * // Update zero or more OnboardingRequests and only return the `id`
- * const onboardingRequestWithIdOnly = await prisma.onboardingRequest.updateManyAndReturn({
- * select: { id: true },
- * where: {
- * // ... provide filter here
- * },
- * data: [
- * // ... provide data here
- * ]
- * })
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- *
- */
- updateManyAndReturn(args: Prisma.SelectSubset>): Prisma.PrismaPromise, T, "updateManyAndReturn", GlobalOmitOptions>>
-
- /**
- * Create or update one OnboardingRequest.
- * @param {OnboardingRequestUpsertArgs} args - Arguments to update or create a OnboardingRequest.
- * @example
- * // Update or create a OnboardingRequest
- * const onboardingRequest = await prisma.onboardingRequest.upsert({
- * create: {
- * // ... data to create a OnboardingRequest
- * },
- * update: {
- * // ... in case it already exists, update
- * },
- * where: {
- * // ... the filter for the OnboardingRequest we want to update
- * }
- * })
- */
- upsert(args: Prisma.SelectSubset>): Prisma.Prisma__OnboardingRequestClient, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>
-
-
- /**
- * Count the number of OnboardingRequests.
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- * @param {OnboardingRequestCountArgs} args - Arguments to filter OnboardingRequests to count.
- * @example
- * // Count the number of OnboardingRequests
- * const count = await prisma.onboardingRequest.count({
- * where: {
- * // ... the filter for the OnboardingRequests we want to count
- * }
- * })
- **/
- count(
- args?: Prisma.Subset,
- ): Prisma.PrismaPromise<
- T extends runtime.Types.Utils.Record<'select', any>
- ? T['select'] extends true
- ? number
- : Prisma.GetScalarType
- : number
- >
-
- /**
- * Allows you to perform aggregations operations on a OnboardingRequest.
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- * @param {OnboardingRequestAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
- * @example
- * // Ordered by age ascending
- * // Where email contains prisma.io
- * // Limited to the 10 users
- * const aggregations = await prisma.user.aggregate({
- * _avg: {
- * age: true,
- * },
- * where: {
- * email: {
- * contains: "prisma.io",
- * },
- * },
- * orderBy: {
- * age: "asc",
- * },
- * take: 10,
- * })
- **/
- aggregate(args: Prisma.Subset): Prisma.PrismaPromise>
-
- /**
- * Group by OnboardingRequest.
- * Note, that providing `undefined` is treated as the value not being there.
- * Read more here: https://pris.ly/d/null-undefined
- * @param {OnboardingRequestGroupByArgs} args - Group by arguments.
- * @example
- * // Group by city, order by createdAt, get count
- * const result = await prisma.user.groupBy({
- * by: ['city', 'createdAt'],
- * orderBy: {
- * createdAt: true
- * },
- * _count: {
- * _all: true
- * },
- * })
- *
- **/
- groupBy<
- T extends OnboardingRequestGroupByArgs,
- HasSelectOrTake extends Prisma.Or<
- Prisma.Extends<'skip', Prisma.Keys>,
- Prisma.Extends<'take', Prisma.Keys>
- >,
- OrderByArg extends Prisma.True extends HasSelectOrTake
- ? { orderBy: OnboardingRequestGroupByArgs['orderBy'] }
- : { orderBy?: OnboardingRequestGroupByArgs['orderBy'] },
- OrderFields extends Prisma.ExcludeUnderscoreKeys>>,
- ByFields extends Prisma.MaybeTupleToUnion,
- ByValid extends Prisma.Has,
- HavingFields extends Prisma.GetHavingFields,
- HavingValid extends Prisma.Has,
- ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False,
- InputErrors extends ByEmpty extends Prisma.True
- ? `Error: "by" must not be empty.`
- : HavingValid extends Prisma.False
- ? {
- [P in HavingFields]: P extends ByFields
- ? never
- : P extends string
- ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
- : [
- Error,
- 'Field ',
- P,
- ` in "having" needs to be provided in "by"`,
- ]
- }[HavingFields]
- : 'take' extends Prisma.Keys
- ? 'orderBy' extends Prisma.Keys
- ? ByValid extends Prisma.True
- ? {}
- : {
- [P in OrderFields]: P extends ByFields
- ? never
- : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
- }[OrderFields]
- : 'Error: If you provide "take", you also need to provide "orderBy"'
- : 'skip' extends Prisma.Keys
- ? 'orderBy' extends Prisma.Keys
- ? ByValid extends Prisma.True
- ? {}
- : {
- [P in OrderFields]: P extends ByFields
- ? never
- : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
- }[OrderFields]
- : 'Error: If you provide "skip", you also need to provide "orderBy"'
- : ByValid extends Prisma.True
- ? {}
- : {
- [P in OrderFields]: P extends ByFields
- ? never
- : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
- }[OrderFields]
- >(args: Prisma.SubsetIntersection & InputErrors): {} extends InputErrors ? GetOnboardingRequestGroupByPayload : Prisma.PrismaPromise
-/**
- * Fields of the OnboardingRequest model
- */
-readonly fields: OnboardingRequestFieldRefs;
-}
-
-/**
- * The delegate class that acts as a "Promise-like" for OnboardingRequest.
- * Why is this prefixed with `Prisma__`?
- * Because we want to prevent naming conflicts as mentioned in
- * https://github.com/prisma/prisma-client-js/issues/707
- */
-export interface Prisma__OnboardingRequestClient extends Prisma.PrismaPromise {
- readonly [Symbol.toStringTag]: "PrismaPromise"
- /**
- * Attaches callbacks for the resolution and/or rejection of the Promise.
- * @param onfulfilled The callback to execute when the Promise is resolved.
- * @param onrejected The callback to execute when the Promise is rejected.
- * @returns A Promise for the completion of which ever callback is executed.
- */
- then(onfulfilled?: ((value: T) => TResult1 | PromiseLike) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise
- /**
- * Attaches a callback for only the rejection of the Promise.
- * @param onrejected The callback to execute when the Promise is rejected.
- * @returns A Promise for the completion of the callback.
- */
- catch(onrejected?: ((reason: any) => TResult | PromiseLike) | undefined | null): runtime.Types.Utils.JsPromise
- /**
- * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
- * resolved value cannot be modified from the callback.
- * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
- * @returns A Promise for the completion of the callback.
- */
- finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise
-}
-
-
-
-
-/**
- * Fields of the OnboardingRequest model
- */
-export interface OnboardingRequestFieldRefs {
- readonly id: Prisma.FieldRef<"OnboardingRequest", 'String'>
- readonly fullName: Prisma.FieldRef<"OnboardingRequest", 'String'>
- readonly email: Prisma.FieldRef<"OnboardingRequest", 'String'>
- readonly otpHash: Prisma.FieldRef<"OnboardingRequest", 'String'>
- readonly otpExpiresAt: Prisma.FieldRef<"OnboardingRequest", 'DateTime'>
- readonly otpAttempts: Prisma.FieldRef<"OnboardingRequest", 'Int'>
- readonly otpLastSentAt: Prisma.FieldRef<"OnboardingRequest", 'DateTime'>
- readonly otpResendCount: Prisma.FieldRef<"OnboardingRequest", 'Int'>
- readonly emailVerifiedAt: Prisma.FieldRef<"OnboardingRequest", 'DateTime'>
- readonly completedAt: Prisma.FieldRef<"OnboardingRequest", 'DateTime'>
- readonly createdAt: Prisma.FieldRef<"OnboardingRequest", 'DateTime'>
- readonly updatedAt: Prisma.FieldRef<"OnboardingRequest", 'DateTime'>
-}
-
-
-// Custom InputTypes
-/**
- * OnboardingRequest findUnique
- */
-export type OnboardingRequestFindUniqueArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * Filter, which OnboardingRequest to fetch.
- */
- where: Prisma.OnboardingRequestWhereUniqueInput
-}
-
-/**
- * OnboardingRequest findUniqueOrThrow
- */
-export type OnboardingRequestFindUniqueOrThrowArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * Filter, which OnboardingRequest to fetch.
- */
- where: Prisma.OnboardingRequestWhereUniqueInput
-}
-
-/**
- * OnboardingRequest findFirst
- */
-export type OnboardingRequestFindFirstArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * Filter, which OnboardingRequest to fetch.
- */
- where?: Prisma.OnboardingRequestWhereInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
- *
- * Determine the order of OnboardingRequests to fetch.
- */
- orderBy?: Prisma.OnboardingRequestOrderByWithRelationInput | Prisma.OnboardingRequestOrderByWithRelationInput[]
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
- *
- * Sets the position for searching for OnboardingRequests.
- */
- cursor?: Prisma.OnboardingRequestWhereUniqueInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Take `±n` OnboardingRequests from the position of the cursor.
- */
- take?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Skip the first `n` OnboardingRequests.
- */
- skip?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
- *
- * Filter by unique combinations of OnboardingRequests.
- */
- distinct?: Prisma.OnboardingRequestScalarFieldEnum | Prisma.OnboardingRequestScalarFieldEnum[]
-}
-
-/**
- * OnboardingRequest findFirstOrThrow
- */
-export type OnboardingRequestFindFirstOrThrowArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * Filter, which OnboardingRequest to fetch.
- */
- where?: Prisma.OnboardingRequestWhereInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
- *
- * Determine the order of OnboardingRequests to fetch.
- */
- orderBy?: Prisma.OnboardingRequestOrderByWithRelationInput | Prisma.OnboardingRequestOrderByWithRelationInput[]
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
- *
- * Sets the position for searching for OnboardingRequests.
- */
- cursor?: Prisma.OnboardingRequestWhereUniqueInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Take `±n` OnboardingRequests from the position of the cursor.
- */
- take?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Skip the first `n` OnboardingRequests.
- */
- skip?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
- *
- * Filter by unique combinations of OnboardingRequests.
- */
- distinct?: Prisma.OnboardingRequestScalarFieldEnum | Prisma.OnboardingRequestScalarFieldEnum[]
-}
-
-/**
- * OnboardingRequest findMany
- */
-export type OnboardingRequestFindManyArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * Filter, which OnboardingRequests to fetch.
- */
- where?: Prisma.OnboardingRequestWhereInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
- *
- * Determine the order of OnboardingRequests to fetch.
- */
- orderBy?: Prisma.OnboardingRequestOrderByWithRelationInput | Prisma.OnboardingRequestOrderByWithRelationInput[]
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
- *
- * Sets the position for listing OnboardingRequests.
- */
- cursor?: Prisma.OnboardingRequestWhereUniqueInput
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Take `±n` OnboardingRequests from the position of the cursor.
- */
- take?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
- *
- * Skip the first `n` OnboardingRequests.
- */
- skip?: number
- /**
- * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
- *
- * Filter by unique combinations of OnboardingRequests.
- */
- distinct?: Prisma.OnboardingRequestScalarFieldEnum | Prisma.OnboardingRequestScalarFieldEnum[]
-}
-
-/**
- * OnboardingRequest create
- */
-export type OnboardingRequestCreateArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * The data needed to create a OnboardingRequest.
- */
- data: Prisma.XOR
-}
-
-/**
- * OnboardingRequest createMany
- */
-export type OnboardingRequestCreateManyArgs = {
- /**
- * The data used to create many OnboardingRequests.
- */
- data: Prisma.OnboardingRequestCreateManyInput | Prisma.OnboardingRequestCreateManyInput[]
- skipDuplicates?: boolean
-}
-
-/**
- * OnboardingRequest createManyAndReturn
- */
-export type OnboardingRequestCreateManyAndReturnArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelectCreateManyAndReturn | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * The data used to create many OnboardingRequests.
- */
- data: Prisma.OnboardingRequestCreateManyInput | Prisma.OnboardingRequestCreateManyInput[]
- skipDuplicates?: boolean
-}
-
-/**
- * OnboardingRequest update
- */
-export type OnboardingRequestUpdateArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * The data needed to update a OnboardingRequest.
- */
- data: Prisma.XOR
- /**
- * Choose, which OnboardingRequest to update.
- */
- where: Prisma.OnboardingRequestWhereUniqueInput
-}
-
-/**
- * OnboardingRequest updateMany
- */
-export type OnboardingRequestUpdateManyArgs = {
- /**
- * The data used to update OnboardingRequests.
- */
- data: Prisma.XOR
- /**
- * Filter which OnboardingRequests to update
- */
- where?: Prisma.OnboardingRequestWhereInput
- /**
- * Limit how many OnboardingRequests to update.
- */
- limit?: number
-}
-
-/**
- * OnboardingRequest updateManyAndReturn
- */
-export type OnboardingRequestUpdateManyAndReturnArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelectUpdateManyAndReturn | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * The data used to update OnboardingRequests.
- */
- data: Prisma.XOR
- /**
- * Filter which OnboardingRequests to update
- */
- where?: Prisma.OnboardingRequestWhereInput
- /**
- * Limit how many OnboardingRequests to update.
- */
- limit?: number
-}
-
-/**
- * OnboardingRequest upsert
- */
-export type OnboardingRequestUpsertArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * The filter to search for the OnboardingRequest to update in case it exists.
- */
- where: Prisma.OnboardingRequestWhereUniqueInput
- /**
- * In case the OnboardingRequest found by the `where` argument doesn't exist, create a new OnboardingRequest with this data.
- */
- create: Prisma.XOR
- /**
- * In case the OnboardingRequest was found with the provided `where` argument, update it with this data.
- */
- update: Prisma.XOR
-}
-
-/**
- * OnboardingRequest delete
- */
-export type OnboardingRequestDeleteArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
- /**
- * Filter which OnboardingRequest to delete.
- */
- where: Prisma.OnboardingRequestWhereUniqueInput
-}
-
-/**
- * OnboardingRequest deleteMany
- */
-export type OnboardingRequestDeleteManyArgs = {
- /**
- * Filter which OnboardingRequests to delete
- */
- where?: Prisma.OnboardingRequestWhereInput
- /**
- * Limit how many OnboardingRequests to delete.
- */
- limit?: number
-}
-
-/**
- * OnboardingRequest without action
- */
-export type OnboardingRequestDefaultArgs = {
- /**
- * Select specific fields to fetch from the OnboardingRequest
- */
- select?: Prisma.OnboardingRequestSelect | null
- /**
- * Omit specific fields from the OnboardingRequest
- */
- omit?: Prisma.OnboardingRequestOmit | null
-}
diff --git a/apps/backend/src/modules/admin-booking/handlers/create-admin-booking.handler.ts b/apps/backend/src/modules/admin-booking/handlers/create-admin-booking.handler.ts
index eadfa81..be12a81 100644
--- a/apps/backend/src/modules/admin-booking/handlers/create-admin-booking.handler.ts
+++ b/apps/backend/src/modules/admin-booking/handlers/create-admin-booking.handler.ts
@@ -2,6 +2,7 @@ import {
AdminBookingServiceError,
createAdminBooking,
} from '@/modules/admin-booking/services/admin-booking.service';
+import { sendBookingConfirmation } from '@/services/booking-email.service';
import type { AppContext } from '@/types/hono';
import type { CreateAdminBookingInput } from '@repo/api-contract';
@@ -14,6 +15,20 @@ export async function createAdminBookingHandler(c: AppContext) {
try {
const booking = await createAdminBooking(user.id, complexId, payload);
+
+ void sendBookingConfirmation({
+ bookingCode: booking.bookingCode,
+ complexName: booking.complexName,
+ date: booking.date,
+ startTime: booking.startTime,
+ endTime: booking.endTime,
+ courtName: booking.courtName,
+ sportName: booking.sport.name,
+ customerName: booking.customerName,
+ customerEmail: booking.customerEmail,
+ price: booking.price,
+ });
+
return c.json(booking, 201);
} catch (error) {
if (error instanceof AdminBookingServiceError) {
diff --git a/apps/backend/src/modules/admin-booking/handlers/update-admin-booking-status.handler.ts b/apps/backend/src/modules/admin-booking/handlers/update-admin-booking-status.handler.ts
index deca159..047ed4e 100644
--- a/apps/backend/src/modules/admin-booking/handlers/update-admin-booking-status.handler.ts
+++ b/apps/backend/src/modules/admin-booking/handlers/update-admin-booking-status.handler.ts
@@ -2,6 +2,7 @@ import {
AdminBookingServiceError,
updateAdminBookingStatus,
} from '@/modules/admin-booking/services/admin-booking.service';
+import { sendBookingCancelled, sendBookingNoShow } from '@/services/booking-email.service';
import type { AppContext } from '@/types/hono';
import type { UpdateAdminBookingStatusInput } from '@repo/api-contract';
@@ -14,6 +15,33 @@ export async function updateAdminBookingStatusHandler(c: AppContext) {
try {
const booking = await updateAdminBookingStatus(user.id, id, payload);
+
+ if (payload.status === 'CANCELLED') {
+ void sendBookingCancelled({
+ bookingCode: booking.bookingCode,
+ complexName: booking.complexName,
+ date: booking.date,
+ startTime: booking.startTime,
+ endTime: booking.endTime,
+ courtName: booking.courtName,
+ sportName: booking.sport.name,
+ customerName: booking.customerName,
+ customerEmail: booking.customerEmail,
+ });
+ } else if (payload.status === 'NOSHOW') {
+ void sendBookingNoShow({
+ bookingCode: booking.bookingCode,
+ complexName: booking.complexName,
+ date: booking.date,
+ startTime: booking.startTime,
+ endTime: booking.endTime,
+ courtName: booking.courtName,
+ sportName: booking.sport.name,
+ customerName: booking.customerName,
+ customerEmail: booking.customerEmail,
+ });
+ }
+
return c.json(booking);
} catch (error) {
if (error instanceof AdminBookingServiceError) {
diff --git a/apps/backend/src/modules/admin-booking/services/admin-booking.service.ts b/apps/backend/src/modules/admin-booking/services/admin-booking.service.ts
index 5070514..151117d 100644
--- a/apps/backend/src/modules/admin-booking/services/admin-booking.service.ts
+++ b/apps/backend/src/modules/admin-booking/services/admin-booking.service.ts
@@ -2,6 +2,7 @@ import { randomInt } from 'node:crypto';
import { CourtBookingStatus } from '@/generated/prisma/enums';
import { db } from '@/lib/prisma';
import { evaluatePlanUsage, parsePlanRules } from '@/modules/plan/services/plan-rules.service';
+import type { DayOfWeek } from '@repo/api-contract';
import type {
AdminBooking,
CreateAdminBookingInput,
@@ -156,6 +157,40 @@ async function ensureComplexAccess(complexId: string, userId: string) {
return complexUser.complex;
}
+function resolvePrice(
+ court: {
+ basePrice: unknown;
+ priceRules: Array<{
+ dayOfWeek: string | null;
+ startTime: string | null;
+ endTime: string | null;
+ price: unknown;
+ }>;
+ },
+ dayOfWeek: string,
+ startTime: string,
+ endTime: string
+): number {
+ const slotStart = toMinutes(startTime);
+ const slotEnd = toMinutes(endTime);
+
+ const matchingRules = court.priceRules
+ .filter((rule) => {
+ if (rule.dayOfWeek && rule.dayOfWeek !== dayOfWeek) return false;
+ if (!rule.startTime || !rule.endTime) return true;
+ return slotStart >= toMinutes(rule.startTime) && slotEnd <= toMinutes(rule.endTime);
+ })
+ .sort((first, second) => {
+ const firstSpecificity =
+ (first.dayOfWeek ? 2 : 0) + (first.startTime && first.endTime ? 1 : 0);
+ const secondSpecificity =
+ (second.dayOfWeek ? 2 : 0) + (second.startTime && second.endTime ? 1 : 0);
+ return secondSpecificity - firstSpecificity;
+ });
+
+ return Number(matchingRules[0]?.price ?? court.basePrice);
+}
+
function mapBookingResponse(booking: {
id: string;
bookingCode: string;
@@ -164,6 +199,7 @@ function mapBookingResponse(booking: {
endTime: string;
customerName: string;
customerPhone: string;
+ customerEmail: string | null;
status: 'CONFIRMED' | 'CANCELLED' | 'COMPLETED' | 'NOSHOW';
createdAt: Date;
updatedAt: Date;
@@ -180,6 +216,7 @@ function mapBookingResponse(booking: {
slug: string;
};
};
+ price?: number;
}): AdminBooking {
return {
id: booking.id,
@@ -198,6 +235,8 @@ function mapBookingResponse(booking: {
endTime: booking.endTime,
customerName: booking.customerName,
customerPhone: booking.customerPhone,
+ customerEmail: booking.customerEmail ?? undefined,
+ price: booking.price ?? 0,
status: booking.status,
createdAt: booking.createdAt.toISOString(),
updatedAt: booking.updatedAt.toISOString(),
@@ -292,6 +331,10 @@ export async function createAdminBooking(
slug: true,
},
},
+ priceRules: {
+ where: { isActive: true },
+ orderBy: [{ dayOfWeek: 'asc' }, { startTime: 'asc' }],
+ },
},
});
@@ -381,6 +424,7 @@ export async function createAdminBooking(
endTime: selectedSlot.endTime,
customerName: input.customerName.trim(),
customerPhone: input.customerPhone.trim(),
+ customerEmail: input.customerEmail?.trim() || null,
status: 'CONFIRMED',
},
include: {
@@ -407,7 +451,9 @@ export async function createAdminBooking(
});
});
- return mapBookingResponse(booking);
+ const price = resolvePrice(court, dayOfWeek, selectedSlot.startTime, selectedSlot.endTime);
+
+ return mapBookingResponse({ ...booking, price });
} catch (error) {
if (error instanceof AdminBookingServiceError) {
throw error;
@@ -521,6 +567,7 @@ export async function updateAdminBookingStatus(
endTime: booking.endTime,
customerName: booking.customerName,
customerPhone: booking.customerPhone,
+ customerEmail: booking.customerEmail,
previousStatus: booking.status,
newStatus: input.status,
changedAt: new Date(),
diff --git a/apps/backend/src/modules/public-booking/handlers/create-public-booking.handler.ts b/apps/backend/src/modules/public-booking/handlers/create-public-booking.handler.ts
index ac1012a..23370d3 100644
--- a/apps/backend/src/modules/public-booking/handlers/create-public-booking.handler.ts
+++ b/apps/backend/src/modules/public-booking/handlers/create-public-booking.handler.ts
@@ -3,6 +3,7 @@ import {
PublicBookingServiceError,
createPublicBooking,
} from '@/modules/public-booking/services/public-booking.service';
+import { sendBookingConfirmation } from '@/services/booking-email.service';
import type { AppContext } from '@/types/hono';
import type { CreatePublicBookingInput } from '@repo/api-contract';
@@ -30,6 +31,19 @@ export async function createPublicBookingHandler(c: AppContext) {
})
);
+ void sendBookingConfirmation({
+ bookingCode: booking.bookingCode,
+ complexName: booking.complexName,
+ date: booking.date,
+ startTime: booking.startTime,
+ endTime: booking.endTime,
+ courtName: booking.courtName,
+ sportName: booking.sport.name,
+ customerName: booking.customerName,
+ customerEmail: booking.customerEmail,
+ price: booking.price,
+ });
+
return c.json(booking, 201);
} catch (error) {
if (error instanceof PublicBookingServiceError) {
diff --git a/apps/backend/src/modules/public-booking/services/public-booking.service.ts b/apps/backend/src/modules/public-booking/services/public-booking.service.ts
index 5c9361b..08cc85f 100644
--- a/apps/backend/src/modules/public-booking/services/public-booking.service.ts
+++ b/apps/backend/src/modules/public-booking/services/public-booking.service.ts
@@ -276,6 +276,8 @@ function mapBookingResponse(input: {
endTime: string;
customerName: string;
customerPhone: string;
+ customerEmail: string | null;
+ price: number;
status: 'CONFIRMED' | 'CANCELLED' | 'COMPLETED' | 'NOSHOW';
court: {
id: string;
@@ -304,7 +306,9 @@ function mapBookingResponse(input: {
endTime: input.endTime,
customerName: input.customerName,
customerPhone: input.customerPhone,
+ customerEmail: input.customerEmail ?? undefined,
status: input.status,
+ price: input.price,
createdAt: input.createdAt.toISOString(),
};
}
@@ -325,6 +329,7 @@ export async function getPublicBookingConfirmation(complexSlug: string, bookingC
bookingDate: true,
startTime: true,
endTime: true,
+ customerEmail: true,
status: true,
createdAt: true,
court: {
@@ -381,6 +386,7 @@ export async function getPublicBookingConfirmation(complexSlug: string, bookingC
slug: booking.court.sport.slug,
},
status: booking.status,
+ customerEmail: booking.customerEmail ?? undefined,
createdAt: booking.createdAt.toISOString(),
};
}
@@ -625,6 +631,7 @@ export async function createPublicBooking(complexSlug: string, input: CreatePubl
endTime: selectedSlot.endTime,
customerName: input.customerName.trim(),
customerPhone: input.customerPhone.trim(),
+ customerEmail: input.customerEmail?.trim() || null,
status: 'CONFIRMED',
},
select: {
@@ -636,11 +643,14 @@ export async function createPublicBooking(complexSlug: string, input: CreatePubl
endTime: true,
customerName: true,
customerPhone: true,
+ customerEmail: true,
status: true,
},
});
});
+ const price = resolveSlotPrice(selectedCourt, dayOfWeek, selectedSlot);
+
return mapBookingResponse({
bookingId: booking.id,
bookingCode: booking.bookingCode,
@@ -650,6 +660,8 @@ export async function createPublicBooking(complexSlug: string, input: CreatePubl
endTime: booking.endTime,
customerName: booking.customerName,
customerPhone: booking.customerPhone,
+ customerEmail: booking.customerEmail,
+ price,
status: booking.status,
court: {
id: selectedCourt.id,
diff --git a/apps/backend/src/services/booking-email.service.ts b/apps/backend/src/services/booking-email.service.ts
new file mode 100644
index 0000000..799547f
--- /dev/null
+++ b/apps/backend/src/services/booking-email.service.ts
@@ -0,0 +1,86 @@
+import {
+ bookingCancelledHtml,
+ bookingConfirmationHtml,
+ bookingNoShowHtml,
+} from '@/emails/booking-confirmation';
+import { sendMail } from '@/lib/mailer';
+
+type BookingEmailInput = {
+ bookingCode: string;
+ complexName: string;
+ date: string;
+ startTime: string;
+ endTime: string;
+ courtName: string;
+ sportName: string;
+ customerName: string;
+ customerEmail?: string;
+ price?: number;
+};
+
+export async function sendBookingConfirmation(data: BookingEmailInput) {
+ if (!data.customerEmail) return;
+
+ const html = bookingConfirmationHtml({
+ bookingCode: data.bookingCode,
+ complexName: data.complexName,
+ date: data.date,
+ startTime: data.startTime,
+ endTime: data.endTime,
+ courtName: data.courtName,
+ sportName: data.sportName,
+ customerName: data.customerName,
+ price: data.price,
+ });
+
+ await sendMail({
+ to: data.customerEmail,
+ subject: `Reserva confirmada en ${data.complexName} | Playzer`,
+ html,
+ text: `Reserva confirmada en ${data.complexName}. Codigo: ${data.bookingCode}. Cancha: ${data.courtName}. Fecha: ${data.date}. Horario: ${data.startTime} - ${data.endTime}.`,
+ });
+}
+
+export async function sendBookingCancelled(data: BookingEmailInput) {
+ if (!data.customerEmail) return;
+
+ const html = bookingCancelledHtml({
+ bookingCode: data.bookingCode,
+ complexName: data.complexName,
+ date: data.date,
+ startTime: data.startTime,
+ endTime: data.endTime,
+ courtName: data.courtName,
+ sportName: data.sportName,
+ customerName: data.customerName,
+ });
+
+ await sendMail({
+ to: data.customerEmail,
+ subject: `Reserva cancelada en ${data.complexName} | Playzer`,
+ html,
+ text: `Reserva cancelada en ${data.complexName}. Codigo: ${data.bookingCode}. Fecha: ${data.date}. Horario: ${data.startTime} - ${data.endTime}.`,
+ });
+}
+
+export async function sendBookingNoShow(data: BookingEmailInput) {
+ if (!data.customerEmail) return;
+
+ const html = bookingNoShowHtml({
+ bookingCode: data.bookingCode,
+ complexName: data.complexName,
+ date: data.date,
+ startTime: data.startTime,
+ endTime: data.endTime,
+ courtName: data.courtName,
+ sportName: data.sportName,
+ customerName: data.customerName,
+ });
+
+ await sendMail({
+ to: data.customerEmail,
+ subject: `Reserva no concretada en ${data.complexName} | Playzer`,
+ html,
+ text: `Reserva no concretada en ${data.complexName}. Codigo: ${data.bookingCode}. Fecha: ${data.date}. Horario: ${data.startTime} - ${data.endTime}.`,
+ });
+}
diff --git a/apps/frontend/src/features/booking/booking-provider.tsx b/apps/frontend/src/features/booking/booking-provider.tsx
index 357d57f..f5b1464 100644
--- a/apps/frontend/src/features/booking/booking-provider.tsx
+++ b/apps/frontend/src/features/booking/booking-provider.tsx
@@ -41,6 +41,7 @@ interface CreateManualBookingPayload {
startTime: string;
customerName: string;
customerPhone: string;
+ customerEmail?: string;
}
interface BookingContextValue {
@@ -315,6 +316,7 @@ export function BookingProvider({ children, complex }: BookingProviderProps) {
startTime: payload.startTime,
customerName: payload.customerName,
customerPhone: payload.customerPhone,
+ customerEmail: payload.customerEmail || undefined,
}),
onSuccess: async () => {
await queryClient.invalidateQueries({ queryKey: ['admin-bookings', complex.id] });
diff --git a/apps/frontend/src/features/booking/components/booking-create-dialog.tsx b/apps/frontend/src/features/booking/components/booking-create-dialog.tsx
index a108c34..9091066 100644
--- a/apps/frontend/src/features/booking/components/booking-create-dialog.tsx
+++ b/apps/frontend/src/features/booking/components/booking-create-dialog.tsx
@@ -42,6 +42,7 @@ const bookingFormSchema = z.object({
.trim()
.min(6, 'Ingresa un telefono válido.')
.max(30, 'El telefono no puede superar los 30 caracteres.'),
+ customerEmail: z.string().email('Ingresá un email válido.').optional().or(z.literal('')),
});
type BookingForm = z.infer;
@@ -76,6 +77,7 @@ export function BookingCreateDialog() {
defaultValues: {
customerName: '',
customerPhone: '',
+ customerEmail: '',
},
});
@@ -154,6 +156,7 @@ export function BookingCreateDialog() {
startTime,
customerName: values.customerName,
customerPhone: values.customerPhone,
+ customerEmail: values.customerEmail || undefined,
});
};
@@ -271,6 +274,23 @@ export function BookingCreateDialog() {
+
+
+ Email (opcional)
+
+
+
+ Se enviará la confirmación de la reserva por email.
+
+
+
+
{createBookingError && {createBookingError}
}
diff --git a/apps/frontend/src/features/public-booking/public-booking-page.tsx b/apps/frontend/src/features/public-booking/public-booking-page.tsx
index e7b6238..43ede17 100644
--- a/apps/frontend/src/features/public-booking/public-booking-page.tsx
+++ b/apps/frontend/src/features/public-booking/public-booking-page.tsx
@@ -62,6 +62,7 @@ const bookingFormSchema = z.object({
.trim()
.min(6, 'Ingresá un teléfono válido.')
.max(30, 'El teléfono no puede superar los 30 caracteres.'),
+ customerEmail: z.string().email('Ingresá un email válido.').optional().or(z.literal('')),
});
type BookingFormValues = z.infer;
@@ -1294,6 +1295,24 @@ function SelectedSlotCard(props: BookingShellProps & { compact?: boolean }) {
+
+
+ Email (opcional)
+
+
+
+ Te enviaremos la confirmación de la reserva por email.
+
+
+
+
{createError && {createError}
}
{navigationError && {navigationError}
}
@@ -1409,6 +1428,7 @@ export function PublicBookingPage({ complexSlug }: PublicBookingPageProps) {
defaultValues: {
customerName: '',
customerPhone: '',
+ customerEmail: '',
},
});
@@ -1425,6 +1445,7 @@ export function PublicBookingPage({ complexSlug }: PublicBookingPageProps) {
startTime: selectedSlot.startTime,
customerName: payload.customerName,
customerPhone: payload.customerPhone,
+ customerEmail: payload.customerEmail || undefined,
});
},
});
diff --git a/packages/api-contract/src/admin-booking.ts b/packages/api-contract/src/admin-booking.ts
index a28229c..89ed3a7 100644
--- a/packages/api-contract/src/admin-booking.ts
+++ b/packages/api-contract/src/admin-booking.ts
@@ -25,6 +25,8 @@ export const adminBookingSchema = z.object({
endTime: z.string().regex(TIME_REGEX),
customerName: z.string(),
customerPhone: z.string(),
+ customerEmail: z.string().optional(),
+ price: z.number().nonnegative(),
status: bookingStatusSchema,
createdAt: z.string().datetime(),
updatedAt: z.string().datetime(),
@@ -52,6 +54,11 @@ export const createAdminBookingSchema = z.object({
.trim()
.min(6, 'El telefono debe tener al menos 6 caracteres.')
.max(30, 'El telefono no puede superar los 30 caracteres.'),
+ customerEmail: z
+ .string()
+ .email('El email ingresado no es valido.')
+ .optional()
+ .or(z.literal('')),
})
export const updateAdminBookingStatusSchema = z.object({
diff --git a/packages/api-contract/src/public-booking.ts b/packages/api-contract/src/public-booking.ts
index 5d75f3f..923744f 100644
--- a/packages/api-contract/src/public-booking.ts
+++ b/packages/api-contract/src/public-booking.ts
@@ -57,6 +57,11 @@ export const createPublicBookingSchema = z.object({
.trim()
.min(6, 'El telefono debe tener al menos 6 caracteres.')
.max(30, 'El telefono no puede superar los 30 caracteres.'),
+ customerEmail: z
+ .string()
+ .email('El email ingresado no es valido.')
+ .optional()
+ .or(z.literal('')),
})
export const publicBookingSchema = z.object({
@@ -73,7 +78,9 @@ export const publicBookingSchema = z.object({
endTime: z.string().regex(TIME_REGEX),
customerName: z.string(),
customerPhone: z.string(),
+ customerEmail: z.string().optional(),
status: z.enum(['CONFIRMED', 'CANCELLED', 'COMPLETED']),
+ price: z.number().nonnegative(),
createdAt: z.string().datetime(),
})
@@ -89,6 +96,7 @@ export const publicBookingConfirmationSchema = z.object({
courtName: z.string(),
sport: publicBookingSportSchema,
status: z.enum(['CONFIRMED', 'CANCELLED', 'COMPLETED']),
+ customerEmail: z.string().optional(),
createdAt: z.string().datetime(),
})