From 3cba2fa485db07dad5dc90c4f76156d6accd1152 Mon Sep 17 00:00:00 2001 From: Jose Selesan Date: Thu, 9 Apr 2026 16:18:58 -0300 Subject: [PATCH] New fields for complex --- apps/backend/prisma/complex.prisma | 3 + .../migration.sql | 4 + .../src/generated/prisma/internal/class.ts | 8 +- .../prisma/internal/prismaNamespace.ts | 3 + .../prisma/internal/prismaNamespaceBrowser.ts | 3 + .../src/generated/prisma/models/Complex.ts | 131 ++++++++++- .../handlers/create-complex.handler.ts | 3 + .../complex/services/complex.service.ts | 21 ++ .../onboarding/services/onboarding.service.ts | 3 + .../complex/complex-settings-page.tsx | 87 +++++++ .../components/complex-courts-section.tsx | 73 ++++++ .../components/complex-details-section.tsx | 213 ++++++++++++++++++ .../_authenticated/complex/$slug/edit.tsx | 4 +- packages/api-contract/src/complex.ts | 39 ++++ packages/api-contract/src/onboarding.ts | 15 ++ 15 files changed, 603 insertions(+), 7 deletions(-) create mode 100644 apps/backend/prisma/migrations/20260409190758_add_city_to_complex/migration.sql create mode 100644 apps/frontend/src/features/complex/complex-settings-page.tsx create mode 100644 apps/frontend/src/features/complex/components/complex-courts-section.tsx create mode 100644 apps/frontend/src/features/complex/components/complex-details-section.tsx diff --git a/apps/backend/prisma/complex.prisma b/apps/backend/prisma/complex.prisma index dd33e36..37a285a 100644 --- a/apps/backend/prisma/complex.prisma +++ b/apps/backend/prisma/complex.prisma @@ -2,6 +2,9 @@ model Complex { id String @id @db.Uuid complexName String @map("complex_name") physicalAddress String? @map("physical_address") @db.VarChar(200) + city String? @map("city") @db.VarChar(100) + state String? @map("state") @db.VarChar(100) + country String? @map("country") @db.VarChar(100) complexSlug String @unique @map("complex_slug") adminEmail String @map("admin_email") planCode String? @map("plan_code") @db.VarChar(10) diff --git a/apps/backend/prisma/migrations/20260409190758_add_city_to_complex/migration.sql b/apps/backend/prisma/migrations/20260409190758_add_city_to_complex/migration.sql new file mode 100644 index 0000000..1477b7a --- /dev/null +++ b/apps/backend/prisma/migrations/20260409190758_add_city_to_complex/migration.sql @@ -0,0 +1,4 @@ +-- AlterTable +ALTER TABLE "complexes" ADD COLUMN "city" VARCHAR(100), +ADD COLUMN "country" VARCHAR(100), +ADD COLUMN "state" VARCHAR(100); diff --git a/apps/backend/src/generated/prisma/internal/class.ts b/apps/backend/src/generated/prisma/internal/class.ts index 59b22cf..0583379 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 Complex {\n id String @id @db.Uuid\n complexName String @map(\"complex_name\")\n physicalAddress String? @map(\"physical_address\") @db.VarChar(200)\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 courts Court[]\n\n @@index([planCode])\n @@index([complexSlug])\n @@map(\"complexes\")\n}\n\nenum ComplexUserRole {\n ADMIN\n}\n\nmodel ComplexUser {\n complexId String @map(\"complex_id\") @db.Uuid\n userId String @map(\"user_id\") @db.Uuid\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\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}\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 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 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\nmodel User {\n id String @id @db.Uuid\n supabaseUserId String @unique @map(\"supabase_user_id\") @db.Uuid\n email String @unique\n fullName String @map(\"full_name\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complexes ComplexUser[]\n\n @@map(\"users\")\n}\n", + "inlineSchema": "model 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 courts Court[]\n\n @@index([planCode])\n @@index([complexSlug])\n @@map(\"complexes\")\n}\n\nenum ComplexUserRole {\n ADMIN\n}\n\nmodel ComplexUser {\n complexId String @map(\"complex_id\") @db.Uuid\n userId String @map(\"user_id\") @db.Uuid\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\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}\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 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 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\nmodel User {\n id String @id @db.Uuid\n supabaseUserId String @unique @map(\"supabase_user_id\") @db.Uuid\n email String @unique\n fullName String @map(\"full_name\")\n createdAt DateTime @default(now()) @map(\"created_at\")\n updatedAt DateTime @updatedAt @map(\"updated_at\")\n complexes ComplexUser[]\n\n @@map(\"users\")\n}\n", "runtimeDataModel": { "models": {}, "enums": {}, @@ -32,10 +32,10 @@ const config: runtime.GetPrismaClientConfig = { } } -config.runtimeDataModel = JSON.parse("{\"models\":{\"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\":\"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\":\"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\"},\"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\"},\"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\"},\"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\"},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"supabaseUserId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"supabase_user_id\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"full_name\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"users\"}},\"enums\":{},\"types\":{}}") +config.runtimeDataModel = JSON.parse("{\"models\":{\"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\":\"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\"},\"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\"},\"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\"},\"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\"},\"User\":{\"fields\":[{\"name\":\"id\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"supabaseUserId\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"supabase_user_id\"},{\"name\":\"email\",\"kind\":\"scalar\",\"type\":\"String\"},{\"name\":\"fullName\",\"kind\":\"scalar\",\"type\":\"String\",\"dbName\":\"full_name\"},{\"name\":\"createdAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"created_at\"},{\"name\":\"updatedAt\",\"kind\":\"scalar\",\"type\":\"DateTime\",\"dbName\":\"updated_at\"},{\"name\":\"complexes\",\"kind\":\"object\",\"type\":\"ComplexUser\",\"relationName\":\"ComplexUserToUser\"}],\"dbName\":\"users\"}},\"enums\":{},\"types\":{}}") config.parameterizationSchema = { - strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"complexes\",\"_count\",\"plan\",\"complex\",\"user\",\"users\",\"courts\",\"sport\",\"court\",\"availabilities\",\"priceRules\",\"bookings\",\"Complex.findUnique\",\"Complex.findUniqueOrThrow\",\"Complex.findFirst\",\"Complex.findFirstOrThrow\",\"Complex.findMany\",\"data\",\"Complex.createOne\",\"Complex.createMany\",\"Complex.createManyAndReturn\",\"Complex.updateOne\",\"Complex.updateMany\",\"Complex.updateManyAndReturn\",\"create\",\"update\",\"Complex.upsertOne\",\"Complex.deleteOne\",\"Complex.deleteMany\",\"having\",\"_min\",\"_max\",\"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\",\"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\",\"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\",\"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\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"supabaseUserId\",\"email\",\"fullName\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"every\",\"some\",\"none\",\"code\",\"name\",\"price\",\"rules\",\"lastUpdatedAt\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"otpHash\",\"otpExpiresAt\",\"otpAttempts\",\"otpLastSentAt\",\"otpResendCount\",\"emailVerifiedAt\",\"completedAt\",\"bookingCode\",\"courtId\",\"bookingDate\",\"startTime\",\"endTime\",\"customerName\",\"customerPhone\",\"CourtBookingStatus\",\"status\",\"DayOfWeek\",\"dayOfWeek\",\"isActive\",\"complexId\",\"sportId\",\"slotDurationMinutes\",\"basePrice\",\"slug\",\"userId\",\"ComplexUserRole\",\"role\",\"complexName\",\"physicalAddress\",\"complexSlug\",\"adminEmail\",\"planCode\",\"courtId_bookingDate_startTime\",\"complexId_userId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), - graph: "ygReoAEOBQAA4wIAIAgAAJwCACAJAADJAgAgtwEAAOICADC4AQAABQAQuQEAAOICADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEAAAAB9wEBAJoCACH4AQEA1QIAIQEAAAABACAJAwAApwIAILcBAACkAgAwuAEAAAMAELkBAACkAgAwzgEBAJoCACHPAQEAmgIAIdABEAClAgAh0QEAAKYCACDSAUAAmwIAIQEAAAADACAOBQAA4wIAIAgAAJwCACAJAADJAgAgtwEAAOICADC4AQAABQAQuQEAAOICADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACH0AQEAmgIAIfUBAQDVAgAh9gEBAJoCACH3AQEAmgIAIfgBAQDVAgAhBQUAAJoEACAIAAD6AgAgCQAAigQAIPUBAADdAwAg-AEAAN0DACADAAAABQAgAQAABgAwAgAAAQAgAQAAAAUAIAkGAADZAgAgBwAA4QIAILcBAADfAgAwuAEAAAkAELkBAADfAgAwvgFAAJsCACHsAQEAmQIAIfEBAQCZAgAh8wEAAOAC8wEiAgYAAJQEACAHAACZBAAgCgYAANkCACAHAADhAgAgtwEAAN8CADC4AQAACQAQuQEAAN8CADC-AUAAmwIAIewBAQCZAgAh8QEBAJkCACHzAQAA4ALzASL6AQAA3gIAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgAQAAAAkAIBAGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAhzwEBAJoCACHsAQEAmQIAIe0BAQCZAgAh7gECALECACHvARAApQIAIQUGAACUBAAgCgAAlQQAIAwAAJYEACANAACXBAAgDgAAmAQAIBAGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAAAAAb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIewBAQCZAgAh7QEBAJkCACHuAQIAsQIAIe8BEAClAgAhAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACABAAAADwAgCgsAANICACC3AQAA1gIAMLgBAAAVABC5AQAA1gIAMLoBAQCZAgAhvgFAAJsCACHhAQEAmQIAIeMBAQCaAgAh5AEBAJoCACHqAQAA1wLqASIBCwAAkwQAIAoLAADSAgAgtwEAANYCADC4AQAAFQAQuQEAANYCADC6AQEAAAABvgFAAJsCACHhAQEAmQIAIeMBAQCaAgAh5AEBAJoCACHqAQAA1wLqASIDAAAAFQAgAQAAFgAwAgAAFwAgDQsAANICACC3AQAA0wIAMLgBAAAZABC5AQAA0wIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEECwAAkwQAIOMBAADdAwAg5AEAAN0DACDqAQAA3QMAIA0LAADSAgAgtwEAANMCADC4AQAAGQAQuQEAANMCADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEDAAAAGQAgAQAAGgAwAgAAGwAgDwsAANICACC3AQAA0AIAMLgBAAAdABC5AQAA0AIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIeABAQCaAgAh4QEBAJkCACHiAUAAmwIAIeMBAQCaAgAh5AEBAJoCACHlAQEAmgIAIeYBAQCaAgAh6AEAANEC6AEiAQsAAJMEACAQCwAA0gIAILcBAADQAgAwuAEAAB0AELkBAADQAgAwugEBAAAAAb4BQACbAgAhvwFAAJsCACHgAQEAAAAB4QEBAJkCACHiAUAAmwIAIeMBAQCaAgAh5AEBAJoCACHlAQEAmgIAIeYBAQCaAgAh6AEAANEC6AEi-QEAAM8CACADAAAAHQAgAQAAHgAwAgAAHwAgAQAAABUAIAEAAAAZACABAAAAHQAgAQAAAAkAIAEAAAAPACABAAAAAQAgAwAAAAUAIAEAAAYAMAIAAAEAIAMAAAAFACABAAAGADACAAABACADAAAABQAgAQAABgAwAgAAAQAgCwUAAJIEACAIAADZAwAgCQAA2gMAILoBAQAAAAG-AUAAAAABvwFAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAABARQAACoAIAi6AQEAAAABvgFAAAAAAb8BQAAAAAH0AQEAAAAB9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAQEUAAAsADABFAAALAAwAQAAAAMAIAsFAACRBAAgCAAAjgMAIAkAAI8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACH0AQEA5wIAIfUBAQCMAwAh9gEBAOcCACH3AQEA5wIAIfgBAQCMAwAhAgAAAAEAIBQAADAAIAi6AQEA5wIAIb4BQADoAgAhvwFAAOgCACH0AQEA5wIAIfUBAQCMAwAh9gEBAOcCACH3AQEA5wIAIfgBAQCMAwAhAgAAAAUAIBQAADIAIAIAAAAFACAUAAAyACABAAAAAwAgAwAAAAEAIBsAACoAIBwAADAAIAEAAAABACABAAAABQAgBQQAAI4EACAhAACQBAAgIgAAjwQAIPUBAADdAwAg-AEAAN0DACALtwEAAM4CADC4AQAAOgAQuQEAAM4CADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACH0AQEAkAIAIfUBAQC5AgAh9gEBAJACACH3AQEAkAIAIfgBAQC5AgAhAwAAAAUAIAEAADkAMCAAADoAIAMAAAAFACABAAAGADACAAABACABAAAACwAgAQAAAAsAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgAwAAAAkAIAEAAAoAMAIAAAsAIAYGAAD4AgAgBwAA1wMAIL4BQAAAAAHsAQEAAAAB8QEBAAAAAfMBAAAA8wECARQAAEIAIAS-AUAAAAAB7AEBAAAAAfEBAQAAAAHzAQAAAPMBAgEUAABEADABFAAARAAwBgYAAPYCACAHAADVAwAgvgFAAOgCACHsAQEA5wIAIfEBAQDnAgAh8wEAAPQC8wEiAgAAAAsAIBQAAEcAIAS-AUAA6AIAIewBAQDnAgAh8QEBAOcCACHzAQAA9ALzASICAAAACQAgFAAASQAgAgAAAAkAIBQAAEkAIAMAAAALACAbAABCACAcAABHACABAAAACwAgAQAAAAkAIAMEAACLBAAgIQAAjQQAICIAAIwEACAHtwEAAMoCADC4AQAAUAAQuQEAAMoCADC-AUAAkQIAIewBAQCPAgAh8QEBAI8CACHzAQAAywLzASIDAAAACQAgAQAATwAwIAAAUAAgAwAAAAkAIAEAAAoAMAIAAAsAIAoJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIc8BAQAAAAHrASAAyAIAIfABAQAAAAEBAAAAUwAgAQAAAFMAIAoJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIesBIADIAgAh8AEBAJoCACEBCQAAigQAIAMAAABWACABAABXADACAABTACADAAAAVgAgAQAAVwAwAgAAUwAgAwAAAFYAIAEAAFcAMAIAAFMAIAcJAACJBAAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAesBIAAAAAHwAQEAAAABARQAAFsAIAa6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB6wEgAAAAAfABAQAAAAEBFAAAXQAwARQAAF0AMAcJAAD_AwAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHrASAAuAMAIfABAQDnAgAhAgAAAFMAIBQAAGAAIAa6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIesBIAC4AwAh8AEBAOcCACECAAAAVgAgFAAAYgAgAgAAAFYAIBQAAGIAIAMAAABTACAbAABbACAcAABgACABAAAAUwAgAQAAAFYAIAMEAAD8AwAgIQAA_gMAICIAAP0DACAJtwEAAMYCADC4AQAAaQAQuQEAAMYCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHPAQEAkAIAIesBIAC6AgAh8AEBAJACACEDAAAAVgAgAQAAaAAwIAAAaQAgAwAAAFYAIAEAAFcAMAIAAFMAIAEAAAARACABAAAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACADAAAADwAgAQAAEAAwAgAAEQAgDQYAAPsDACAKAADJAwAgDAAAygMAIA0AAMsDACAOAADMAwAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAEBFAAAcQAgCLoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAHvARAAAAABARQAAHMAMAEUAABzADANBgAA-gMAIAoAAJwDACAMAACdAwAgDQAAngMAIA4AAJ8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhAgAAABEAIBQAAHYAIAi6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhAgAAAA8AIBQAAHgAIAIAAAAPACAUAAB4ACADAAAAEQAgGwAAcQAgHAAAdgAgAQAAABEAIAEAAAAPACAFBAAA9QMAICEAAPgDACAiAAD3AwAgUwAA9gMAIFQAAPkDACALtwEAAMUCADC4AQAAfwAQuQEAAMUCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHPAQEAkAIAIewBAQCPAgAh7QEBAI8CACHuAQIAqQIAIe8BEACfAgAhAwAAAA8AIAEAAH4AMCAAAH8AIAMAAAAPACABAAAQADACAAARACABAAAAFwAgAQAAABcAIAMAAAAVACABAAAWADACAAAXACADAAAAFQAgAQAAFgAwAgAAFwAgAwAAABUAIAEAABYAMAIAABcAIAcLAAD0AwAgugEBAAAAAb4BQAAAAAHhAQEAAAAB4wEBAAAAAeQBAQAAAAHqAQAAAOoBAgEUAACHAQAgBroBAQAAAAG-AUAAAAAB4QEBAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQIBFAAAiQEAMAEUAACJAQAwBwsAAPMDACC6AQEA5wIAIb4BQADoAgAh4QEBAOcCACHjAQEA5wIAIeQBAQDnAgAh6gEAAMUD6gEiAgAAABcAIBQAAIwBACAGugEBAOcCACG-AUAA6AIAIeEBAQDnAgAh4wEBAOcCACHkAQEA5wIAIeoBAADFA-oBIgIAAAAVACAUAACOAQAgAgAAABUAIBQAAI4BACADAAAAFwAgGwAAhwEAIBwAAIwBACABAAAAFwAgAQAAABUAIAMEAADwAwAgIQAA8gMAICIAAPEDACAJtwEAAMECADC4AQAAlQEAELkBAADBAgAwugEBAI8CACG-AUAAkQIAIeEBAQCPAgAh4wEBAJACACHkAQEAkAIAIeoBAADCAuoBIgMAAAAVACABAACUAQAwIAAAlQEAIAMAAAAVACABAAAWADACAAAXACABAAAAGwAgAQAAABsAIAMAAAAZACABAAAaADACAAAbACADAAAAGQAgAQAAGgAwAgAAGwAgAwAAABkAIAEAABoAMAIAABsAIAoLAADvAwAgugEBAAAAAb4BQAAAAAG_AUAAAAAB0AEQAAAAAeEBAQAAAAHjAQEAAAAB5AEBAAAAAeoBAAAA6gED6wEgAAAAAQEUAACdAQAgCboBAQAAAAG-AUAAAAABvwFAAAAAAdABEAAAAAHhAQEAAAAB4wEBAAAAAeQBAQAAAAHqAQAAAOoBA-sBIAAAAAEBFAAAnwEAMAEUAACfAQAwCgsAAO4DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHQARAAgAMAIeEBAQDnAgAh4wEBAIwDACHkAQEAjAMAIeoBAAC3A-oBI-sBIAC4AwAhAgAAABsAIBQAAKIBACAJugEBAOcCACG-AUAA6AIAIb8BQADoAgAh0AEQAIADACHhAQEA5wIAIeMBAQCMAwAh5AEBAIwDACHqAQAAtwPqASPrASAAuAMAIQIAAAAZACAUAACkAQAgAgAAABkAIBQAAKQBACADAAAAGwAgGwAAnQEAIBwAAKIBACABAAAAGwAgAQAAABkAIAgEAADpAwAgIQAA7AMAICIAAOsDACBTAADqAwAgVAAA7QMAIOMBAADdAwAg5AEAAN0DACDqAQAA3QMAIAy3AQAAtwIAMLgBAACrAQAQuQEAALcCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHQARAAnwIAIeEBAQCPAgAh4wEBALkCACHkAQEAuQIAIeoBAAC4AuoBI-sBIAC6AgAhAwAAABkAIAEAAKoBADAgAACrAQAgAwAAABkAIAEAABoAMAIAABsAIAEAAAAfACABAAAAHwAgAwAAAB0AIAEAAB4AMAIAAB8AIAMAAAAdACABAAAeADACAAAfACADAAAAHQAgAQAAHgAwAgAAHwAgDAsAAOgDACC6AQEAAAABvgFAAAAAAb8BQAAAAAHgAQEAAAAB4QEBAAAAAeIBQAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB6AEAAADoAQIBFAAAswEAIAu6AQEAAAABvgFAAAAAAb8BQAAAAAHgAQEAAAAB4QEBAAAAAeIBQAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB6AEAAADoAQIBFAAAtQEAMAEUAAC1AQAwDAsAAOcDACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHgAQEA5wIAIeEBAQDnAgAh4gFAAOgCACHjAQEA5wIAIeQBAQDnAgAh5QEBAOcCACHmAQEA5wIAIegBAACqA-gBIgIAAAAfACAUAAC4AQAgC7oBAQDnAgAhvgFAAOgCACG_AUAA6AIAIeABAQDnAgAh4QEBAOcCACHiAUAA6AIAIeMBAQDnAgAh5AEBAOcCACHlAQEA5wIAIeYBAQDnAgAh6AEAAKoD6AEiAgAAAB0AIBQAALoBACACAAAAHQAgFAAAugEAIAMAAAAfACAbAACzAQAgHAAAuAEAIAEAAAAfACABAAAAHQAgAwQAAOQDACAhAADmAwAgIgAA5QMAIA63AQAAswIAMLgBAADBAQAQuQEAALMCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHgAQEAkAIAIeEBAQCPAgAh4gFAAJECACHjAQEAkAIAIeQBAQCQAgAh5QEBAJACACHmAQEAkAIAIegBAAC0AugBIgMAAAAdACABAADAAQAwIAAAwQEAIAMAAAAdACABAAAeADACAAAfACAPtwEAALACADC4AQAAxwEAELkBAACwAgAwugEBAAAAAbwBAQCaAgAhvQEBAJoCACG-AUAAmwIAIb8BQACbAgAh2QEBAJoCACHaAUAAmwIAIdsBAgCxAgAh3AFAAJsCACHdAQIAsQIAId4BQACyAgAh3wFAALICACEBAAAAxAEAIAEAAADEAQAgD7cBAACwAgAwuAEAAMcBABC5AQAAsAIAMLoBAQCZAgAhvAEBAJoCACG9AQEAmgIAIb4BQACbAgAhvwFAAJsCACHZAQEAmgIAIdoBQACbAgAh2wECALECACHcAUAAmwIAId0BAgCxAgAh3gFAALICACHfAUAAsgIAIQLeAQAA3QMAIN8BAADdAwAgAwAAAMcBACABAADIAQAwAgAAxAEAIAMAAADHAQAgAQAAyAEAMAIAAMQBACADAAAAxwEAIAEAAMgBADACAADEAQAgDLoBAQAAAAG8AQEAAAABvQEBAAAAAb4BQAAAAAG_AUAAAAAB2QEBAAAAAdoBQAAAAAHbAQIAAAAB3AFAAAAAAd0BAgAAAAHeAUAAAAAB3wFAAAAAAQEUAADMAQAgDLoBAQAAAAG8AQEAAAABvQEBAAAAAb4BQAAAAAG_AUAAAAAB2QEBAAAAAdoBQAAAAAHbAQIAAAAB3AFAAAAAAd0BAgAAAAHeAUAAAAAB3wFAAAAAAQEUAADOAQAwARQAAM4BADAMugEBAOcCACG8AQEA5wIAIb0BAQDnAgAhvgFAAOgCACG_AUAA6AIAIdkBAQDnAgAh2gFAAOgCACHbAQIAmgMAIdwBQADoAgAh3QECAJoDACHeAUAA4wMAId8BQADjAwAhAgAAAMQBACAUAADRAQAgDLoBAQDnAgAhvAEBAOcCACG9AQEA5wIAIb4BQADoAgAhvwFAAOgCACHZAQEA5wIAIdoBQADoAgAh2wECAJoDACHcAUAA6AIAId0BAgCaAwAh3gFAAOMDACHfAUAA4wMAIQIAAADHAQAgFAAA0wEAIAIAAADHAQAgFAAA0wEAIAMAAADEAQAgGwAAzAEAIBwAANEBACABAAAAxAEAIAEAAADHAQAgBwQAAN4DACAhAADhAwAgIgAA4AMAIFMAAN8DACBUAADiAwAg3gEAAN0DACDfAQAA3QMAIA-3AQAAqAIAMLgBAADaAQAQuQEAAKgCADC6AQEAjwIAIbwBAQCQAgAhvQEBAJACACG-AUAAkQIAIb8BQACRAgAh2QEBAJACACHaAUAAkQIAIdsBAgCpAgAh3AFAAJECACHdAQIAqQIAId4BQACqAgAh3wFAAKoCACEDAAAAxwEAIAEAANkBADAgAADaAQAgAwAAAMcBACABAADIAQAwAgAAxAEAIAkDAACnAgAgtwEAAKQCADC4AQAAAwAQuQEAAKQCADDOAQEAAAABzwEBAJoCACHQARAApQIAIdEBAACmAgAg0gFAAJsCACEBAAAA3QEAIAEAAADdAQAgAQMAANwDACADAAAAAwAgAQAA4AEAMAIAAN0BACADAAAAAwAgAQAA4AEAMAIAAN0BACADAAAAAwAgAQAA4AEAMAIAAN0BACAGAwAA2wMAIM4BAQAAAAHPAQEAAAAB0AEQAAAAAdEBgAAAAAHSAUAAAAABARQAAOQBACAFzgEBAAAAAc8BAQAAAAHQARAAAAAB0QGAAAAAAdIBQAAAAAEBFAAA5gEAMAEUAADmAQAwBgMAAIEDACDOAQEA5wIAIc8BAQDnAgAh0AEQAIADACHRAYAAAAAB0gFAAOgCACECAAAA3QEAIBQAAOkBACAFzgEBAOcCACHPAQEA5wIAIdABEACAAwAh0QGAAAAAAdIBQADoAgAhAgAAAAMAIBQAAOsBACACAAAAAwAgFAAA6wEAIAMAAADdAQAgGwAA5AEAIBwAAOkBACABAAAA3QEAIAEAAAADACAFBAAA-wIAICEAAP4CACAiAAD9AgAgUwAA_AIAIFQAAP8CACAItwEAAJ4CADC4AQAA8gEAELkBAACeAgAwzgEBAJACACHPAQEAkAIAIdABEACfAgAh0QEAAKACACDSAUAAkQIAIQMAAAADACABAADxAQAwIAAA8gEAIAMAAAADACABAADgAQAwAgAA3QEAIAoDAACcAgAgtwEAAJgCADC4AQAA-AEAELkBAACYAgAwugEBAAAAAbsBAQAAAAG8AQEAAAABvQEBAJoCACG-AUAAmwIAIb8BQACbAgAhAQAAAPUBACABAAAA9QEAIAoDAACcAgAgtwEAAJgCADC4AQAA-AEAELkBAACYAgAwugEBAJkCACG7AQEAmQIAIbwBAQCaAgAhvQEBAJoCACG-AUAAmwIAIb8BQACbAgAhAQMAAPoCACADAAAA-AEAIAEAAPkBADACAAD1AQAgAwAAAPgBACABAAD5AQAwAgAA9QEAIAMAAAD4AQAgAQAA-QEAMAIAAPUBACAHAwAA-QIAILoBAQAAAAG7AQEAAAABvAEBAAAAAb0BAQAAAAG-AUAAAAABvwFAAAAAAQEUAAD9AQAgBroBAQAAAAG7AQEAAAABvAEBAAAAAb0BAQAAAAG-AUAAAAABvwFAAAAAAQEUAAD_AQAwARQAAP8BADAHAwAA6QIAILoBAQDnAgAhuwEBAOcCACG8AQEA5wIAIb0BAQDnAgAhvgFAAOgCACG_AUAA6AIAIQIAAAD1AQAgFAAAggIAIAa6AQEA5wIAIbsBAQDnAgAhvAEBAOcCACG9AQEA5wIAIb4BQADoAgAhvwFAAOgCACECAAAA-AEAIBQAAIQCACACAAAA-AEAIBQAAIQCACADAAAA9QEAIBsAAP0BACAcAACCAgAgAQAAAPUBACABAAAA-AEAIAMEAADkAgAgIQAA5gIAICIAAOUCACAJtwEAAI4CADC4AQAAiwIAELkBAACOAgAwugEBAI8CACG7AQEAjwIAIbwBAQCQAgAhvQEBAJACACG-AUAAkQIAIb8BQACRAgAhAwAAAPgBACABAACKAgAwIAAAiwIAIAMAAAD4AQAgAQAA-QEAMAIAAPUBACAJtwEAAI4CADC4AQAAiwIAELkBAACOAgAwugEBAI8CACG7AQEAjwIAIbwBAQCQAgAhvQEBAJACACG-AUAAkQIAIb8BQACRAgAhCwQAAJMCACAhAACWAgAgIgAAlgIAIMABAQAAAAHBAQEAAAAEwgEBAAAABMMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAlwIAIQ4EAACTAgAgIQAAlgIAICIAAJYCACDAAQEAAAABwQEBAAAABMIBAQAAAATDAQEAAAABxAEBAAAAAcUBAQAAAAHGAQEAAAABxwEBAJUCACHIAQEAAAAByQEBAAAAAcoBAQAAAAELBAAAkwIAICEAAJQCACAiAACUAgAgwAFAAAAAAcEBQAAAAATCAUAAAAAEwwFAAAAAAcQBQAAAAAHFAUAAAAABxgFAAAAAAccBQACSAgAhCwQAAJMCACAhAACUAgAgIgAAlAIAIMABQAAAAAHBAUAAAAAEwgFAAAAABMMBQAAAAAHEAUAAAAABxQFAAAAAAcYBQAAAAAHHAUAAkgIAIQjAAQIAAAABwQECAAAABMIBAgAAAATDAQIAAAABxAECAAAAAcUBAgAAAAHGAQIAAAABxwECAJMCACEIwAFAAAAAAcEBQAAAAATCAUAAAAAEwwFAAAAAAcQBQAAAAAHFAUAAAAABxgFAAAAAAccBQACUAgAhDgQAAJMCACAhAACWAgAgIgAAlgIAIMABAQAAAAHBAQEAAAAEwgEBAAAABMMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAlQIAIcgBAQAAAAHJAQEAAAABygEBAAAAAQvAAQEAAAABwQEBAAAABMIBAQAAAATDAQEAAAABxAEBAAAAAcUBAQAAAAHGAQEAAAABxwEBAJYCACHIAQEAAAAByQEBAAAAAcoBAQAAAAELBAAAkwIAICEAAJYCACAiAACWAgAgwAEBAAAAAcEBAQAAAATCAQEAAAAEwwEBAAAAAcQBAQAAAAHFAQEAAAABxgEBAAAAAccBAQCXAgAhCgMAAJwCACC3AQAAmAIAMLgBAAD4AQAQuQEAAJgCADC6AQEAmQIAIbsBAQCZAgAhvAEBAJoCACG9AQEAmgIAIb4BQACbAgAhvwFAAJsCACEIwAEBAAAAAcEBAQAAAATCAQEAAAAEwwEBAAAAAcQBAQAAAAHFAQEAAAABxgEBAAAAAccBAQCdAgAhC8ABAQAAAAHBAQEAAAAEwgEBAAAABMMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAlgIAIcgBAQAAAAHJAQEAAAABygEBAAAAAQjAAUAAAAABwQFAAAAABMIBQAAAAATDAUAAAAABxAFAAAAAAcUBQAAAAAHGAUAAAAABxwFAAJQCACEDywEAAAkAIMwBAAAJACDNAQAACQAgCMABAQAAAAHBAQEAAAAEwgEBAAAABMMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAnQIAIQi3AQAAngIAMLgBAADyAQAQuQEAAJ4CADDOAQEAkAIAIc8BAQCQAgAh0AEQAJ8CACHRAQAAoAIAINIBQACRAgAhDQQAAJMCACAhAACjAgAgIgAAowIAIFMAAKMCACBUAACjAgAgwAEQAAAAAcEBEAAAAATCARAAAAAEwwEQAAAAAcQBEAAAAAHFARAAAAABxgEQAAAAAccBEACiAgAhDwQAAJMCACAhAAChAgAgIgAAoQIAIMABgAAAAAHDAYAAAAABxAGAAAAAAcUBgAAAAAHGAYAAAAABxwGAAAAAAdMBAQAAAAHUAQEAAAAB1QEBAAAAAdYBgAAAAAHXAYAAAAAB2AGAAAAAAQzAAYAAAAABwwGAAAAAAcQBgAAAAAHFAYAAAAABxgGAAAAAAccBgAAAAAHTAQEAAAAB1AEBAAAAAdUBAQAAAAHWAYAAAAAB1wGAAAAAAdgBgAAAAAENBAAAkwIAICEAAKMCACAiAACjAgAgUwAAowIAIFQAAKMCACDAARAAAAABwQEQAAAABMIBEAAAAATDARAAAAABxAEQAAAAAcUBEAAAAAHGARAAAAABxwEQAKICACEIwAEQAAAAAcEBEAAAAATCARAAAAAEwwEQAAAAAcQBEAAAAAHFARAAAAABxgEQAAAAAccBEACjAgAhCQMAAKcCACC3AQAApAIAMLgBAAADABC5AQAApAIAMM4BAQCaAgAhzwEBAJoCACHQARAApQIAIdEBAACmAgAg0gFAAJsCACEIwAEQAAAAAcEBEAAAAATCARAAAAAEwwEQAAAAAcQBEAAAAAHFARAAAAABxgEQAAAAAccBEACjAgAhDMABgAAAAAHDAYAAAAABxAGAAAAAAcUBgAAAAAHGAYAAAAABxwGAAAAAAdMBAQAAAAHUAQEAAAAB1QEBAAAAAdYBgAAAAAHXAYAAAAAB2AGAAAAAAQPLAQAABQAgzAEAAAUAIM0BAAAFACAPtwEAAKgCADC4AQAA2gEAELkBAACoAgAwugEBAI8CACG8AQEAkAIAIb0BAQCQAgAhvgFAAJECACG_AUAAkQIAIdkBAQCQAgAh2gFAAJECACHbAQIAqQIAIdwBQACRAgAh3QECAKkCACHeAUAAqgIAId8BQACqAgAhDQQAAJMCACAhAACTAgAgIgAAkwIAIFMAAK8CACBUAACTAgAgwAECAAAAAcEBAgAAAATCAQIAAAAEwwECAAAAAcQBAgAAAAHFAQIAAAABxgECAAAAAccBAgCuAgAhCwQAAKwCACAhAACtAgAgIgAArQIAIMABQAAAAAHBAUAAAAAFwgFAAAAABcMBQAAAAAHEAUAAAAABxQFAAAAAAcYBQAAAAAHHAUAAqwIAIQsEAACsAgAgIQAArQIAICIAAK0CACDAAUAAAAABwQFAAAAABcIBQAAAAAXDAUAAAAABxAFAAAAAAcUBQAAAAAHGAUAAAAABxwFAAKsCACEIwAECAAAAAcEBAgAAAAXCAQIAAAAFwwECAAAAAcQBAgAAAAHFAQIAAAABxgECAAAAAccBAgCsAgAhCMABQAAAAAHBAUAAAAAFwgFAAAAABcMBQAAAAAHEAUAAAAABxQFAAAAAAcYBQAAAAAHHAUAArQIAIQ0EAACTAgAgIQAAkwIAICIAAJMCACBTAACvAgAgVAAAkwIAIMABAgAAAAHBAQIAAAAEwgECAAAABMMBAgAAAAHEAQIAAAABxQECAAAAAcYBAgAAAAHHAQIArgIAIQjAAQgAAAABwQEIAAAABMIBCAAAAATDAQgAAAABxAEIAAAAAcUBCAAAAAHGAQgAAAABxwEIAK8CACEPtwEAALACADC4AQAAxwEAELkBAACwAgAwugEBAJkCACG8AQEAmgIAIb0BAQCaAgAhvgFAAJsCACG_AUAAmwIAIdkBAQCaAgAh2gFAAJsCACHbAQIAsQIAIdwBQACbAgAh3QECALECACHeAUAAsgIAId8BQACyAgAhCMABAgAAAAHBAQIAAAAEwgECAAAABMMBAgAAAAHEAQIAAAABxQECAAAAAcYBAgAAAAHHAQIAkwIAIQjAAUAAAAABwQFAAAAABcIBQAAAAAXDAUAAAAABxAFAAAAAAcUBQAAAAAHGAUAAAAABxwFAAK0CACEOtwEAALMCADC4AQAAwQEAELkBAACzAgAwugEBAI8CACG-AUAAkQIAIb8BQACRAgAh4AEBAJACACHhAQEAjwIAIeIBQACRAgAh4wEBAJACACHkAQEAkAIAIeUBAQCQAgAh5gEBAJACACHoAQAAtALoASIHBAAAkwIAICEAALYCACAiAAC2AgAgwAEAAADoAQLBAQAAAOgBCMIBAAAA6AEIxwEAALUC6AEiBwQAAJMCACAhAAC2AgAgIgAAtgIAIMABAAAA6AECwQEAAADoAQjCAQAAAOgBCMcBAAC1AugBIgTAAQAAAOgBAsEBAAAA6AEIwgEAAADoAQjHAQAAtgLoASIMtwEAALcCADC4AQAAqwEAELkBAAC3AgAwugEBAI8CACG-AUAAkQIAIb8BQACRAgAh0AEQAJ8CACHhAQEAjwIAIeMBAQC5AgAh5AEBALkCACHqAQAAuALqASPrASAAugIAIQcEAACsAgAgIQAAwAIAICIAAMACACDAAQAAAOoBA8EBAAAA6gEJwgEAAADqAQnHAQAAvwLqASMOBAAArAIAICEAAL4CACAiAAC-AgAgwAEBAAAAAcEBAQAAAAXCAQEAAAAFwwEBAAAAAcQBAQAAAAHFAQEAAAABxgEBAAAAAccBAQC9AgAhyAEBAAAAAckBAQAAAAHKAQEAAAABBQQAAJMCACAhAAC8AgAgIgAAvAIAIMABIAAAAAHHASAAuwIAIQUEAACTAgAgIQAAvAIAICIAALwCACDAASAAAAABxwEgALsCACECwAEgAAAAAccBIAC8AgAhDgQAAKwCACAhAAC-AgAgIgAAvgIAIMABAQAAAAHBAQEAAAAFwgEBAAAABcMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAvQIAIcgBAQAAAAHJAQEAAAABygEBAAAAAQvAAQEAAAABwQEBAAAABcIBAQAAAAXDAQEAAAABxAEBAAAAAcUBAQAAAAHGAQEAAAABxwEBAL4CACHIAQEAAAAByQEBAAAAAcoBAQAAAAEHBAAArAIAICEAAMACACAiAADAAgAgwAEAAADqAQPBAQAAAOoBCcIBAAAA6gEJxwEAAL8C6gEjBMABAAAA6gEDwQEAAADqAQnCAQAAAOoBCccBAADAAuoBIwm3AQAAwQIAMLgBAACVAQAQuQEAAMECADC6AQEAjwIAIb4BQACRAgAh4QEBAI8CACHjAQEAkAIAIeQBAQCQAgAh6gEAAMIC6gEiBwQAAJMCACAhAADEAgAgIgAAxAIAIMABAAAA6gECwQEAAADqAQjCAQAAAOoBCMcBAADDAuoBIgcEAACTAgAgIQAAxAIAICIAAMQCACDAAQAAAOoBAsEBAAAA6gEIwgEAAADqAQjHAQAAwwLqASIEwAEAAADqAQLBAQAAAOoBCMIBAAAA6gEIxwEAAMQC6gEiC7cBAADFAgAwuAEAAH8AELkBAADFAgAwugEBAI8CACG-AUAAkQIAIb8BQACRAgAhzwEBAJACACHsAQEAjwIAIe0BAQCPAgAh7gECAKkCACHvARAAnwIAIQm3AQAAxgIAMLgBAABpABC5AQAAxgIAMLoBAQCPAgAhvgFAAJECACG_AUAAkQIAIc8BAQCQAgAh6wEgALoCACHwAQEAkAIAIQoJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIesBIADIAgAh8AEBAJoCACECwAEgAAAAAccBIAC8AgAhA8sBAAAPACDMAQAADwAgzQEAAA8AIAe3AQAAygIAMLgBAABQABC5AQAAygIAML4BQACRAgAh7AEBAI8CACHxAQEAjwIAIfMBAADLAvMBIgcEAACTAgAgIQAAzQIAICIAAM0CACDAAQAAAPMBAsEBAAAA8wEIwgEAAADzAQjHAQAAzALzASIHBAAAkwIAICEAAM0CACAiAADNAgAgwAEAAADzAQLBAQAAAPMBCMIBAAAA8wEIxwEAAMwC8wEiBMABAAAA8wECwQEAAADzAQjCAQAAAPMBCMcBAADNAvMBIgu3AQAAzgIAMLgBAAA6ABC5AQAAzgIAMLoBAQCPAgAhvgFAAJECACG_AUAAkQIAIfQBAQCQAgAh9QEBALkCACH2AQEAkAIAIfcBAQCQAgAh-AEBALkCACED4QEBAAAAAeIBQAAAAAHjAQEAAAABDwsAANICACC3AQAA0AIAMLgBAAAdABC5AQAA0AIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIeABAQCaAgAh4QEBAJkCACHiAUAAmwIAIeMBAQCaAgAh5AEBAJoCACHlAQEAmgIAIeYBAQCaAgAh6AEAANEC6AEiBMABAAAA6AECwQEAAADoAQjCAQAAAOgBCMcBAAC2AugBIhIGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAhzwEBAJoCACHsAQEAmQIAIe0BAQCZAgAh7gECALECACHvARAApQIAIfsBAAAPACD8AQAADwAgDQsAANICACC3AQAA0wIAMLgBAAAZABC5AQAA0wIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEEwAEAAADqAQPBAQAAAOoBCcIBAAAA6gEJxwEAAMAC6gEjC8ABAQAAAAHBAQEAAAAFwgEBAAAABcMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAvgIAIcgBAQAAAAHJAQEAAAABygEBAAAAAQoLAADSAgAgtwEAANYCADC4AQAAFQAQuQEAANYCADC6AQEAmQIAIb4BQACbAgAh4QEBAJkCACHjAQEAmgIAIeQBAQCaAgAh6gEAANcC6gEiBMABAAAA6gECwQEAAADqAQjCAQAAAOoBCMcBAADEAuoBIhAGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAhzwEBAJoCACHsAQEAmQIAIe0BAQCZAgAh7gECALECACHvARAApQIAIRAFAADjAgAgCAAAnAIAIAkAAMkCACC3AQAA4gIAMLgBAAAFABC5AQAA4gIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEAmgIAIfcBAQCaAgAh-AEBANUCACH7AQAABQAg_AEAAAUAIAwJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIesBIADIAgAh8AEBAJoCACH7AQAAVgAg_AEAAFYAIAPLAQAAFQAgzAEAABUAIM0BAAAVACADywEAABkAIMwBAAAZACDNAQAAGQAgA8sBAAAdACDMAQAAHQAgzQEAAB0AIALsAQEAAAAB8QEBAAAAAQkGAADZAgAgBwAA4QIAILcBAADfAgAwuAEAAAkAELkBAADfAgAwvgFAAJsCACHsAQEAmQIAIfEBAQCZAgAh8wEAAOAC8wEiBMABAAAA8wECwQEAAADzAQjCAQAAAPMBCMcBAADNAvMBIgwDAACcAgAgtwEAAJgCADC4AQAA-AEAELkBAACYAgAwugEBAJkCACG7AQEAmQIAIbwBAQCaAgAhvQEBAJoCACG-AUAAmwIAIb8BQACbAgAh-wEAAPgBACD8AQAA-AEAIA4FAADjAgAgCAAAnAIAIAkAAMkCACC3AQAA4gIAMLgBAAAFABC5AQAA4gIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEAmgIAIfcBAQCaAgAh-AEBANUCACELAwAApwIAILcBAACkAgAwuAEAAAMAELkBAACkAgAwzgEBAJoCACHPAQEAmgIAIdABEAClAgAh0QEAAKYCACDSAUAAmwIAIfsBAAADACD8AQAAAwAgAAAAAYACAQAAAAEBgAJAAAAAAQsbAADqAgAwHAAA7wIAMP0BAADrAgAw_gEAAOwCADD_AQAA7QIAIIACAADuAgAwgQIAAO4CADCCAgAA7gIAMIMCAADuAgAwhAIAAPACADCFAgAA8QIAMAQGAAD4AgAgvgFAAAAAAewBAQAAAAHzAQAAAPMBAgIAAAALACAbAAD3AgAgAwAAAAsAIBsAAPcCACAcAAD1AgAgARQAAMoEADAKBgAA2QIAIAcAAOECACC3AQAA3wIAMLgBAAAJABC5AQAA3wIAML4BQACbAgAh7AEBAJkCACHxAQEAmQIAIfMBAADgAvMBIvoBAADeAgAgAgAAAAsAIBQAAPUCACACAAAA8gIAIBQAAPMCACAHtwEAAPECADC4AQAA8gIAELkBAADxAgAwvgFAAJsCACHsAQEAmQIAIfEBAQCZAgAh8wEAAOAC8wEiB7cBAADxAgAwuAEAAPICABC5AQAA8QIAML4BQACbAgAh7AEBAJkCACHxAQEAmQIAIfMBAADgAvMBIgO-AUAA6AIAIewBAQDnAgAh8wEAAPQC8wEiAYACAAAA8wECBAYAAPYCACC-AUAA6AIAIewBAQDnAgAh8wEAAPQC8wEiBRsAAMUEACAcAADIBAAg_QEAAMYEACD-AQAAxwQAIIMCAAABACAEBgAA-AIAIL4BQAAAAAHsAQEAAAAB8wEAAADzAQIDGwAAxQQAIP0BAADGBAAggwIAAAEAIAQbAADqAgAw_QEAAOsCADD_AQAA7QIAIIMCAADuAgAwAAAAAAAABYACEAAAAAGGAhAAAAABhwIQAAAAAYgCEAAAAAGJAhAAAAABCxsAAIIDADAcAACHAwAw_QEAAIMDADD-AQAAhAMAMP8BAACFAwAggAIAAIYDADCBAgAAhgMAMIICAACGAwAwgwIAAIYDADCEAgAAiAMAMIUCAACJAwAwCQgAANkDACAJAADaAwAgugEBAAAAAb4BQAAAAAG_AUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAQIAAAABACAbAADYAwAgAwAAAAEAIBsAANgDACAcAACNAwAgARQAAMQEADAOBQAA4wIAIAgAAJwCACAJAADJAgAgtwEAAOICADC4AQAABQAQuQEAAOICADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEAAAAB9wEBAJoCACH4AQEA1QIAIQIAAAABACAUAACNAwAgAgAAAIoDACAUAACLAwAgC7cBAACJAwAwuAEAAIoDABC5AQAAiQMAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEAmgIAIfcBAQCaAgAh-AEBANUCACELtwEAAIkDADC4AQAAigMAELkBAACJAwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh9AEBAJoCACH1AQEA1QIAIfYBAQCaAgAh9wEBAJoCACH4AQEA1QIAIQe6AQEA5wIAIb4BQADoAgAhvwFAAOgCACH0AQEA5wIAIfUBAQCMAwAh9gEBAOcCACH3AQEA5wIAIQGAAgEAAAABCQgAAI4DACAJAACPAwAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAh9AEBAOcCACH1AQEAjAMAIfYBAQDnAgAh9wEBAOcCACELGwAAzQMAMBwAANEDADD9AQAAzgMAMP4BAADPAwAw_wEAANADACCAAgAA7gIAMIECAADuAgAwggIAAO4CADCDAgAA7gIAMIQCAADSAwAwhQIAAPECADALGwAAkAMAMBwAAJUDADD9AQAAkQMAMP4BAACSAwAw_wEAAJMDACCAAgAAlAMAMIECAACUAwAwggIAAJQDADCDAgAAlAMAMIQCAACWAwAwhQIAAJcDADALCgAAyQMAIAwAAMoDACANAADLAwAgDgAAzAMAILoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAECAAAAEQAgGwAAyAMAIAMAAAARACAbAADIAwAgHAAAmwMAIAEUAADDBAAwEAYAANkCACAKAADaAgAgDAAA2wIAIA0AANwCACAOAADdAgAgtwEAANgCADC4AQAADwAQuQEAANgCADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIc8BAQCaAgAh7AEBAJkCACHtAQEAmQIAIe4BAgCxAgAh7wEQAKUCACECAAAAEQAgFAAAmwMAIAIAAACYAwAgFAAAmQMAIAu3AQAAlwMAMLgBAACYAwAQuQEAAJcDADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIewBAQCZAgAh7QEBAJkCACHuAQIAsQIAIe8BEAClAgAhC7cBAACXAwAwuAEAAJgDABC5AQAAlwMAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIc8BAQCaAgAh7AEBAJkCACHtAQEAmQIAIe4BAgCxAgAh7wEQAKUCACEHugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHtAQEA5wIAIe4BAgCaAwAh7wEQAIADACEFgAICAAAAAYYCAgAAAAGHAgIAAAABiAICAAAAAYkCAgAAAAELCgAAnAMAIAwAAJ0DACANAACeAwAgDgAAnwMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhBRsAALsEACAcAADBBAAg_QEAALwEACD-AQAAwAQAIIMCAABTACALGwAAuwMAMBwAAMADADD9AQAAvAMAMP4BAAC9AwAw_wEAAL4DACCAAgAAvwMAMIECAAC_AwAwggIAAL8DADCDAgAAvwMAMIQCAADBAwAwhQIAAMIDADALGwAArQMAMBwAALIDADD9AQAArgMAMP4BAACvAwAw_wEAALADACCAAgAAsQMAMIECAACxAwAwggIAALEDADCDAgAAsQMAMIQCAACzAwAwhQIAALQDADALGwAAoAMAMBwAAKUDADD9AQAAoQMAMP4BAACiAwAw_wEAAKMDACCAAgAApAMAMIECAACkAwAwggIAAKQDADCDAgAApAMAMIQCAACmAwAwhQIAAKcDADAKugEBAAAAAb4BQAAAAAG_AUAAAAAB4AEBAAAAAeIBQAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB6AEAAADoAQICAAAAHwAgGwAArAMAIAMAAAAfACAbAACsAwAgHAAAqwMAIAEUAAC_BAAwEAsAANICACC3AQAA0AIAMLgBAAAdABC5AQAA0AIAMLoBAQAAAAG-AUAAmwIAIb8BQACbAgAh4AEBAAAAAeEBAQCZAgAh4gFAAJsCACHjAQEAmgIAIeQBAQCaAgAh5QEBAJoCACHmAQEAmgIAIegBAADRAugBIvkBAADPAgAgAgAAAB8AIBQAAKsDACACAAAAqAMAIBQAAKkDACAOtwEAAKcDADC4AQAAqAMAELkBAACnAwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh4AEBAJoCACHhAQEAmQIAIeIBQACbAgAh4wEBAJoCACHkAQEAmgIAIeUBAQCaAgAh5gEBAJoCACHoAQAA0QLoASIOtwEAAKcDADC4AQAAqAMAELkBAACnAwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh4AEBAJoCACHhAQEAmQIAIeIBQACbAgAh4wEBAJoCACHkAQEAmgIAIeUBAQCaAgAh5gEBAJoCACHoAQAA0QLoASIKugEBAOcCACG-AUAA6AIAIb8BQADoAgAh4AEBAOcCACHiAUAA6AIAIeMBAQDnAgAh5AEBAOcCACHlAQEA5wIAIeYBAQDnAgAh6AEAAKoD6AEiAYACAAAA6AECCroBAQDnAgAhvgFAAOgCACG_AUAA6AIAIeABAQDnAgAh4gFAAOgCACHjAQEA5wIAIeQBAQDnAgAh5QEBAOcCACHmAQEA5wIAIegBAACqA-gBIgq6AQEAAAABvgFAAAAAAb8BQAAAAAHgAQEAAAAB4gFAAAAAAeMBAQAAAAHkAQEAAAAB5QEBAAAAAeYBAQAAAAHoAQAAAOgBAgi6AQEAAAABvgFAAAAAAb8BQAAAAAHQARAAAAAB4wEBAAAAAeQBAQAAAAHqAQAAAOoBA-sBIAAAAAECAAAAGwAgGwAAugMAIAMAAAAbACAbAAC6AwAgHAAAuQMAIAEUAAC-BAAwDQsAANICACC3AQAA0wIAMLgBAAAZABC5AQAA0wIAMLoBAQAAAAG-AUAAmwIAIb8BQACbAgAh0AEQAKUCACHhAQEAmQIAIeMBAQDVAgAh5AEBANUCACHqAQAA1ALqASPrASAAyAIAIQIAAAAbACAUAAC5AwAgAgAAALUDACAUAAC2AwAgDLcBAAC0AwAwuAEAALUDABC5AQAAtAMAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEMtwEAALQDADC4AQAAtQMAELkBAAC0AwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh0AEQAKUCACHhAQEAmQIAIeMBAQDVAgAh5AEBANUCACHqAQAA1ALqASPrASAAyAIAIQi6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHQARAAgAMAIeMBAQCMAwAh5AEBAIwDACHqAQAAtwPqASPrASAAuAMAIQGAAgAAAOoBAwGAAiAAAAABCLoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIdABEACAAwAh4wEBAIwDACHkAQEAjAMAIeoBAAC3A-oBI-sBIAC4AwAhCLoBAQAAAAG-AUAAAAABvwFAAAAAAdABEAAAAAHjAQEAAAAB5AEBAAAAAeoBAAAA6gED6wEgAAAAAQW6AQEAAAABvgFAAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQICAAAAFwAgGwAAxwMAIAMAAAAXACAbAADHAwAgHAAAxgMAIAEUAAC9BAAwCgsAANICACC3AQAA1gIAMLgBAAAVABC5AQAA1gIAMLoBAQAAAAG-AUAAmwIAIeEBAQCZAgAh4wEBAJoCACHkAQEAmgIAIeoBAADXAuoBIgIAAAAXACAUAADGAwAgAgAAAMMDACAUAADEAwAgCbcBAADCAwAwuAEAAMMDABC5AQAAwgMAMLoBAQCZAgAhvgFAAJsCACHhAQEAmQIAIeMBAQCaAgAh5AEBAJoCACHqAQAA1wLqASIJtwEAAMIDADC4AQAAwwMAELkBAADCAwAwugEBAJkCACG-AUAAmwIAIeEBAQCZAgAh4wEBAJoCACHkAQEAmgIAIeoBAADXAuoBIgW6AQEA5wIAIb4BQADoAgAh4wEBAOcCACHkAQEA5wIAIeoBAADFA-oBIgGAAgAAAOoBAgW6AQEA5wIAIb4BQADoAgAh4wEBAOcCACHkAQEA5wIAIeoBAADFA-oBIgW6AQEAAAABvgFAAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQILCgAAyQMAIAwAAMoDACANAADLAwAgDgAAzAMAILoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAEDGwAAuwQAIP0BAAC8BAAggwIAAFMAIAQbAAC7AwAw_QEAALwDADD_AQAAvgMAIIMCAAC_AwAwBBsAAK0DADD9AQAArgMAMP8BAACwAwAggwIAALEDADAEGwAAoAMAMP0BAAChAwAw_wEAAKMDACCDAgAApAMAMAQHAADXAwAgvgFAAAAAAfEBAQAAAAHzAQAAAPMBAgIAAAALACAbAADWAwAgAwAAAAsAIBsAANYDACAcAADUAwAgARQAALoEADACAAAACwAgFAAA1AMAIAIAAADyAgAgFAAA0wMAIAO-AUAA6AIAIfEBAQDnAgAh8wEAAPQC8wEiBAcAANUDACC-AUAA6AIAIfEBAQDnAgAh8wEAAPQC8wEiBRsAALUEACAcAAC4BAAg_QEAALYEACD-AQAAtwQAIIMCAAD1AQAgBAcAANcDACC-AUAAAAAB8QEBAAAAAfMBAAAA8wECAxsAALUEACD9AQAAtgQAIIMCAAD1AQAgCQgAANkDACAJAADaAwAgugEBAAAAAb4BQAAAAAG_AUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAQQbAADNAwAw_QEAAM4DADD_AQAA0AMAIIMCAADuAgAwBBsAAJADADD9AQAAkQMAMP8BAACTAwAggwIAAJQDADAEGwAAggMAMP0BAACDAwAw_wEAAIUDACCDAgAAhgMAMAAAAAAAAAABgAJAAAAAAQAAAAUbAACwBAAgHAAAswQAIP0BAACxBAAg_gEAALIEACCDAgAAEQAgAxsAALAEACD9AQAAsQQAIIMCAAARACAAAAAAAAUbAACrBAAgHAAArgQAIP0BAACsBAAg_gEAAK0EACCDAgAAEQAgAxsAAKsEACD9AQAArAQAIIMCAAARACAAAAAFGwAApgQAIBwAAKkEACD9AQAApwQAIP4BAACoBAAggwIAABEAIAMbAACmBAAg_QEAAKcEACCDAgAAEQAgAAAAAAAFGwAAoQQAIBwAAKQEACD9AQAAogQAIP4BAACjBAAggwIAAAEAIAMbAAChBAAg_QEAAKIEACCDAgAAAQAgAAAACxsAAIAEADAcAACEBAAw_QEAAIEEADD-AQAAggQAMP8BAACDBAAggAIAAJQDADCBAgAAlAMAMIICAACUAwAwgwIAAJQDADCEAgAAhQQAMIUCAACXAwAwCwYAAPsDACAMAADKAwAgDQAAywMAIA4AAMwDACC6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB7AEBAAAAAe4BAgAAAAHvARAAAAABAgAAABEAIBsAAIgEACADAAAAEQAgGwAAiAQAIBwAAIcEACABFAAAoAQAMAIAAAARACAUAACHBAAgAgAAAJgDACAUAACGBAAgB7oBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7AEBAOcCACHuAQIAmgMAIe8BEACAAwAhCwYAAPoDACAMAACdAwAgDQAAngMAIA4AAJ8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7gECAJoDACHvARAAgAMAIQsGAAD7AwAgDAAAygMAIA0AAMsDACAOAADMAwAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHuAQIAAAAB7wEQAAAAAQQbAACABAAw_QEAAIEEADD_AQAAgwQAIIMCAACUAwAwAAAAAAAAAAcbAACbBAAgHAAAngQAIP0BAACcBAAg_gEAAJ0EACCBAgAAAwAgggIAAAMAIIMCAADdAQAgAxsAAJsEACD9AQAAnAQAIIMCAADdAQAgBQYAAJQEACAKAACVBAAgDAAAlgQAIA0AAJcEACAOAACYBAAgBQUAAJoEACAIAAD6AgAgCQAAigQAIPUBAADdAwAg-AEAAN0DACABCQAAigQAIAAAAAEDAAD6AgAgAQMAANwDACAFzgEBAAAAAc8BAQAAAAHQARAAAAAB0QGAAAAAAdIBQAAAAAECAAAA3QEAIBsAAJsEACADAAAAAwAgGwAAmwQAIBwAAJ8EACAHAAAAAwAgFAAAnwQAIM4BAQDnAgAhzwEBAOcCACHQARAAgAMAIdEBgAAAAAHSAUAA6AIAIQXOAQEA5wIAIc8BAQDnAgAh0AEQAIADACHRAYAAAAAB0gFAAOgCACEHugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHuAQIAAAAB7wEQAAAAAQoFAACSBAAgCAAA2QMAILoBAQAAAAG-AUAAAAABvwFAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAABAgAAAAEAIBsAAKEEACADAAAABQAgGwAAoQQAIBwAAKUEACAMAAAABQAgBQAAkQQAIAgAAI4DACAUAAClBAAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAh9AEBAOcCACH1AQEAjAMAIfYBAQDnAgAh9wEBAOcCACH4AQEAjAMAIQoFAACRBAAgCAAAjgMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIfQBAQDnAgAh9QEBAIwDACH2AQEA5wIAIfcBAQDnAgAh-AEBAIwDACEMBgAA-wMAIAoAAMkDACANAADLAwAgDgAAzAMAILoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAHvARAAAAABAgAAABEAIBsAAKYEACADAAAADwAgGwAApgQAIBwAAKoEACAOAAAADwAgBgAA-gMAIAoAAJwDACANAACeAwAgDgAAnwMAIBQAAKoEACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhDAYAAPoDACAKAACcAwAgDQAAngMAIA4AAJ8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhDAYAAPsDACAKAADJAwAgDAAAygMAIA4AAMwDACC6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB7AEBAAAAAe0BAQAAAAHuAQIAAAAB7wEQAAAAAQIAAAARACAbAACrBAAgAwAAAA8AIBsAAKsEACAcAACvBAAgDgAAAA8AIAYAAPoDACAKAACcAwAgDAAAnQMAIA4AAJ8DACAUAACvBAAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHsAQEA5wIAIe0BAQDnAgAh7gECAJoDACHvARAAgAMAIQwGAAD6AwAgCgAAnAMAIAwAAJ0DACAOAACfAwAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHsAQEA5wIAIe0BAQDnAgAh7gECAJoDACHvARAAgAMAIQwGAAD7AwAgCgAAyQMAIAwAAMoDACANAADLAwAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAECAAAAEQAgGwAAsAQAIAMAAAAPACAbAACwBAAgHAAAtAQAIA4AAAAPACAGAAD6AwAgCgAAnAMAIAwAAJ0DACANAACeAwAgFAAAtAQAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7AEBAOcCACHtAQEA5wIAIe4BAgCaAwAh7wEQAIADACEMBgAA-gMAIAoAAJwDACAMAACdAwAgDQAAngMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7AEBAOcCACHtAQEA5wIAIe4BAgCaAwAh7wEQAIADACEGugEBAAAAAbsBAQAAAAG8AQEAAAABvQEBAAAAAb4BQAAAAAG_AUAAAAABAgAAAPUBACAbAAC1BAAgAwAAAPgBACAbAAC1BAAgHAAAuQQAIAgAAAD4AQAgFAAAuQQAILoBAQDnAgAhuwEBAOcCACG8AQEA5wIAIb0BAQDnAgAhvgFAAOgCACG_AUAA6AIAIQa6AQEA5wIAIbsBAQDnAgAhvAEBAOcCACG9AQEA5wIAIb4BQADoAgAhvwFAAOgCACEDvgFAAAAAAfEBAQAAAAHzAQAAAPMBAga6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB6wEgAAAAAfABAQAAAAECAAAAUwAgGwAAuwQAIAW6AQEAAAABvgFAAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQIIugEBAAAAAb4BQAAAAAG_AUAAAAAB0AEQAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQPrASAAAAABCroBAQAAAAG-AUAAAAABvwFAAAAAAeABAQAAAAHiAUAAAAAB4wEBAAAAAeQBAQAAAAHlAQEAAAAB5gEBAAAAAegBAAAA6AECAwAAAFYAIBsAALsEACAcAADCBAAgCAAAAFYAIBQAAMIEACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIesBIAC4AwAh8AEBAOcCACEGugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHrASAAuAMAIfABAQDnAgAhB7oBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAEHugEBAAAAAb4BQAAAAAG_AUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAQoFAACSBAAgCQAA2gMAILoBAQAAAAG-AUAAAAABvwFAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAABAgAAAAEAIBsAAMUEACADAAAABQAgGwAAxQQAIBwAAMkEACAMAAAABQAgBQAAkQQAIAkAAI8DACAUAADJBAAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAh9AEBAOcCACH1AQEAjAMAIfYBAQDnAgAh9wEBAOcCACH4AQEAjAMAIQoFAACRBAAgCQAAjwMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIfQBAQDnAgAh9QEBAIwDACH2AQEA5wIAIfcBAQDnAgAh-AEBAIwDACEDvgFAAAAAAewBAQAAAAHzAQAAAPMBAgQEAA4FBAIIDAQJEgcCAwcBBAADAQMIAAIGAAEHAAUCAw0EBAAGAQMOAAYEAA0GAAEKAAgMGAoNHAsOIAwCBAAJCRMHAQkUAAELAAcBCwAHAQsABwMMIQANIgAOIwACCCQACSUAAAEFLwIBBTUCAwQAEyEAFCIAFQAAAAMEABMhABQiABUCBgABBwAFAgYAAQcABQMEABohABsiABwAAAADBAAaIQAbIgAcAAADBAAhIQAiIgAjAAAAAwQAISEAIiIAIwIGAAEKAAgCBgABCgAIBQQAKCEAKyIALFMAKVQAKgAAAAAABQQAKCEAKyIALFMAKVQAKgELAAcBCwAHAwQAMSEAMiIAMwAAAAMEADEhADIiADMBCwAHAQsABwUEADghADsiADxTADlUADoAAAAAAAUEADghADsiADxTADlUADoBCwAHAQsABwMEAEEhAEIiAEMAAAADBABBIQBCIgBDAAAABQQASSEATCIATVMASlQASwAAAAAABQQASSEATCIATVMASlQASwAABQQAUiEAVSIAVlMAU1QAVAAAAAAABQQAUiEAVSIAVlMAU1QAVAAAAwQAWyEAXCIAXQAAAAMEAFshAFwiAF0PAgEQJgERJwESKAETKQEVKwEWLQ8XLhAYMQEZMw8aNBEdNgEeNwEfOA8jOxIkPBYlPQQmPgQnPwQoQAQpQQQqQwQrRQ8sRhctSAQuSg8vSxgwTAQxTQQyTg8zURk0Uh01VAg2VQg3WAg4WQg5Wgg6XAg7Xg88Xx49YQg-Yw8_ZB9AZQhBZghCZw9DaiBEayRFbAdGbQdHbgdIbwdJcAdKcgdLdA9MdSVNdwdOeQ9PeiZQewdRfAdSfQ9VgAEnVoEBLVeCAQpYgwEKWYQBClqFAQpbhgEKXIgBCl2KAQ9eiwEuX40BCmCPAQ9hkAEvYpEBCmOSAQpkkwEPZZYBMGaXATRnmAELaJkBC2maAQtqmwELa5wBC2yeAQttoAEPbqEBNW-jAQtwpQEPcaYBNnKnAQtzqAELdKkBD3WsATd2rQE9d64BDHivAQx5sAEMerEBDHuyAQx8tAEMfbYBD363AT5_uQEMgAG7AQ-BAbwBP4IBvQEMgwG-AQyEAb8BD4UBwgFAhgHDAUSHAcUBRYgBxgFFiQHJAUWKAcoBRYsBywFFjAHNAUWNAc8BD44B0AFGjwHSAUWQAdQBD5EB1QFHkgHWAUWTAdcBRZQB2AEPlQHbAUiWAdwBTpcB3gECmAHfAQKZAeEBApoB4gECmwHjAQKcAeUBAp0B5wEPngHoAU-fAeoBAqAB7AEPoQHtAVCiAe4BAqMB7wECpAHwAQ-lAfMBUaYB9AFXpwH2AQWoAfcBBakB-gEFqgH7AQWrAfwBBawB_gEFrQGAAg-uAYECWK8BgwIFsAGFAg-xAYYCWbIBhwIFswGIAgW0AYkCD7UBjAJatgGNAl4" + strings: JSON.parse("[\"where\",\"orderBy\",\"cursor\",\"complexes\",\"_count\",\"plan\",\"complex\",\"user\",\"users\",\"courts\",\"sport\",\"court\",\"availabilities\",\"priceRules\",\"bookings\",\"Complex.findUnique\",\"Complex.findUniqueOrThrow\",\"Complex.findFirst\",\"Complex.findFirstOrThrow\",\"Complex.findMany\",\"data\",\"Complex.createOne\",\"Complex.createMany\",\"Complex.createManyAndReturn\",\"Complex.updateOne\",\"Complex.updateMany\",\"Complex.updateManyAndReturn\",\"create\",\"update\",\"Complex.upsertOne\",\"Complex.deleteOne\",\"Complex.deleteMany\",\"having\",\"_min\",\"_max\",\"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\",\"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\",\"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\",\"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\",\"User.findUnique\",\"User.findUniqueOrThrow\",\"User.findFirst\",\"User.findFirstOrThrow\",\"User.findMany\",\"User.createOne\",\"User.createMany\",\"User.createManyAndReturn\",\"User.updateOne\",\"User.updateMany\",\"User.updateManyAndReturn\",\"User.upsertOne\",\"User.deleteOne\",\"User.deleteMany\",\"User.groupBy\",\"User.aggregate\",\"AND\",\"OR\",\"NOT\",\"id\",\"supabaseUserId\",\"email\",\"fullName\",\"createdAt\",\"updatedAt\",\"equals\",\"in\",\"notIn\",\"lt\",\"lte\",\"gt\",\"gte\",\"not\",\"contains\",\"startsWith\",\"endsWith\",\"every\",\"some\",\"none\",\"code\",\"name\",\"price\",\"rules\",\"lastUpdatedAt\",\"string_contains\",\"string_starts_with\",\"string_ends_with\",\"array_starts_with\",\"array_ends_with\",\"array_contains\",\"otpHash\",\"otpExpiresAt\",\"otpAttempts\",\"otpLastSentAt\",\"otpResendCount\",\"emailVerifiedAt\",\"completedAt\",\"bookingCode\",\"courtId\",\"bookingDate\",\"startTime\",\"endTime\",\"customerName\",\"customerPhone\",\"CourtBookingStatus\",\"status\",\"DayOfWeek\",\"dayOfWeek\",\"isActive\",\"complexId\",\"sportId\",\"slotDurationMinutes\",\"basePrice\",\"slug\",\"userId\",\"ComplexUserRole\",\"role\",\"complexName\",\"physicalAddress\",\"city\",\"state\",\"country\",\"complexSlug\",\"adminEmail\",\"planCode\",\"courtId_bookingDate_startTime\",\"complexId_userId\",\"is\",\"isNot\",\"connectOrCreate\",\"upsert\",\"createMany\",\"set\",\"disconnect\",\"delete\",\"connect\",\"updateMany\",\"deleteMany\",\"increment\",\"decrement\",\"multiply\",\"divide\"]"), + graph: "ygReoAERBQAA4wIAIAgAAJwCACAJAADJAgAgtwEAAOICADC4AQAABQAQuQEAAOICADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEA1QIAIfcBAQDVAgAh-AEBANUCACH5AQEAAAAB-gEBAJoCACH7AQEA1QIAIQEAAAABACAJAwAApwIAILcBAACkAgAwuAEAAAMAELkBAACkAgAwzgEBAJoCACHPAQEAmgIAIdABEAClAgAh0QEAAKYCACDSAUAAmwIAIQEAAAADACARBQAA4wIAIAgAAJwCACAJAADJAgAgtwEAAOICADC4AQAABQAQuQEAAOICADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACH0AQEAmgIAIfUBAQDVAgAh9gEBANUCACH3AQEA1QIAIfgBAQDVAgAh-QEBAJoCACH6AQEAmgIAIfsBAQDVAgAhCAUAAJoEACAIAAD6AgAgCQAAigQAIPUBAADdAwAg9gEAAN0DACD3AQAA3QMAIPgBAADdAwAg-wEAAN0DACADAAAABQAgAQAABgAwAgAAAQAgAQAAAAUAIAkGAADZAgAgBwAA4QIAILcBAADfAgAwuAEAAAkAELkBAADfAgAwvgFAAJsCACHsAQEAmQIAIfEBAQCZAgAh8wEAAOAC8wEiAgYAAJQEACAHAACZBAAgCgYAANkCACAHAADhAgAgtwEAAN8CADC4AQAACQAQuQEAAN8CADC-AUAAmwIAIewBAQCZAgAh8QEBAJkCACHzAQAA4ALzASL9AQAA3gIAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgAQAAAAkAIBAGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAhzwEBAJoCACHsAQEAmQIAIe0BAQCZAgAh7gECALECACHvARAApQIAIQUGAACUBAAgCgAAlQQAIAwAAJYEACANAACXBAAgDgAAmAQAIBAGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAAAAAb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIewBAQCZAgAh7QEBAJkCACHuAQIAsQIAIe8BEAClAgAhAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACABAAAADwAgCgsAANICACC3AQAA1gIAMLgBAAAVABC5AQAA1gIAMLoBAQCZAgAhvgFAAJsCACHhAQEAmQIAIeMBAQCaAgAh5AEBAJoCACHqAQAA1wLqASIBCwAAkwQAIAoLAADSAgAgtwEAANYCADC4AQAAFQAQuQEAANYCADC6AQEAAAABvgFAAJsCACHhAQEAmQIAIeMBAQCaAgAh5AEBAJoCACHqAQAA1wLqASIDAAAAFQAgAQAAFgAwAgAAFwAgDQsAANICACC3AQAA0wIAMLgBAAAZABC5AQAA0wIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEECwAAkwQAIOMBAADdAwAg5AEAAN0DACDqAQAA3QMAIA0LAADSAgAgtwEAANMCADC4AQAAGQAQuQEAANMCADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEDAAAAGQAgAQAAGgAwAgAAGwAgDwsAANICACC3AQAA0AIAMLgBAAAdABC5AQAA0AIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIeABAQCaAgAh4QEBAJkCACHiAUAAmwIAIeMBAQCaAgAh5AEBAJoCACHlAQEAmgIAIeYBAQCaAgAh6AEAANEC6AEiAQsAAJMEACAQCwAA0gIAILcBAADQAgAwuAEAAB0AELkBAADQAgAwugEBAAAAAb4BQACbAgAhvwFAAJsCACHgAQEAAAAB4QEBAJkCACHiAUAAmwIAIeMBAQCaAgAh5AEBAJoCACHlAQEAmgIAIeYBAQCaAgAh6AEAANEC6AEi_AEAAM8CACADAAAAHQAgAQAAHgAwAgAAHwAgAQAAABUAIAEAAAAZACABAAAAHQAgAQAAAAkAIAEAAAAPACABAAAAAQAgAwAAAAUAIAEAAAYAMAIAAAEAIAMAAAAFACABAAAGADACAAABACADAAAABQAgAQAABgAwAgAAAQAgDgUAAJIEACAIAADZAwAgCQAA2gMAILoBAQAAAAG-AUAAAAABvwFAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAABARQAACoAIAu6AQEAAAABvgFAAAAAAb8BQAAAAAH0AQEAAAAB9QEBAAAAAfYBAQAAAAH3AQEAAAAB-AEBAAAAAfkBAQAAAAH6AQEAAAAB-wEBAAAAAQEUAAAsADABFAAALAAwAQAAAAMAIA4FAACRBAAgCAAAjgMAIAkAAI8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACH0AQEA5wIAIfUBAQCMAwAh9gEBAIwDACH3AQEAjAMAIfgBAQCMAwAh-QEBAOcCACH6AQEA5wIAIfsBAQCMAwAhAgAAAAEAIBQAADAAIAu6AQEA5wIAIb4BQADoAgAhvwFAAOgCACH0AQEA5wIAIfUBAQCMAwAh9gEBAIwDACH3AQEAjAMAIfgBAQCMAwAh-QEBAOcCACH6AQEA5wIAIfsBAQCMAwAhAgAAAAUAIBQAADIAIAIAAAAFACAUAAAyACABAAAAAwAgAwAAAAEAIBsAACoAIBwAADAAIAEAAAABACABAAAABQAgCAQAAI4EACAhAACQBAAgIgAAjwQAIPUBAADdAwAg9gEAAN0DACD3AQAA3QMAIPgBAADdAwAg-wEAAN0DACAOtwEAAM4CADC4AQAAOgAQuQEAAM4CADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACH0AQEAkAIAIfUBAQC5AgAh9gEBALkCACH3AQEAuQIAIfgBAQC5AgAh-QEBAJACACH6AQEAkAIAIfsBAQC5AgAhAwAAAAUAIAEAADkAMCAAADoAIAMAAAAFACABAAAGADACAAABACABAAAACwAgAQAAAAsAIAMAAAAJACABAAAKADACAAALACADAAAACQAgAQAACgAwAgAACwAgAwAAAAkAIAEAAAoAMAIAAAsAIAYGAAD4AgAgBwAA1wMAIL4BQAAAAAHsAQEAAAAB8QEBAAAAAfMBAAAA8wECARQAAEIAIAS-AUAAAAAB7AEBAAAAAfEBAQAAAAHzAQAAAPMBAgEUAABEADABFAAARAAwBgYAAPYCACAHAADVAwAgvgFAAOgCACHsAQEA5wIAIfEBAQDnAgAh8wEAAPQC8wEiAgAAAAsAIBQAAEcAIAS-AUAA6AIAIewBAQDnAgAh8QEBAOcCACHzAQAA9ALzASICAAAACQAgFAAASQAgAgAAAAkAIBQAAEkAIAMAAAALACAbAABCACAcAABHACABAAAACwAgAQAAAAkAIAMEAACLBAAgIQAAjQQAICIAAIwEACAHtwEAAMoCADC4AQAAUAAQuQEAAMoCADC-AUAAkQIAIewBAQCPAgAh8QEBAI8CACHzAQAAywLzASIDAAAACQAgAQAATwAwIAAAUAAgAwAAAAkAIAEAAAoAMAIAAAsAIAoJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIc8BAQAAAAHrASAAyAIAIfABAQAAAAEBAAAAUwAgAQAAAFMAIAoJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIesBIADIAgAh8AEBAJoCACEBCQAAigQAIAMAAABWACABAABXADACAABTACADAAAAVgAgAQAAVwAwAgAAUwAgAwAAAFYAIAEAAFcAMAIAAFMAIAcJAACJBAAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAesBIAAAAAHwAQEAAAABARQAAFsAIAa6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB6wEgAAAAAfABAQAAAAEBFAAAXQAwARQAAF0AMAcJAAD_AwAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHrASAAuAMAIfABAQDnAgAhAgAAAFMAIBQAAGAAIAa6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIesBIAC4AwAh8AEBAOcCACECAAAAVgAgFAAAYgAgAgAAAFYAIBQAAGIAIAMAAABTACAbAABbACAcAABgACABAAAAUwAgAQAAAFYAIAMEAAD8AwAgIQAA_gMAICIAAP0DACAJtwEAAMYCADC4AQAAaQAQuQEAAMYCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHPAQEAkAIAIesBIAC6AgAh8AEBAJACACEDAAAAVgAgAQAAaAAwIAAAaQAgAwAAAFYAIAEAAFcAMAIAAFMAIAEAAAARACABAAAAEQAgAwAAAA8AIAEAABAAMAIAABEAIAMAAAAPACABAAAQADACAAARACADAAAADwAgAQAAEAAwAgAAEQAgDQYAAPsDACAKAADJAwAgDAAAygMAIA0AAMsDACAOAADMAwAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAEBFAAAcQAgCLoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAHvARAAAAABARQAAHMAMAEUAABzADANBgAA-gMAIAoAAJwDACAMAACdAwAgDQAAngMAIA4AAJ8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhAgAAABEAIBQAAHYAIAi6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhAgAAAA8AIBQAAHgAIAIAAAAPACAUAAB4ACADAAAAEQAgGwAAcQAgHAAAdgAgAQAAABEAIAEAAAAPACAFBAAA9QMAICEAAPgDACAiAAD3AwAgUwAA9gMAIFQAAPkDACALtwEAAMUCADC4AQAAfwAQuQEAAMUCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHPAQEAkAIAIewBAQCPAgAh7QEBAI8CACHuAQIAqQIAIe8BEACfAgAhAwAAAA8AIAEAAH4AMCAAAH8AIAMAAAAPACABAAAQADACAAARACABAAAAFwAgAQAAABcAIAMAAAAVACABAAAWADACAAAXACADAAAAFQAgAQAAFgAwAgAAFwAgAwAAABUAIAEAABYAMAIAABcAIAcLAAD0AwAgugEBAAAAAb4BQAAAAAHhAQEAAAAB4wEBAAAAAeQBAQAAAAHqAQAAAOoBAgEUAACHAQAgBroBAQAAAAG-AUAAAAAB4QEBAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQIBFAAAiQEAMAEUAACJAQAwBwsAAPMDACC6AQEA5wIAIb4BQADoAgAh4QEBAOcCACHjAQEA5wIAIeQBAQDnAgAh6gEAAMUD6gEiAgAAABcAIBQAAIwBACAGugEBAOcCACG-AUAA6AIAIeEBAQDnAgAh4wEBAOcCACHkAQEA5wIAIeoBAADFA-oBIgIAAAAVACAUAACOAQAgAgAAABUAIBQAAI4BACADAAAAFwAgGwAAhwEAIBwAAIwBACABAAAAFwAgAQAAABUAIAMEAADwAwAgIQAA8gMAICIAAPEDACAJtwEAAMECADC4AQAAlQEAELkBAADBAgAwugEBAI8CACG-AUAAkQIAIeEBAQCPAgAh4wEBAJACACHkAQEAkAIAIeoBAADCAuoBIgMAAAAVACABAACUAQAwIAAAlQEAIAMAAAAVACABAAAWADACAAAXACABAAAAGwAgAQAAABsAIAMAAAAZACABAAAaADACAAAbACADAAAAGQAgAQAAGgAwAgAAGwAgAwAAABkAIAEAABoAMAIAABsAIAoLAADvAwAgugEBAAAAAb4BQAAAAAG_AUAAAAAB0AEQAAAAAeEBAQAAAAHjAQEAAAAB5AEBAAAAAeoBAAAA6gED6wEgAAAAAQEUAACdAQAgCboBAQAAAAG-AUAAAAABvwFAAAAAAdABEAAAAAHhAQEAAAAB4wEBAAAAAeQBAQAAAAHqAQAAAOoBA-sBIAAAAAEBFAAAnwEAMAEUAACfAQAwCgsAAO4DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHQARAAgAMAIeEBAQDnAgAh4wEBAIwDACHkAQEAjAMAIeoBAAC3A-oBI-sBIAC4AwAhAgAAABsAIBQAAKIBACAJugEBAOcCACG-AUAA6AIAIb8BQADoAgAh0AEQAIADACHhAQEA5wIAIeMBAQCMAwAh5AEBAIwDACHqAQAAtwPqASPrASAAuAMAIQIAAAAZACAUAACkAQAgAgAAABkAIBQAAKQBACADAAAAGwAgGwAAnQEAIBwAAKIBACABAAAAGwAgAQAAABkAIAgEAADpAwAgIQAA7AMAICIAAOsDACBTAADqAwAgVAAA7QMAIOMBAADdAwAg5AEAAN0DACDqAQAA3QMAIAy3AQAAtwIAMLgBAACrAQAQuQEAALcCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHQARAAnwIAIeEBAQCPAgAh4wEBALkCACHkAQEAuQIAIeoBAAC4AuoBI-sBIAC6AgAhAwAAABkAIAEAAKoBADAgAACrAQAgAwAAABkAIAEAABoAMAIAABsAIAEAAAAfACABAAAAHwAgAwAAAB0AIAEAAB4AMAIAAB8AIAMAAAAdACABAAAeADACAAAfACADAAAAHQAgAQAAHgAwAgAAHwAgDAsAAOgDACC6AQEAAAABvgFAAAAAAb8BQAAAAAHgAQEAAAAB4QEBAAAAAeIBQAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB6AEAAADoAQIBFAAAswEAIAu6AQEAAAABvgFAAAAAAb8BQAAAAAHgAQEAAAAB4QEBAAAAAeIBQAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB6AEAAADoAQIBFAAAtQEAMAEUAAC1AQAwDAsAAOcDACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHgAQEA5wIAIeEBAQDnAgAh4gFAAOgCACHjAQEA5wIAIeQBAQDnAgAh5QEBAOcCACHmAQEA5wIAIegBAACqA-gBIgIAAAAfACAUAAC4AQAgC7oBAQDnAgAhvgFAAOgCACG_AUAA6AIAIeABAQDnAgAh4QEBAOcCACHiAUAA6AIAIeMBAQDnAgAh5AEBAOcCACHlAQEA5wIAIeYBAQDnAgAh6AEAAKoD6AEiAgAAAB0AIBQAALoBACACAAAAHQAgFAAAugEAIAMAAAAfACAbAACzAQAgHAAAuAEAIAEAAAAfACABAAAAHQAgAwQAAOQDACAhAADmAwAgIgAA5QMAIA63AQAAswIAMLgBAADBAQAQuQEAALMCADC6AQEAjwIAIb4BQACRAgAhvwFAAJECACHgAQEAkAIAIeEBAQCPAgAh4gFAAJECACHjAQEAkAIAIeQBAQCQAgAh5QEBAJACACHmAQEAkAIAIegBAAC0AugBIgMAAAAdACABAADAAQAwIAAAwQEAIAMAAAAdACABAAAeADACAAAfACAPtwEAALACADC4AQAAxwEAELkBAACwAgAwugEBAAAAAbwBAQCaAgAhvQEBAJoCACG-AUAAmwIAIb8BQACbAgAh2QEBAJoCACHaAUAAmwIAIdsBAgCxAgAh3AFAAJsCACHdAQIAsQIAId4BQACyAgAh3wFAALICACEBAAAAxAEAIAEAAADEAQAgD7cBAACwAgAwuAEAAMcBABC5AQAAsAIAMLoBAQCZAgAhvAEBAJoCACG9AQEAmgIAIb4BQACbAgAhvwFAAJsCACHZAQEAmgIAIdoBQACbAgAh2wECALECACHcAUAAmwIAId0BAgCxAgAh3gFAALICACHfAUAAsgIAIQLeAQAA3QMAIN8BAADdAwAgAwAAAMcBACABAADIAQAwAgAAxAEAIAMAAADHAQAgAQAAyAEAMAIAAMQBACADAAAAxwEAIAEAAMgBADACAADEAQAgDLoBAQAAAAG8AQEAAAABvQEBAAAAAb4BQAAAAAG_AUAAAAAB2QEBAAAAAdoBQAAAAAHbAQIAAAAB3AFAAAAAAd0BAgAAAAHeAUAAAAAB3wFAAAAAAQEUAADMAQAgDLoBAQAAAAG8AQEAAAABvQEBAAAAAb4BQAAAAAG_AUAAAAAB2QEBAAAAAdoBQAAAAAHbAQIAAAAB3AFAAAAAAd0BAgAAAAHeAUAAAAAB3wFAAAAAAQEUAADOAQAwARQAAM4BADAMugEBAOcCACG8AQEA5wIAIb0BAQDnAgAhvgFAAOgCACG_AUAA6AIAIdkBAQDnAgAh2gFAAOgCACHbAQIAmgMAIdwBQADoAgAh3QECAJoDACHeAUAA4wMAId8BQADjAwAhAgAAAMQBACAUAADRAQAgDLoBAQDnAgAhvAEBAOcCACG9AQEA5wIAIb4BQADoAgAhvwFAAOgCACHZAQEA5wIAIdoBQADoAgAh2wECAJoDACHcAUAA6AIAId0BAgCaAwAh3gFAAOMDACHfAUAA4wMAIQIAAADHAQAgFAAA0wEAIAIAAADHAQAgFAAA0wEAIAMAAADEAQAgGwAAzAEAIBwAANEBACABAAAAxAEAIAEAAADHAQAgBwQAAN4DACAhAADhAwAgIgAA4AMAIFMAAN8DACBUAADiAwAg3gEAAN0DACDfAQAA3QMAIA-3AQAAqAIAMLgBAADaAQAQuQEAAKgCADC6AQEAjwIAIbwBAQCQAgAhvQEBAJACACG-AUAAkQIAIb8BQACRAgAh2QEBAJACACHaAUAAkQIAIdsBAgCpAgAh3AFAAJECACHdAQIAqQIAId4BQACqAgAh3wFAAKoCACEDAAAAxwEAIAEAANkBADAgAADaAQAgAwAAAMcBACABAADIAQAwAgAAxAEAIAkDAACnAgAgtwEAAKQCADC4AQAAAwAQuQEAAKQCADDOAQEAAAABzwEBAJoCACHQARAApQIAIdEBAACmAgAg0gFAAJsCACEBAAAA3QEAIAEAAADdAQAgAQMAANwDACADAAAAAwAgAQAA4AEAMAIAAN0BACADAAAAAwAgAQAA4AEAMAIAAN0BACADAAAAAwAgAQAA4AEAMAIAAN0BACAGAwAA2wMAIM4BAQAAAAHPAQEAAAAB0AEQAAAAAdEBgAAAAAHSAUAAAAABARQAAOQBACAFzgEBAAAAAc8BAQAAAAHQARAAAAAB0QGAAAAAAdIBQAAAAAEBFAAA5gEAMAEUAADmAQAwBgMAAIEDACDOAQEA5wIAIc8BAQDnAgAh0AEQAIADACHRAYAAAAAB0gFAAOgCACECAAAA3QEAIBQAAOkBACAFzgEBAOcCACHPAQEA5wIAIdABEACAAwAh0QGAAAAAAdIBQADoAgAhAgAAAAMAIBQAAOsBACACAAAAAwAgFAAA6wEAIAMAAADdAQAgGwAA5AEAIBwAAOkBACABAAAA3QEAIAEAAAADACAFBAAA-wIAICEAAP4CACAiAAD9AgAgUwAA_AIAIFQAAP8CACAItwEAAJ4CADC4AQAA8gEAELkBAACeAgAwzgEBAJACACHPAQEAkAIAIdABEACfAgAh0QEAAKACACDSAUAAkQIAIQMAAAADACABAADxAQAwIAAA8gEAIAMAAAADACABAADgAQAwAgAA3QEAIAoDAACcAgAgtwEAAJgCADC4AQAA-AEAELkBAACYAgAwugEBAAAAAbsBAQAAAAG8AQEAAAABvQEBAJoCACG-AUAAmwIAIb8BQACbAgAhAQAAAPUBACABAAAA9QEAIAoDAACcAgAgtwEAAJgCADC4AQAA-AEAELkBAACYAgAwugEBAJkCACG7AQEAmQIAIbwBAQCaAgAhvQEBAJoCACG-AUAAmwIAIb8BQACbAgAhAQMAAPoCACADAAAA-AEAIAEAAPkBADACAAD1AQAgAwAAAPgBACABAAD5AQAwAgAA9QEAIAMAAAD4AQAgAQAA-QEAMAIAAPUBACAHAwAA-QIAILoBAQAAAAG7AQEAAAABvAEBAAAAAb0BAQAAAAG-AUAAAAABvwFAAAAAAQEUAAD9AQAgBroBAQAAAAG7AQEAAAABvAEBAAAAAb0BAQAAAAG-AUAAAAABvwFAAAAAAQEUAAD_AQAwARQAAP8BADAHAwAA6QIAILoBAQDnAgAhuwEBAOcCACG8AQEA5wIAIb0BAQDnAgAhvgFAAOgCACG_AUAA6AIAIQIAAAD1AQAgFAAAggIAIAa6AQEA5wIAIbsBAQDnAgAhvAEBAOcCACG9AQEA5wIAIb4BQADoAgAhvwFAAOgCACECAAAA-AEAIBQAAIQCACACAAAA-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_AUAAkQIAIdkBAQCQAgAh2gFAAJECACHbAQIAqQIAIdwBQACRAgAh3QECAKkCACHeAUAAqgIAId8BQACqAgAhDQQAAJMCACAhAACTAgAgIgAAkwIAIFMAAK8CACBUAACTAgAgwAECAAAAAcEBAgAAAATCAQIAAAAEwwECAAAAAcQBAgAAAAHFAQIAAAABxgECAAAAAccBAgCuAgAhCwQAAKwCACAhAACtAgAgIgAArQIAIMABQAAAAAHBAUAAAAAFwgFAAAAABcMBQAAAAAHEAUAAAAABxQFAAAAAAcYBQAAAAAHHAUAAqwIAIQsEAACsAgAgIQAArQIAICIAAK0CACDAAUAAAAABwQFAAAAABcIBQAAAAAXDAUAAAAABxAFAAAAAAcUBQAAAAAHGAUAAAAABxwFAAKsCACEIwAECAAAAAcEBAgAAAAXCAQIAAAAFwwECAAAAAcQBAgAAAAHFAQIAAAABxgECAAAAAccBAgCsAgAhCMABQAAAAAHBAUAAAAAFwgFAAAAABcMBQAAAAAHEAUAAAAABxQFAAAAAAcYBQAAAAAHHAUAArQIAIQ0EAACTAgAgIQAAkwIAICIAAJMCACBTAACvAgAgVAAAkwIAIMABAgAAAAHBAQIAAAAEwgECAAAABMMBAgAAAAHEAQIAAAABxQECAAAAAcYBAgAAAAHHAQIArgIAIQjAAQgAAAABwQEIAAAABMIBCAAAAATDAQgAAAABxAEIAAAAAcUBCAAAAAHGAQgAAAABxwEIAK8CACEPtwEAALACADC4AQAAxwEAELkBAACwAgAwugEBAJkCACG8AQEAmgIAIb0BAQCaAgAhvgFAAJsCACG_AUAAmwIAIdkBAQCaAgAh2gFAAJsCACHbAQIAsQIAIdwBQACbAgAh3QECALECACHeAUAAsgIAId8BQACyAgAhCMABAgAAAAHBAQIAAAAEwgECAAAABMMBAgAAAAHEAQIAAAABxQECAAAAAcYBAgAAAAHHAQIAkwIAIQjAAUAAAAABwQFAAAAABcIBQAAAAAXDAUAAAAABxAFAAAAAAcUBQAAAAAHGAUAAAAABxwFAAK0CACEOtwEAALMCADC4AQAAwQEAELkBAACzAgAwugEBAI8CACG-AUAAkQIAIb8BQACRAgAh4AEBAJACACHhAQEAjwIAIeIBQACRAgAh4wEBAJACACHkAQEAkAIAIeUBAQCQAgAh5gEBAJACACHoAQAAtALoASIHBAAAkwIAICEAALYCACAiAAC2AgAgwAEAAADoAQLBAQAAAOgBCMIBAAAA6AEIxwEAALUC6AEiBwQAAJMCACAhAAC2AgAgIgAAtgIAIMABAAAA6AECwQEAAADoAQjCAQAAAOgBCMcBAAC1AugBIgTAAQAAAOgBAsEBAAAA6AEIwgEAAADoAQjHAQAAtgLoASIMtwEAALcCADC4AQAAqwEAELkBAAC3AgAwugEBAI8CACG-AUAAkQIAIb8BQACRAgAh0AEQAJ8CACHhAQEAjwIAIeMBAQC5AgAh5AEBALkCACHqAQAAuALqASPrASAAugIAIQcEAACsAgAgIQAAwAIAICIAAMACACDAAQAAAOoBA8EBAAAA6gEJwgEAAADqAQnHAQAAvwLqASMOBAAArAIAICEAAL4CACAiAAC-AgAgwAEBAAAAAcEBAQAAAAXCAQEAAAAFwwEBAAAAAcQBAQAAAAHFAQEAAAABxgEBAAAAAccBAQC9AgAhyAEBAAAAAckBAQAAAAHKAQEAAAABBQQAAJMCACAhAAC8AgAgIgAAvAIAIMABIAAAAAHHASAAuwIAIQUEAACTAgAgIQAAvAIAICIAALwCACDAASAAAAABxwEgALsCACECwAEgAAAAAccBIAC8AgAhDgQAAKwCACAhAAC-AgAgIgAAvgIAIMABAQAAAAHBAQEAAAAFwgEBAAAABcMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAvQIAIcgBAQAAAAHJAQEAAAABygEBAAAAAQvAAQEAAAABwQEBAAAABcIBAQAAAAXDAQEAAAABxAEBAAAAAcUBAQAAAAHGAQEAAAABxwEBAL4CACHIAQEAAAAByQEBAAAAAcoBAQAAAAEHBAAArAIAICEAAMACACAiAADAAgAgwAEAAADqAQPBAQAAAOoBCcIBAAAA6gEJxwEAAL8C6gEjBMABAAAA6gEDwQEAAADqAQnCAQAAAOoBCccBAADAAuoBIwm3AQAAwQIAMLgBAACVAQAQuQEAAMECADC6AQEAjwIAIb4BQACRAgAh4QEBAI8CACHjAQEAkAIAIeQBAQCQAgAh6gEAAMIC6gEiBwQAAJMCACAhAADEAgAgIgAAxAIAIMABAAAA6gECwQEAAADqAQjCAQAAAOoBCMcBAADDAuoBIgcEAACTAgAgIQAAxAIAICIAAMQCACDAAQAAAOoBAsEBAAAA6gEIwgEAAADqAQjHAQAAwwLqASIEwAEAAADqAQLBAQAAAOoBCMIBAAAA6gEIxwEAAMQC6gEiC7cBAADFAgAwuAEAAH8AELkBAADFAgAwugEBAI8CACG-AUAAkQIAIb8BQACRAgAhzwEBAJACACHsAQEAjwIAIe0BAQCPAgAh7gECAKkCACHvARAAnwIAIQm3AQAAxgIAMLgBAABpABC5AQAAxgIAMLoBAQCPAgAhvgFAAJECACG_AUAAkQIAIc8BAQCQAgAh6wEgALoCACHwAQEAkAIAIQoJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIesBIADIAgAh8AEBAJoCACECwAEgAAAAAccBIAC8AgAhA8sBAAAPACDMAQAADwAgzQEAAA8AIAe3AQAAygIAMLgBAABQABC5AQAAygIAML4BQACRAgAh7AEBAI8CACHxAQEAjwIAIfMBAADLAvMBIgcEAACTAgAgIQAAzQIAICIAAM0CACDAAQAAAPMBAsEBAAAA8wEIwgEAAADzAQjHAQAAzALzASIHBAAAkwIAICEAAM0CACAiAADNAgAgwAEAAADzAQLBAQAAAPMBCMIBAAAA8wEIxwEAAMwC8wEiBMABAAAA8wECwQEAAADzAQjCAQAAAPMBCMcBAADNAvMBIg63AQAAzgIAMLgBAAA6ABC5AQAAzgIAMLoBAQCPAgAhvgFAAJECACG_AUAAkQIAIfQBAQCQAgAh9QEBALkCACH2AQEAuQIAIfcBAQC5AgAh-AEBALkCACH5AQEAkAIAIfoBAQCQAgAh-wEBALkCACED4QEBAAAAAeIBQAAAAAHjAQEAAAABDwsAANICACC3AQAA0AIAMLgBAAAdABC5AQAA0AIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIeABAQCaAgAh4QEBAJkCACHiAUAAmwIAIeMBAQCaAgAh5AEBAJoCACHlAQEAmgIAIeYBAQCaAgAh6AEAANEC6AEiBMABAAAA6AECwQEAAADoAQjCAQAAAOgBCMcBAAC2AugBIhIGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAhzwEBAJoCACHsAQEAmQIAIe0BAQCZAgAh7gECALECACHvARAApQIAIf4BAAAPACD_AQAADwAgDQsAANICACC3AQAA0wIAMLgBAAAZABC5AQAA0wIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEEwAEAAADqAQPBAQAAAOoBCcIBAAAA6gEJxwEAAMAC6gEjC8ABAQAAAAHBAQEAAAAFwgEBAAAABcMBAQAAAAHEAQEAAAABxQEBAAAAAcYBAQAAAAHHAQEAvgIAIcgBAQAAAAHJAQEAAAABygEBAAAAAQoLAADSAgAgtwEAANYCADC4AQAAFQAQuQEAANYCADC6AQEAmQIAIb4BQACbAgAh4QEBAJkCACHjAQEAmgIAIeQBAQCaAgAh6gEAANcC6gEiBMABAAAA6gECwQEAAADqAQjCAQAAAOoBCMcBAADEAuoBIhAGAADZAgAgCgAA2gIAIAwAANsCACANAADcAgAgDgAA3QIAILcBAADYAgAwuAEAAA8AELkBAADYAgAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAhzwEBAJoCACHsAQEAmQIAIe0BAQCZAgAh7gECALECACHvARAApQIAIRMFAADjAgAgCAAAnAIAIAkAAMkCACC3AQAA4gIAMLgBAAAFABC5AQAA4gIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEA1QIAIfcBAQDVAgAh-AEBANUCACH5AQEAmgIAIfoBAQCaAgAh-wEBANUCACH-AQAABQAg_wEAAAUAIAwJAADJAgAgtwEAAMcCADC4AQAAVgAQuQEAAMcCADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIesBIADIAgAh8AEBAJoCACH-AQAAVgAg_wEAAFYAIAPLAQAAFQAgzAEAABUAIM0BAAAVACADywEAABkAIMwBAAAZACDNAQAAGQAgA8sBAAAdACDMAQAAHQAgzQEAAB0AIALsAQEAAAAB8QEBAAAAAQkGAADZAgAgBwAA4QIAILcBAADfAgAwuAEAAAkAELkBAADfAgAwvgFAAJsCACHsAQEAmQIAIfEBAQCZAgAh8wEAAOAC8wEiBMABAAAA8wECwQEAAADzAQjCAQAAAPMBCMcBAADNAvMBIgwDAACcAgAgtwEAAJgCADC4AQAA-AEAELkBAACYAgAwugEBAJkCACG7AQEAmQIAIbwBAQCaAgAhvQEBAJoCACG-AUAAmwIAIb8BQACbAgAh_gEAAPgBACD_AQAA-AEAIBEFAADjAgAgCAAAnAIAIAkAAMkCACC3AQAA4gIAMLgBAAAFABC5AQAA4gIAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEA1QIAIfcBAQDVAgAh-AEBANUCACH5AQEAmgIAIfoBAQCaAgAh-wEBANUCACELAwAApwIAILcBAACkAgAwuAEAAAMAELkBAACkAgAwzgEBAJoCACHPAQEAmgIAIdABEAClAgAh0QEAAKYCACDSAUAAmwIAIf4BAAADACD_AQAAAwAgAAAAAYMCAQAAAAEBgwJAAAAAAQsbAADqAgAwHAAA7wIAMIACAADrAgAwgQIAAOwCADCCAgAA7QIAIIMCAADuAgAwhAIAAO4CADCFAgAA7gIAMIYCAADuAgAwhwIAAPACADCIAgAA8QIAMAQGAAD4AgAgvgFAAAAAAewBAQAAAAHzAQAAAPMBAgIAAAALACAbAAD3AgAgAwAAAAsAIBsAAPcCACAcAAD1AgAgARQAAMoEADAKBgAA2QIAIAcAAOECACC3AQAA3wIAMLgBAAAJABC5AQAA3wIAML4BQACbAgAh7AEBAJkCACHxAQEAmQIAIfMBAADgAvMBIv0BAADeAgAgAgAAAAsAIBQAAPUCACACAAAA8gIAIBQAAPMCACAHtwEAAPECADC4AQAA8gIAELkBAADxAgAwvgFAAJsCACHsAQEAmQIAIfEBAQCZAgAh8wEAAOAC8wEiB7cBAADxAgAwuAEAAPICABC5AQAA8QIAML4BQACbAgAh7AEBAJkCACHxAQEAmQIAIfMBAADgAvMBIgO-AUAA6AIAIewBAQDnAgAh8wEAAPQC8wEiAYMCAAAA8wECBAYAAPYCACC-AUAA6AIAIewBAQDnAgAh8wEAAPQC8wEiBRsAAMUEACAcAADIBAAggAIAAMYEACCBAgAAxwQAIIYCAAABACAEBgAA-AIAIL4BQAAAAAHsAQEAAAAB8wEAAADzAQIDGwAAxQQAIIACAADGBAAghgIAAAEAIAQbAADqAgAwgAIAAOsCADCCAgAA7QIAIIYCAADuAgAwAAAAAAAABYMCEAAAAAGJAhAAAAABigIQAAAAAYsCEAAAAAGMAhAAAAABCxsAAIIDADAcAACHAwAwgAIAAIMDADCBAgAAhAMAMIICAACFAwAggwIAAIYDADCEAgAAhgMAMIUCAACGAwAwhgIAAIYDADCHAgAAiAMAMIgCAACJAwAwDAgAANkDACAJAADaAwAgugEBAAAAAb4BQAAAAAG_AUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAQIAAAABACAbAADYAwAgAwAAAAEAIBsAANgDACAcAACNAwAgARQAAMQEADARBQAA4wIAIAgAAJwCACAJAADJAgAgtwEAAOICADC4AQAABQAQuQEAAOICADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEA1QIAIfcBAQDVAgAh-AEBANUCACH5AQEAAAAB-gEBAJoCACH7AQEA1QIAIQIAAAABACAUAACNAwAgAgAAAIoDACAUAACLAwAgDrcBAACJAwAwuAEAAIoDABC5AQAAiQMAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIfQBAQCaAgAh9QEBANUCACH2AQEA1QIAIfcBAQDVAgAh-AEBANUCACH5AQEAmgIAIfoBAQCaAgAh-wEBANUCACEOtwEAAIkDADC4AQAAigMAELkBAACJAwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh9AEBAJoCACH1AQEA1QIAIfYBAQDVAgAh9wEBANUCACH4AQEA1QIAIfkBAQCaAgAh-gEBAJoCACH7AQEA1QIAIQq6AQEA5wIAIb4BQADoAgAhvwFAAOgCACH0AQEA5wIAIfUBAQCMAwAh9gEBAIwDACH3AQEAjAMAIfgBAQCMAwAh-QEBAOcCACH6AQEA5wIAIQGDAgEAAAABDAgAAI4DACAJAACPAwAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAh9AEBAOcCACH1AQEAjAMAIfYBAQCMAwAh9wEBAIwDACH4AQEAjAMAIfkBAQDnAgAh-gEBAOcCACELGwAAzQMAMBwAANEDADCAAgAAzgMAMIECAADPAwAwggIAANADACCDAgAA7gIAMIQCAADuAgAwhQIAAO4CADCGAgAA7gIAMIcCAADSAwAwiAIAAPECADALGwAAkAMAMBwAAJUDADCAAgAAkQMAMIECAACSAwAwggIAAJMDACCDAgAAlAMAMIQCAACUAwAwhQIAAJQDADCGAgAAlAMAMIcCAACWAwAwiAIAAJcDADALCgAAyQMAIAwAAMoDACANAADLAwAgDgAAzAMAILoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAECAAAAEQAgGwAAyAMAIAMAAAARACAbAADIAwAgHAAAmwMAIAEUAADDBAAwEAYAANkCACAKAADaAgAgDAAA2wIAIA0AANwCACAOAADdAgAgtwEAANgCADC4AQAADwAQuQEAANgCADC6AQEAAAABvgFAAJsCACG_AUAAmwIAIc8BAQCaAgAh7AEBAJkCACHtAQEAmQIAIe4BAgCxAgAh7wEQAKUCACECAAAAEQAgFAAAmwMAIAIAAACYAwAgFAAAmQMAIAu3AQAAlwMAMLgBAACYAwAQuQEAAJcDADC6AQEAmQIAIb4BQACbAgAhvwFAAJsCACHPAQEAmgIAIewBAQCZAgAh7QEBAJkCACHuAQIAsQIAIe8BEAClAgAhC7cBAACXAwAwuAEAAJgDABC5AQAAlwMAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIc8BAQCaAgAh7AEBAJkCACHtAQEAmQIAIe4BAgCxAgAh7wEQAKUCACEHugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHtAQEA5wIAIe4BAgCaAwAh7wEQAIADACEFgwICAAAAAYkCAgAAAAGKAgIAAAABiwICAAAAAYwCAgAAAAELCgAAnAMAIAwAAJ0DACANAACeAwAgDgAAnwMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhBRsAALsEACAcAADBBAAggAIAALwEACCBAgAAwAQAIIYCAABTACALGwAAuwMAMBwAAMADADCAAgAAvAMAMIECAAC9AwAwggIAAL4DACCDAgAAvwMAMIQCAAC_AwAwhQIAAL8DADCGAgAAvwMAMIcCAADBAwAwiAIAAMIDADALGwAArQMAMBwAALIDADCAAgAArgMAMIECAACvAwAwggIAALADACCDAgAAsQMAMIQCAACxAwAwhQIAALEDADCGAgAAsQMAMIcCAACzAwAwiAIAALQDADALGwAAoAMAMBwAAKUDADCAAgAAoQMAMIECAACiAwAwggIAAKMDACCDAgAApAMAMIQCAACkAwAwhQIAAKQDADCGAgAApAMAMIcCAACmAwAwiAIAAKcDADAKugEBAAAAAb4BQAAAAAG_AUAAAAAB4AEBAAAAAeIBQAAAAAHjAQEAAAAB5AEBAAAAAeUBAQAAAAHmAQEAAAAB6AEAAADoAQICAAAAHwAgGwAArAMAIAMAAAAfACAbAACsAwAgHAAAqwMAIAEUAAC_BAAwEAsAANICACC3AQAA0AIAMLgBAAAdABC5AQAA0AIAMLoBAQAAAAG-AUAAmwIAIb8BQACbAgAh4AEBAAAAAeEBAQCZAgAh4gFAAJsCACHjAQEAmgIAIeQBAQCaAgAh5QEBAJoCACHmAQEAmgIAIegBAADRAugBIvwBAADPAgAgAgAAAB8AIBQAAKsDACACAAAAqAMAIBQAAKkDACAOtwEAAKcDADC4AQAAqAMAELkBAACnAwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh4AEBAJoCACHhAQEAmQIAIeIBQACbAgAh4wEBAJoCACHkAQEAmgIAIeUBAQCaAgAh5gEBAJoCACHoAQAA0QLoASIOtwEAAKcDADC4AQAAqAMAELkBAACnAwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh4AEBAJoCACHhAQEAmQIAIeIBQACbAgAh4wEBAJoCACHkAQEAmgIAIeUBAQCaAgAh5gEBAJoCACHoAQAA0QLoASIKugEBAOcCACG-AUAA6AIAIb8BQADoAgAh4AEBAOcCACHiAUAA6AIAIeMBAQDnAgAh5AEBAOcCACHlAQEA5wIAIeYBAQDnAgAh6AEAAKoD6AEiAYMCAAAA6AECCroBAQDnAgAhvgFAAOgCACG_AUAA6AIAIeABAQDnAgAh4gFAAOgCACHjAQEA5wIAIeQBAQDnAgAh5QEBAOcCACHmAQEA5wIAIegBAACqA-gBIgq6AQEAAAABvgFAAAAAAb8BQAAAAAHgAQEAAAAB4gFAAAAAAeMBAQAAAAHkAQEAAAAB5QEBAAAAAeYBAQAAAAHoAQAAAOgBAgi6AQEAAAABvgFAAAAAAb8BQAAAAAHQARAAAAAB4wEBAAAAAeQBAQAAAAHqAQAAAOoBA-sBIAAAAAECAAAAGwAgGwAAugMAIAMAAAAbACAbAAC6AwAgHAAAuQMAIAEUAAC-BAAwDQsAANICACC3AQAA0wIAMLgBAAAZABC5AQAA0wIAMLoBAQAAAAG-AUAAmwIAIb8BQACbAgAh0AEQAKUCACHhAQEAmQIAIeMBAQDVAgAh5AEBANUCACHqAQAA1ALqASPrASAAyAIAIQIAAAAbACAUAAC5AwAgAgAAALUDACAUAAC2AwAgDLcBAAC0AwAwuAEAALUDABC5AQAAtAMAMLoBAQCZAgAhvgFAAJsCACG_AUAAmwIAIdABEAClAgAh4QEBAJkCACHjAQEA1QIAIeQBAQDVAgAh6gEAANQC6gEj6wEgAMgCACEMtwEAALQDADC4AQAAtQMAELkBAAC0AwAwugEBAJkCACG-AUAAmwIAIb8BQACbAgAh0AEQAKUCACHhAQEAmQIAIeMBAQDVAgAh5AEBANUCACHqAQAA1ALqASPrASAAyAIAIQi6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHQARAAgAMAIeMBAQCMAwAh5AEBAIwDACHqAQAAtwPqASPrASAAuAMAIQGDAgAAAOoBAwGDAiAAAAABCLoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIdABEACAAwAh4wEBAIwDACHkAQEAjAMAIeoBAAC3A-oBI-sBIAC4AwAhCLoBAQAAAAG-AUAAAAABvwFAAAAAAdABEAAAAAHjAQEAAAAB5AEBAAAAAeoBAAAA6gED6wEgAAAAAQW6AQEAAAABvgFAAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQICAAAAFwAgGwAAxwMAIAMAAAAXACAbAADHAwAgHAAAxgMAIAEUAAC9BAAwCgsAANICACC3AQAA1gIAMLgBAAAVABC5AQAA1gIAMLoBAQAAAAG-AUAAmwIAIeEBAQCZAgAh4wEBAJoCACHkAQEAmgIAIeoBAADXAuoBIgIAAAAXACAUAADGAwAgAgAAAMMDACAUAADEAwAgCbcBAADCAwAwuAEAAMMDABC5AQAAwgMAMLoBAQCZAgAhvgFAAJsCACHhAQEAmQIAIeMBAQCaAgAh5AEBAJoCACHqAQAA1wLqASIJtwEAAMIDADC4AQAAwwMAELkBAADCAwAwugEBAJkCACG-AUAAmwIAIeEBAQCZAgAh4wEBAJoCACHkAQEAmgIAIeoBAADXAuoBIgW6AQEA5wIAIb4BQADoAgAh4wEBAOcCACHkAQEA5wIAIeoBAADFA-oBIgGDAgAAAOoBAgW6AQEA5wIAIb4BQADoAgAh4wEBAOcCACHkAQEA5wIAIeoBAADFA-oBIgW6AQEAAAABvgFAAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQILCgAAyQMAIAwAAMoDACANAADLAwAgDgAAzAMAILoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAEDGwAAuwQAIIACAAC8BAAghgIAAFMAIAQbAAC7AwAwgAIAALwDADCCAgAAvgMAIIYCAAC_AwAwBBsAAK0DADCAAgAArgMAMIICAACwAwAghgIAALEDADAEGwAAoAMAMIACAAChAwAwggIAAKMDACCGAgAApAMAMAQHAADXAwAgvgFAAAAAAfEBAQAAAAHzAQAAAPMBAgIAAAALACAbAADWAwAgAwAAAAsAIBsAANYDACAcAADUAwAgARQAALoEADACAAAACwAgFAAA1AMAIAIAAADyAgAgFAAA0wMAIAO-AUAA6AIAIfEBAQDnAgAh8wEAAPQC8wEiBAcAANUDACC-AUAA6AIAIfEBAQDnAgAh8wEAAPQC8wEiBRsAALUEACAcAAC4BAAggAIAALYEACCBAgAAtwQAIIYCAAD1AQAgBAcAANcDACC-AUAAAAAB8QEBAAAAAfMBAAAA8wECAxsAALUEACCAAgAAtgQAIIYCAAD1AQAgDAgAANkDACAJAADaAwAgugEBAAAAAb4BQAAAAAG_AUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAQQbAADNAwAwgAIAAM4DADCCAgAA0AMAIIYCAADuAgAwBBsAAJADADCAAgAAkQMAMIICAACTAwAghgIAAJQDADAEGwAAggMAMIACAACDAwAwggIAAIUDACCGAgAAhgMAMAAAAAAAAAABgwJAAAAAAQAAAAUbAACwBAAgHAAAswQAIIACAACxBAAggQIAALIEACCGAgAAEQAgAxsAALAEACCAAgAAsQQAIIYCAAARACAAAAAAAAUbAACrBAAgHAAArgQAIIACAACsBAAggQIAAK0EACCGAgAAEQAgAxsAAKsEACCAAgAArAQAIIYCAAARACAAAAAFGwAApgQAIBwAAKkEACCAAgAApwQAIIECAACoBAAghgIAABEAIAMbAACmBAAggAIAAKcEACCGAgAAEQAgAAAAAAAFGwAAoQQAIBwAAKQEACCAAgAAogQAIIECAACjBAAghgIAAAEAIAMbAAChBAAggAIAAKIEACCGAgAAAQAgAAAACxsAAIAEADAcAACEBAAwgAIAAIEEADCBAgAAggQAMIICAACDBAAggwIAAJQDADCEAgAAlAMAMIUCAACUAwAwhgIAAJQDADCHAgAAhQQAMIgCAACXAwAwCwYAAPsDACAMAADKAwAgDQAAywMAIA4AAMwDACC6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB7AEBAAAAAe4BAgAAAAHvARAAAAABAgAAABEAIBsAAIgEACADAAAAEQAgGwAAiAQAIBwAAIcEACABFAAAoAQAMAIAAAARACAUAACHBAAgAgAAAJgDACAUAACGBAAgB7oBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7AEBAOcCACHuAQIAmgMAIe8BEACAAwAhCwYAAPoDACAMAACdAwAgDQAAngMAIA4AAJ8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7gECAJoDACHvARAAgAMAIQsGAAD7AwAgDAAAygMAIA0AAMsDACAOAADMAwAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHuAQIAAAAB7wEQAAAAAQQbAACABAAwgAIAAIEEADCCAgAAgwQAIIYCAACUAwAwAAAAAAAAAAcbAACbBAAgHAAAngQAIIACAACcBAAggQIAAJ0EACCEAgAAAwAghQIAAAMAIIYCAADdAQAgAxsAAJsEACCAAgAAnAQAIIYCAADdAQAgBQYAAJQEACAKAACVBAAgDAAAlgQAIA0AAJcEACAOAACYBAAgCAUAAJoEACAIAAD6AgAgCQAAigQAIPUBAADdAwAg9gEAAN0DACD3AQAA3QMAIPgBAADdAwAg-wEAAN0DACABCQAAigQAIAAAAAEDAAD6AgAgAQMAANwDACAFzgEBAAAAAc8BAQAAAAHQARAAAAAB0QGAAAAAAdIBQAAAAAECAAAA3QEAIBsAAJsEACADAAAAAwAgGwAAmwQAIBwAAJ8EACAHAAAAAwAgFAAAnwQAIM4BAQDnAgAhzwEBAOcCACHQARAAgAMAIdEBgAAAAAHSAUAA6AIAIQXOAQEA5wIAIc8BAQDnAgAh0AEQAIADACHRAYAAAAAB0gFAAOgCACEHugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHuAQIAAAAB7wEQAAAAAQ0FAACSBAAgCAAA2QMAILoBAQAAAAG-AUAAAAABvwFAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAABAgAAAAEAIBsAAKEEACADAAAABQAgGwAAoQQAIBwAAKUEACAPAAAABQAgBQAAkQQAIAgAAI4DACAUAAClBAAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAh9AEBAOcCACH1AQEAjAMAIfYBAQCMAwAh9wEBAIwDACH4AQEAjAMAIfkBAQDnAgAh-gEBAOcCACH7AQEAjAMAIQ0FAACRBAAgCAAAjgMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIfQBAQDnAgAh9QEBAIwDACH2AQEAjAMAIfcBAQCMAwAh-AEBAIwDACH5AQEA5wIAIfoBAQDnAgAh-wEBAIwDACEMBgAA-wMAIAoAAMkDACANAADLAwAgDgAAzAMAILoBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHsAQEAAAAB7QEBAAAAAe4BAgAAAAHvARAAAAABAgAAABEAIBsAAKYEACADAAAADwAgGwAApgQAIBwAAKoEACAOAAAADwAgBgAA-gMAIAoAAJwDACANAACeAwAgDgAAnwMAIBQAAKoEACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhDAYAAPoDACAKAACcAwAgDQAAngMAIA4AAJ8DACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIewBAQDnAgAh7QEBAOcCACHuAQIAmgMAIe8BEACAAwAhDAYAAPsDACAKAADJAwAgDAAAygMAIA4AAMwDACC6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB7AEBAAAAAe0BAQAAAAHuAQIAAAAB7wEQAAAAAQIAAAARACAbAACrBAAgAwAAAA8AIBsAAKsEACAcAACvBAAgDgAAAA8AIAYAAPoDACAKAACcAwAgDAAAnQMAIA4AAJ8DACAUAACvBAAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHsAQEA5wIAIe0BAQDnAgAh7gECAJoDACHvARAAgAMAIQwGAAD6AwAgCgAAnAMAIAwAAJ0DACAOAACfAwAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHsAQEA5wIAIe0BAQDnAgAh7gECAJoDACHvARAAgAMAIQwGAAD7AwAgCgAAyQMAIAwAAMoDACANAADLAwAgugEBAAAAAb4BQAAAAAG_AUAAAAABzwEBAAAAAewBAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAECAAAAEQAgGwAAsAQAIAMAAAAPACAbAACwBAAgHAAAtAQAIA4AAAAPACAGAAD6AwAgCgAAnAMAIAwAAJ0DACANAACeAwAgFAAAtAQAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7AEBAOcCACHtAQEA5wIAIe4BAgCaAwAh7wEQAIADACEMBgAA-gMAIAoAAJwDACAMAACdAwAgDQAAngMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIc8BAQDnAgAh7AEBAOcCACHtAQEA5wIAIe4BAgCaAwAh7wEQAIADACEGugEBAAAAAbsBAQAAAAG8AQEAAAABvQEBAAAAAb4BQAAAAAG_AUAAAAABAgAAAPUBACAbAAC1BAAgAwAAAPgBACAbAAC1BAAgHAAAuQQAIAgAAAD4AQAgFAAAuQQAILoBAQDnAgAhuwEBAOcCACG8AQEA5wIAIb0BAQDnAgAhvgFAAOgCACG_AUAA6AIAIQa6AQEA5wIAIbsBAQDnAgAhvAEBAOcCACG9AQEA5wIAIb4BQADoAgAhvwFAAOgCACEDvgFAAAAAAfEBAQAAAAHzAQAAAPMBAga6AQEAAAABvgFAAAAAAb8BQAAAAAHPAQEAAAAB6wEgAAAAAfABAQAAAAECAAAAUwAgGwAAuwQAIAW6AQEAAAABvgFAAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQIIugEBAAAAAb4BQAAAAAG_AUAAAAAB0AEQAAAAAeMBAQAAAAHkAQEAAAAB6gEAAADqAQPrASAAAAABCroBAQAAAAG-AUAAAAABvwFAAAAAAeABAQAAAAHiAUAAAAAB4wEBAAAAAeQBAQAAAAHlAQEAAAAB5gEBAAAAAegBAAAA6AECAwAAAFYAIBsAALsEACAcAADCBAAgCAAAAFYAIBQAAMIEACC6AQEA5wIAIb4BQADoAgAhvwFAAOgCACHPAQEA5wIAIesBIAC4AwAh8AEBAOcCACEGugEBAOcCACG-AUAA6AIAIb8BQADoAgAhzwEBAOcCACHrASAAuAMAIfABAQDnAgAhB7oBAQAAAAG-AUAAAAABvwFAAAAAAc8BAQAAAAHtAQEAAAAB7gECAAAAAe8BEAAAAAEKugEBAAAAAb4BQAAAAAG_AUAAAAAB9AEBAAAAAfUBAQAAAAH2AQEAAAAB9wEBAAAAAfgBAQAAAAH5AQEAAAAB-gEBAAAAAQ0FAACSBAAgCQAA2gMAILoBAQAAAAG-AUAAAAABvwFAAAAAAfQBAQAAAAH1AQEAAAAB9gEBAAAAAfcBAQAAAAH4AQEAAAAB-QEBAAAAAfoBAQAAAAH7AQEAAAABAgAAAAEAIBsAAMUEACADAAAABQAgGwAAxQQAIBwAAMkEACAPAAAABQAgBQAAkQQAIAkAAI8DACAUAADJBAAgugEBAOcCACG-AUAA6AIAIb8BQADoAgAh9AEBAOcCACH1AQEAjAMAIfYBAQCMAwAh9wEBAIwDACH4AQEAjAMAIfkBAQDnAgAh-gEBAOcCACH7AQEAjAMAIQ0FAACRBAAgCQAAjwMAILoBAQDnAgAhvgFAAOgCACG_AUAA6AIAIfQBAQDnAgAh9QEBAIwDACH2AQEAjAMAIfcBAQCMAwAh-AEBAIwDACH5AQEA5wIAIfoBAQDnAgAh-wEBAIwDACEDvgFAAAAAAewBAQAAAAHzAQAAAPMBAgQEAA4FBAIIDAQJEgcCAwcBBAADAQMIAAIGAAEHAAUCAw0EBAAGAQMOAAYEAA0GAAEKAAgMGAoNHAsOIAwCBAAJCRMHAQkUAAELAAcBCwAHAQsABwMMIQANIgAOIwACCCQACSUAAAEFLwIBBTUCAwQAEyEAFCIAFQAAAAMEABMhABQiABUCBgABBwAFAgYAAQcABQMEABohABsiABwAAAADBAAaIQAbIgAcAAADBAAhIQAiIgAjAAAAAwQAISEAIiIAIwIGAAEKAAgCBgABCgAIBQQAKCEAKyIALFMAKVQAKgAAAAAABQQAKCEAKyIALFMAKVQAKgELAAcBCwAHAwQAMSEAMiIAMwAAAAMEADEhADIiADMBCwAHAQsABwUEADghADsiADxTADlUADoAAAAAAAUEADghADsiADxTADlUADoBCwAHAQsABwMEAEEhAEIiAEMAAAADBABBIQBCIgBDAAAABQQASSEATCIATVMASlQASwAAAAAABQQASSEATCIATVMASlQASwAABQQAUiEAVSIAVlMAU1QAVAAAAAAABQQAUiEAVSIAVlMAU1QAVAAAAwQAWyEAXCIAXQAAAAMEAFshAFwiAF0PAgEQJgERJwESKAETKQEVKwEWLQ8XLhAYMQEZMw8aNBEdNgEeNwEfOA8jOxIkPBYlPQQmPgQnPwQoQAQpQQQqQwQrRQ8sRhctSAQuSg8vSxgwTAQxTQQyTg8zURk0Uh01VAg2VQg3WAg4WQg5Wgg6XAg7Xg88Xx49YQg-Yw8_ZB9AZQhBZghCZw9DaiBEayRFbAdGbQdHbgdIbwdJcAdKcgdLdA9MdSVNdwdOeQ9PeiZQewdRfAdSfQ9VgAEnVoEBLVeCAQpYgwEKWYQBClqFAQpbhgEKXIgBCl2KAQ9eiwEuX40BCmCPAQ9hkAEvYpEBCmOSAQpkkwEPZZYBMGaXATRnmAELaJkBC2maAQtqmwELa5wBC2yeAQttoAEPbqEBNW-jAQtwpQEPcaYBNnKnAQtzqAELdKkBD3WsATd2rQE9d64BDHivAQx5sAEMerEBDHuyAQx8tAEMfbYBD363AT5_uQEMgAG7AQ-BAbwBP4IBvQEMgwG-AQyEAb8BD4UBwgFAhgHDAUSHAcUBRYgBxgFFiQHJAUWKAcoBRYsBywFFjAHNAUWNAc8BD44B0AFGjwHSAUWQAdQBD5EB1QFHkgHWAUWTAdcBRZQB2AEPlQHbAUiWAdwBTpcB3gECmAHfAQKZAeEBApoB4gECmwHjAQKcAeUBAp0B5wEPngHoAU-fAeoBAqAB7AEPoQHtAVCiAe4BAqMB7wECpAHwAQ-lAfMBUaYB9AFXpwH2AQWoAfcBBakB-gEFqgH7AQWrAfwBBawB_gEFrQGAAg-uAYECWK8BgwIFsAGFAg-xAYYCWbIBhwIFswGIAgW0AYkCD7UBjAJatgGNAl4" } async function decodeBase64AsWasm(wasmBase64: string): Promise { diff --git a/apps/backend/src/generated/prisma/internal/prismaNamespace.ts b/apps/backend/src/generated/prisma/internal/prismaNamespace.ts index 3a1d910..cc9ba0b 100644 --- a/apps/backend/src/generated/prisma/internal/prismaNamespace.ts +++ b/apps/backend/src/generated/prisma/internal/prismaNamespace.ts @@ -1196,6 +1196,9 @@ export const ComplexScalarFieldEnum = { id: 'id', complexName: 'complexName', physicalAddress: 'physicalAddress', + city: 'city', + state: 'state', + country: 'country', complexSlug: 'complexSlug', adminEmail: 'adminEmail', planCode: 'planCode', diff --git a/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts b/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts index cf734c5..82054ca 100644 --- a/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts +++ b/apps/backend/src/generated/prisma/internal/prismaNamespaceBrowser.ts @@ -83,6 +83,9 @@ export const ComplexScalarFieldEnum = { id: 'id', complexName: 'complexName', physicalAddress: 'physicalAddress', + city: 'city', + state: 'state', + country: 'country', complexSlug: 'complexSlug', adminEmail: 'adminEmail', planCode: 'planCode', diff --git a/apps/backend/src/generated/prisma/models/Complex.ts b/apps/backend/src/generated/prisma/models/Complex.ts index f7aa14a..ce25488 100644 --- a/apps/backend/src/generated/prisma/models/Complex.ts +++ b/apps/backend/src/generated/prisma/models/Complex.ts @@ -28,6 +28,9 @@ export type ComplexMinAggregateOutputType = { id: string | null complexName: string | null physicalAddress: string | null + city: string | null + state: string | null + country: string | null complexSlug: string | null adminEmail: string | null planCode: string | null @@ -39,6 +42,9 @@ export type ComplexMaxAggregateOutputType = { id: string | null complexName: string | null physicalAddress: string | null + city: string | null + state: string | null + country: string | null complexSlug: string | null adminEmail: string | null planCode: string | null @@ -50,6 +56,9 @@ export type ComplexCountAggregateOutputType = { id: number complexName: number physicalAddress: number + city: number + state: number + country: number complexSlug: number adminEmail: number planCode: number @@ -63,6 +72,9 @@ export type ComplexMinAggregateInputType = { id?: true complexName?: true physicalAddress?: true + city?: true + state?: true + country?: true complexSlug?: true adminEmail?: true planCode?: true @@ -74,6 +86,9 @@ export type ComplexMaxAggregateInputType = { id?: true complexName?: true physicalAddress?: true + city?: true + state?: true + country?: true complexSlug?: true adminEmail?: true planCode?: true @@ -85,6 +100,9 @@ export type ComplexCountAggregateInputType = { id?: true complexName?: true physicalAddress?: true + city?: true + state?: true + country?: true complexSlug?: true adminEmail?: true planCode?: true @@ -169,6 +187,9 @@ export type ComplexGroupByOutputType = { id: string complexName: string physicalAddress: string | null + city: string | null + state: string | null + country: string | null complexSlug: string adminEmail: string planCode: string | null @@ -201,6 +222,9 @@ export type ComplexWhereInput = { id?: Prisma.UuidFilter<"Complex"> | string complexName?: Prisma.StringFilter<"Complex"> | string physicalAddress?: Prisma.StringNullableFilter<"Complex"> | string | null + city?: Prisma.StringNullableFilter<"Complex"> | string | null + state?: Prisma.StringNullableFilter<"Complex"> | string | null + country?: Prisma.StringNullableFilter<"Complex"> | string | null complexSlug?: Prisma.StringFilter<"Complex"> | string adminEmail?: Prisma.StringFilter<"Complex"> | string planCode?: Prisma.StringNullableFilter<"Complex"> | string | null @@ -215,6 +239,9 @@ export type ComplexOrderByWithRelationInput = { id?: Prisma.SortOrder complexName?: Prisma.SortOrder physicalAddress?: Prisma.SortOrderInput | Prisma.SortOrder + city?: Prisma.SortOrderInput | Prisma.SortOrder + state?: Prisma.SortOrderInput | Prisma.SortOrder + country?: Prisma.SortOrderInput | Prisma.SortOrder complexSlug?: Prisma.SortOrder adminEmail?: Prisma.SortOrder planCode?: Prisma.SortOrderInput | Prisma.SortOrder @@ -233,6 +260,9 @@ export type ComplexWhereUniqueInput = Prisma.AtLeast<{ NOT?: Prisma.ComplexWhereInput | Prisma.ComplexWhereInput[] complexName?: Prisma.StringFilter<"Complex"> | string physicalAddress?: Prisma.StringNullableFilter<"Complex"> | string | null + city?: Prisma.StringNullableFilter<"Complex"> | string | null + state?: Prisma.StringNullableFilter<"Complex"> | string | null + country?: Prisma.StringNullableFilter<"Complex"> | string | null adminEmail?: Prisma.StringFilter<"Complex"> | string planCode?: Prisma.StringNullableFilter<"Complex"> | string | null createdAt?: Prisma.DateTimeFilter<"Complex"> | Date | string @@ -246,6 +276,9 @@ export type ComplexOrderByWithAggregationInput = { id?: Prisma.SortOrder complexName?: Prisma.SortOrder physicalAddress?: Prisma.SortOrderInput | Prisma.SortOrder + city?: Prisma.SortOrderInput | Prisma.SortOrder + state?: Prisma.SortOrderInput | Prisma.SortOrder + country?: Prisma.SortOrderInput | Prisma.SortOrder complexSlug?: Prisma.SortOrder adminEmail?: Prisma.SortOrder planCode?: Prisma.SortOrderInput | Prisma.SortOrder @@ -263,6 +296,9 @@ export type ComplexScalarWhereWithAggregatesInput = { id?: Prisma.UuidWithAggregatesFilter<"Complex"> | string complexName?: Prisma.StringWithAggregatesFilter<"Complex"> | string physicalAddress?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null + city?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null + state?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null + country?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null complexSlug?: Prisma.StringWithAggregatesFilter<"Complex"> | string adminEmail?: Prisma.StringWithAggregatesFilter<"Complex"> | string planCode?: Prisma.StringNullableWithAggregatesFilter<"Complex"> | string | null @@ -274,6 +310,9 @@ export type ComplexCreateInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string createdAt?: Date | string @@ -287,6 +326,9 @@ export type ComplexUncheckedCreateInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string planCode?: string | null @@ -300,6 +342,9 @@ export type ComplexUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -313,6 +358,9 @@ export type ComplexUncheckedUpdateInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -326,6 +374,9 @@ export type ComplexCreateManyInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string planCode?: string | null @@ -337,6 +388,9 @@ export type ComplexUpdateManyMutationInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -347,6 +401,9 @@ export type ComplexUncheckedUpdateManyInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -358,6 +415,9 @@ export type ComplexCountOrderByAggregateInput = { id?: Prisma.SortOrder complexName?: Prisma.SortOrder physicalAddress?: Prisma.SortOrder + city?: Prisma.SortOrder + state?: Prisma.SortOrder + country?: Prisma.SortOrder complexSlug?: Prisma.SortOrder adminEmail?: Prisma.SortOrder planCode?: Prisma.SortOrder @@ -369,6 +429,9 @@ export type ComplexMaxOrderByAggregateInput = { id?: Prisma.SortOrder complexName?: Prisma.SortOrder physicalAddress?: Prisma.SortOrder + city?: Prisma.SortOrder + state?: Prisma.SortOrder + country?: Prisma.SortOrder complexSlug?: Prisma.SortOrder adminEmail?: Prisma.SortOrder planCode?: Prisma.SortOrder @@ -380,6 +443,9 @@ export type ComplexMinOrderByAggregateInput = { id?: Prisma.SortOrder complexName?: Prisma.SortOrder physicalAddress?: Prisma.SortOrder + city?: Prisma.SortOrder + state?: Prisma.SortOrder + country?: Prisma.SortOrder complexSlug?: Prisma.SortOrder adminEmail?: Prisma.SortOrder planCode?: Prisma.SortOrder @@ -488,6 +554,9 @@ export type ComplexCreateWithoutUsersInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string createdAt?: Date | string @@ -500,6 +569,9 @@ export type ComplexUncheckedCreateWithoutUsersInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string planCode?: string | null @@ -528,6 +600,9 @@ export type ComplexUpdateWithoutUsersInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -540,6 +615,9 @@ export type ComplexUncheckedUpdateWithoutUsersInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -552,6 +630,9 @@ export type ComplexCreateWithoutCourtsInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string createdAt?: Date | string @@ -564,6 +645,9 @@ export type ComplexUncheckedCreateWithoutCourtsInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string planCode?: string | null @@ -592,6 +676,9 @@ export type ComplexUpdateWithoutCourtsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -604,6 +691,9 @@ export type ComplexUncheckedUpdateWithoutCourtsInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string planCode?: Prisma.NullableStringFieldUpdateOperationsInput | string | null @@ -616,6 +706,9 @@ export type ComplexCreateWithoutPlanInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string createdAt?: Date | string @@ -628,6 +721,9 @@ export type ComplexUncheckedCreateWithoutPlanInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string createdAt?: Date | string @@ -669,6 +765,9 @@ export type ComplexScalarWhereInput = { id?: Prisma.UuidFilter<"Complex"> | string complexName?: Prisma.StringFilter<"Complex"> | string physicalAddress?: Prisma.StringNullableFilter<"Complex"> | string | null + city?: Prisma.StringNullableFilter<"Complex"> | string | null + state?: Prisma.StringNullableFilter<"Complex"> | string | null + country?: Prisma.StringNullableFilter<"Complex"> | string | null complexSlug?: Prisma.StringFilter<"Complex"> | string adminEmail?: Prisma.StringFilter<"Complex"> | string planCode?: Prisma.StringNullableFilter<"Complex"> | string | null @@ -680,6 +779,9 @@ export type ComplexCreateManyPlanInput = { id: string complexName: string physicalAddress?: string | null + city?: string | null + state?: string | null + country?: string | null complexSlug: string adminEmail: string createdAt?: Date | string @@ -690,6 +792,9 @@ export type ComplexUpdateWithoutPlanInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -702,6 +807,9 @@ export type ComplexUncheckedUpdateWithoutPlanInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -714,6 +822,9 @@ export type ComplexUncheckedUpdateManyWithoutPlanInput = { id?: Prisma.StringFieldUpdateOperationsInput | string complexName?: Prisma.StringFieldUpdateOperationsInput | string physicalAddress?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + city?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + state?: Prisma.NullableStringFieldUpdateOperationsInput | string | null + country?: Prisma.NullableStringFieldUpdateOperationsInput | string | null complexSlug?: Prisma.StringFieldUpdateOperationsInput | string adminEmail?: Prisma.StringFieldUpdateOperationsInput | string createdAt?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string @@ -764,6 +875,9 @@ export type ComplexSelect = runtime.Types.Extensions.GetOmit<"id" | "complexName" | "physicalAddress" | "complexSlug" | "adminEmail" | "planCode" | "createdAt" | "updatedAt", ExtArgs["result"]["complex"]> +export type ComplexOmit = runtime.Types.Extensions.GetOmit<"id" | "complexName" | "physicalAddress" | "city" | "state" | "country" | "complexSlug" | "adminEmail" | "planCode" | "createdAt" | "updatedAt", ExtArgs["result"]["complex"]> export type ComplexInclude = { plan?: boolean | Prisma.Complex$planArgs users?: boolean | Prisma.Complex$usersArgs @@ -835,6 +958,9 @@ export type $ComplexPayload readonly complexName: Prisma.FieldRef<"Complex", 'String'> readonly physicalAddress: Prisma.FieldRef<"Complex", 'String'> + readonly city: Prisma.FieldRef<"Complex", 'String'> + readonly state: Prisma.FieldRef<"Complex", 'String'> + readonly country: Prisma.FieldRef<"Complex", 'String'> readonly complexSlug: Prisma.FieldRef<"Complex", 'String'> readonly adminEmail: Prisma.FieldRef<"Complex", 'String'> readonly planCode: Prisma.FieldRef<"Complex", 'String'> diff --git a/apps/backend/src/modules/complex/handlers/create-complex.handler.ts b/apps/backend/src/modules/complex/handlers/create-complex.handler.ts index 3ae3978..3f90ba7 100644 --- a/apps/backend/src/modules/complex/handlers/create-complex.handler.ts +++ b/apps/backend/src/modules/complex/handlers/create-complex.handler.ts @@ -17,6 +17,9 @@ export async function createComplexHandler(c: AppContext) { physicalAddress: payload.physicalAddress, adminEmail, planCode: payload.planCode, + city: payload.city, + state: payload.state, + country: payload.country, }) return c.json(complex, 201) diff --git a/apps/backend/src/modules/complex/services/complex.service.ts b/apps/backend/src/modules/complex/services/complex.service.ts index 30f189c..7f89397 100644 --- a/apps/backend/src/modules/complex/services/complex.service.ts +++ b/apps/backend/src/modules/complex/services/complex.service.ts @@ -7,6 +7,9 @@ export type CreateComplexInput = { physicalAddress: string adminEmail: string planCode?: string + city?: string + state?: string + country?: string } export type UpdateComplexInput = { @@ -15,6 +18,9 @@ export type UpdateComplexInput = { complexSlug?: string adminEmail?: string planCode?: string | null + city?: string | null + state?: string | null + country?: string | null } function slugify(value: string): string { @@ -68,6 +74,9 @@ export async function createComplex(input: CreateComplexInput) { id: uuidv7(), complexName: input.complexName, physicalAddress: input.physicalAddress.trim(), + city: input.city?.trim() || null, + state: input.state?.trim() || null, + country: input.country?.trim() || null, complexSlug, adminEmail: input.adminEmail, planCode: input.planCode, @@ -125,6 +134,18 @@ export async function updateComplex(id: string, input: UpdateComplexInput) { data.physicalAddress = input.physicalAddress?.trim() ?? null } + if (input.city !== undefined) { + data.city = input.city?.trim() ?? null + } + + if (input.state !== undefined) { + data.state = input.state?.trim() ?? null + } + + if (input.country !== undefined) { + data.country = input.country?.trim() ?? null + } + return db.complex.update({ where: { id }, data: data as Prisma.ComplexUncheckedUpdateInput, diff --git a/apps/backend/src/modules/onboarding/services/onboarding.service.ts b/apps/backend/src/modules/onboarding/services/onboarding.service.ts index e0fffe0..5c713d0 100644 --- a/apps/backend/src/modules/onboarding/services/onboarding.service.ts +++ b/apps/backend/src/modules/onboarding/services/onboarding.service.ts @@ -475,6 +475,9 @@ export async function completeOnboarding(input: OnboardingCompleteInput) { id: uuidv7(), complexName: input.complexName.trim(), physicalAddress: input.physicalAddress.trim(), + city: input.city?.trim() || null, + state: input.state?.trim() || null, + country: input.country?.trim() || null, complexSlug, adminEmail: onboardingRequest.email, planCode: input.planCode, diff --git a/apps/frontend/src/features/complex/complex-settings-page.tsx b/apps/frontend/src/features/complex/complex-settings-page.tsx new file mode 100644 index 0000000..d69febd --- /dev/null +++ b/apps/frontend/src/features/complex/complex-settings-page.tsx @@ -0,0 +1,87 @@ +import { useEffect, useState } from 'react' +import { useQuery } from '@tanstack/react-query' +import { Building2, MapPin, Settings } from 'lucide-react' +import { apiClient } from '@/lib/api-client' +import { setCurrentComplexSlug } from '@/lib/current-complex' +import { ComplexDetailsSection } from './components/complex-details-section' +import { ComplexCourtsSection } from './components/complex-courts-section' + +type ComplexSettingsPageProps = { + complexSlug: string +} + +type TabOption = 'details' | 'courts' + +export function ComplexSettingsPage({ complexSlug }: ComplexSettingsPageProps) { + const [activeTab, setActiveTab] = useState('details') + + useEffect(() => { + setCurrentComplexSlug(complexSlug) + }, [complexSlug]) + + const complexQuery = useQuery({ + queryKey: ['complex-by-slug', complexSlug], + queryFn: () => apiClient.complexes.getBySlug(complexSlug), + }) + + const complexId = complexQuery.data?.id ?? null + + const tabs = [ + { id: 'details' as const, label: 'Datos del complejo', icon: Building2 }, + { id: 'courts' as const, label: 'Canchas', icon: MapPin }, + ] + + return ( +
+
+

+ + Configuración del complejo +

+

+ {complexQuery.data?.complexName ?? 'Configura los datos de tu complejo'} +

+
+ +
+ + +
+ {activeTab === 'details' && ( + + )} + + {activeTab === 'courts' && ( + + )} +
+
+
+ ) +} diff --git a/apps/frontend/src/features/complex/components/complex-courts-section.tsx b/apps/frontend/src/features/complex/components/complex-courts-section.tsx new file mode 100644 index 0000000..37a4349 --- /dev/null +++ b/apps/frontend/src/features/complex/components/complex-courts-section.tsx @@ -0,0 +1,73 @@ +import { useState } from 'react' +import { useQuery } from '@tanstack/react-query' +import { type Court, type CreateCourtInput } from '@repo/api-contract' +import { MapPin } from 'lucide-react' +import { apiClient } from '@/lib/api-client' +import { CourtFormSection } from './court-form-section' +import { CourtListSection } from './court-list-section' +import { Separator } from '@/components/ui/separator' + +type ComplexCourtsSectionProps = { + complexId: string | null +} + +export function ComplexCourtsSection({ + complexId, +}: ComplexCourtsSectionProps) { + const [editingCourt, setEditingCourt] = useState(null) + const [initialDraft, setInitialDraft] = useState(null) + + const courtsQuery = useQuery({ + queryKey: ['courts', complexId], + enabled: Boolean(complexId), + queryFn: () => apiClient.courts.listByComplex(complexId as string), + }) + + return ( +
+
+ +

Canchas

+
+ +

+ Alta y edición de canchas del complejo. +

+ + { + setEditingCourt(null) + }} + /> + + { + setEditingCourt(null) + setInitialDraft({ + name: `${court.name} - Copy`, + sportId: court.sportId, + slotDurationMinutes: court.slotDurationMinutes, + basePrice: court.basePrice, + availability: court.availability.map((slot) => ({ + dayOfWeek: slot.dayOfWeek, + startTime: slot.startTime, + endTime: slot.endTime, + })), + }) + window.scrollTo({ top: 0, behavior: 'smooth' }) + }} + onEditCourt={(court) => { + setInitialDraft(null) + setEditingCourt(court) + window.scrollTo({ top: 0, behavior: 'smooth' }) + }} + /> +
+ ) +} diff --git a/apps/frontend/src/features/complex/components/complex-details-section.tsx b/apps/frontend/src/features/complex/components/complex-details-section.tsx new file mode 100644 index 0000000..63a843d --- /dev/null +++ b/apps/frontend/src/features/complex/components/complex-details-section.tsx @@ -0,0 +1,213 @@ +import { useEffect, useState } from 'react' +import { useMutation, useQueryClient } from '@tanstack/react-query' +import type { Complex, UpdateComplexInput } from '@repo/api-contract' +import { updateComplexSchema } from '@repo/api-contract' +import { Building2, Loader2 } from 'lucide-react' +import { apiClient } from '@/lib/api-client' +import { Button } from '@/components/ui/button' +import { Field, FieldLabel } from '@/components/ui/field' +import { Input } from '@/components/ui/input' +import { Separator } from '@/components/ui/separator' + +type ComplexDetailsSectionProps = { + complex: Complex | null + isLoading: boolean + isError: boolean +} + +type FormValues = { + complexName: string + physicalAddress: string + city: string + state: string + country: string +} + +export function ComplexDetailsSection({ + complex, + isLoading, + isError, +}: ComplexDetailsSectionProps) { + const queryClient = useQueryClient() + const [formValues, setFormValues] = useState({ + complexName: '', + physicalAddress: '', + city: '', + state: '', + country: '', + }) + const [errorMessage, setErrorMessage] = useState(null) + const [successMessage, setSuccessMessage] = useState(null) + + useEffect(() => { + if (complex) { + setFormValues({ + complexName: complex.complexName, + physicalAddress: complex.physicalAddress ?? '', + city: complex.city ?? '', + state: complex.state ?? '', + country: complex.country ?? '', + }) + } + }, [complex]) + + const updateMutation = useMutation({ + mutationFn: (data: UpdateComplexInput) => + apiClient.complexes.update(complex!.id, data), + onSuccess: (updatedComplex) => { + setSuccessMessage('Datos actualizados correctamente.') + setErrorMessage(null) + queryClient.setQueryData(['complex-by-slug', complex?.complexSlug], updatedComplex) + }, + onError: (error: Error) => { + setErrorMessage(error.message || 'Error al actualizar los datos.') + setSuccessMessage(null) + }, + }) + + const handleSubmit = (e: React.FormEvent) => { + e.preventDefault() + setErrorMessage(null) + setSuccessMessage(null) + + const result = updateComplexSchema.safeParse({ + complexName: formValues.complexName, + physicalAddress: formValues.physicalAddress || null, + city: formValues.city || null, + state: formValues.state || null, + country: formValues.country || null, + }) + + if (!result.success) { + setErrorMessage(result.error.errors[0]?.message || 'Datos inválidos.') + return + } + + updateMutation.mutate(result.data) + } + + if (isLoading) { + return ( +
+
+ +

Datos del complejo

+
+ +

Cargando...

+
+ ) + } + + if (isError || !complex) { + return ( +
+
+ +

Datos del complejo

+
+ +

+ No se pudieron cargar los datos del complejo. +

+
+ ) + } + + return ( +
+
+ +

Datos del complejo

+
+ + +
+ + Nombre del complejo + + setFormValues((prev) => ({ ...prev, complexName: e.target.value })) + } + /> + + + + Dirección + + setFormValues((prev) => ({ ...prev, physicalAddress: e.target.value })) + } + /> + + +
+ + Ciudad + + setFormValues((prev) => ({ ...prev, city: e.target.value })) + } + /> + + + + Provincia / Estado + + setFormValues((prev) => ({ ...prev, state: e.target.value })) + } + /> + + + + País + + setFormValues((prev) => ({ ...prev, country: e.target.value })) + } + /> + +
+ + {errorMessage &&

{errorMessage}

} + {successMessage && ( +

+ {successMessage} +

+ )} + +
+ +
+
+
+ ) +} diff --git a/apps/frontend/src/routes/_app/_authenticated/complex/$slug/edit.tsx b/apps/frontend/src/routes/_app/_authenticated/complex/$slug/edit.tsx index 31c6e61..a8b9379 100644 --- a/apps/frontend/src/routes/_app/_authenticated/complex/$slug/edit.tsx +++ b/apps/frontend/src/routes/_app/_authenticated/complex/$slug/edit.tsx @@ -1,5 +1,5 @@ import { createFileRoute } from '@tanstack/react-router' -import { ComplexCourtsPage } from '@/features/complex/complex-courts-page' +import { ComplexSettingsPage } from '@/features/complex/complex-settings-page' export const Route = createFileRoute('/_app/_authenticated/complex/$slug/edit')({ component: RouteComponent, @@ -7,5 +7,5 @@ export const Route = createFileRoute('/_app/_authenticated/complex/$slug/edit')( function RouteComponent() { const { slug } = Route.useParams() - return + return } diff --git a/packages/api-contract/src/complex.ts b/packages/api-contract/src/complex.ts index 515dad8..9d142bf 100644 --- a/packages/api-contract/src/complex.ts +++ b/packages/api-contract/src/complex.ts @@ -4,6 +4,9 @@ export const complexSchema = z.object({ id: z.uuid(), complexName: z.string(), physicalAddress: z.string().nullable(), + city: z.string().nullable(), + state: z.string().nullable(), + country: z.string().nullable(), complexSlug: z.string(), adminEmail: z.email(), planCode: z.string().max(10).nullable(), @@ -22,6 +25,21 @@ export const createComplexSchema = z.object({ .trim() .min(5, 'La direccion debe tener al menos 5 caracteres.') .max(200, 'La direccion no puede superar los 200 caracteres.'), + city: z + .string() + .trim() + .max(100, 'La ciudad no puede superar los 100 caracteres.') + .optional(), + state: z + .string() + .trim() + .max(100, 'La provincia/estado no puede superar los 100 caracteres.') + .optional(), + country: z + .string() + .trim() + .max(100, 'El país no puede superar los 100 caracteres.') + .optional(), planCode: z .string() .trim() @@ -45,6 +63,24 @@ export const updateComplexSchema = z .max(200, 'La direccion no puede superar los 200 caracteres.') .nullable() .optional(), + city: z + .string() + .trim() + .max(100, 'La ciudad no puede superar los 100 caracteres.') + .nullable() + .optional(), + state: z + .string() + .trim() + .max(100, 'La provincia/estado no puede superar los 100 caracteres.') + .nullable() + .optional(), + country: z + .string() + .trim() + .max(100, 'El país no puede superar los 100 caracteres.') + .nullable() + .optional(), complexSlug: z .string() .trim() @@ -65,6 +101,9 @@ export const updateComplexSchema = z Boolean( payload.complexName || payload.physicalAddress !== undefined || + payload.city !== undefined || + payload.state !== undefined || + payload.country !== undefined || payload.complexSlug || payload.adminEmail || payload.planCode !== undefined, diff --git a/packages/api-contract/src/onboarding.ts b/packages/api-contract/src/onboarding.ts index 360a431..8a8861e 100644 --- a/packages/api-contract/src/onboarding.ts +++ b/packages/api-contract/src/onboarding.ts @@ -39,6 +39,21 @@ export const onboardingCompleteSchema = z.object({ .trim() .min(5, 'La direccion debe tener al menos 5 caracteres.') .max(200, 'La direccion no puede superar los 200 caracteres.'), + city: z + .string() + .trim() + .max(100, 'La ciudad no puede superar los 100 caracteres.') + .optional(), + state: z + .string() + .trim() + .max(100, 'La provincia/estado no puede superar los 100 caracteres.') + .optional(), + country: z + .string() + .trim() + .max(100, 'El país no puede superar los 100 caracteres.') + .optional(), planCode: z .string() .trim()