agentlili 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/lib/wallet-manager.ts","../src/lib/wallet-store.ts","../src/generated/prisma/client.ts","../src/generated/prisma/internal/class.ts","../src/generated/prisma/internal/prismaNamespace.ts","../src/lib/db.ts","../src/lib/frost/key-manager.ts","../src/lib/frost/ceremony.ts","../src/lib/frost/solana-signer.ts"],"sourcesContent":["import { Keypair, Connection, LAMPORTS_PER_SOL, PublicKey } from \"@solana/web3.js\";\nimport { TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport { KeypairWallet } from \"solana-agent-kit\";\nimport bs58 from \"bs58\";\nimport crypto from \"node:crypto\";\nimport { WalletStore, type StoredWallet } from \"./wallet-store\";\nimport { FrostKeyManager, type GenerateWalletOptions } from \"./frost/key-manager\";\nimport { FrostCeremony, type PolicyChecker } from \"./frost/ceremony\";\nimport { FrostSolanaSigner } from \"./frost/solana-signer\";\nimport type { FrostWalletMeta } from \"./frost/types\";\n\nconst WALLET_ID_PATTERN = /^[a-f0-9-]{8}$/;\n\nexport interface TokenBalance {\n mint: string;\n balance: number;\n decimals: number;\n}\n\nexport class WalletManager {\n private store: WalletStore;\n private encryptionKey: string;\n private rpcUrl: string;\n private connection: Connection;\n\n constructor(encryptionKey: string, rpcUrl: string) {\n this.store = new WalletStore(encryptionKey);\n this.encryptionKey = encryptionKey;\n this.rpcUrl = rpcUrl;\n // \"confirmed\" = supermajority vote (66%+), ~800ms. See DEEP_DIVE.md §16.3 for commitment strategy.\n this.connection = new Connection(rpcUrl, \"confirmed\");\n }\n\n private validateId(id: string) {\n if (!WALLET_ID_PATTERN.test(id)) {\n throw new Error(`Invalid wallet ID format: ${id}`);\n }\n }\n\n async createWallet(label?: string, opts?: { isAgent?: boolean }): Promise<StoredWallet> {\n const keypair = Keypair.generate();\n const id = crypto.randomUUID().slice(0, 8);\n return await this.store.save(\n id,\n keypair.secretKey,\n keypair.publicKey.toBase58(),\n label,\n opts,\n );\n }\n\n async importWallet(secretKeyBase58: string, label?: string, opts?: { isAgent?: boolean }): Promise<StoredWallet> {\n let secretKey: Uint8Array;\n try {\n secretKey = bs58.decode(secretKeyBase58);\n } catch {\n throw new Error(\"Invalid secret key: not valid base58\");\n }\n if (secretKey.length !== 64) {\n throw new Error(\n `Invalid secret key: expected 64 bytes, got ${secretKey.length}`,\n );\n }\n const keypair = Keypair.fromSecretKey(secretKey);\n const id = crypto.randomUUID().slice(0, 8);\n return await this.store.save(\n id,\n keypair.secretKey,\n keypair.publicKey.toBase58(),\n label,\n opts,\n );\n }\n\n async getKeypairWallet(id: string): Promise<KeypairWallet> {\n this.validateId(id);\n const { secretKey } = await this.store.load(id);\n const keypair = Keypair.fromSecretKey(secretKey);\n return new KeypairWallet(keypair, this.rpcUrl);\n }\n\n async getKeypair(id: string): Promise<Keypair> {\n this.validateId(id);\n const { secretKey } = await this.store.load(id);\n return Keypair.fromSecretKey(secretKey);\n }\n\n async listWallets(): Promise<StoredWallet[]> {\n return await this.store.list();\n }\n\n async getWallet(id: string): Promise<StoredWallet> {\n this.validateId(id);\n const { meta } = await this.store.load(id);\n return meta;\n }\n\n async deleteWallet(id: string): Promise<boolean> {\n this.validateId(id);\n return await this.store.delete(id);\n }\n\n /** Check if the configured RPC URL points to devnet or a local validator. */\n isDevnet(): boolean {\n return /devnet|localhost|127\\.0\\.0\\.1/.test(this.rpcUrl);\n }\n\n /**\n * Best-effort airdrop on devnet/localhost.\n * Skips tx confirmation for speed — balance updates within seconds.\n * Returns airdrop info on success, undefined on failure or non-devnet.\n */\n async tryAutoAirdrop(\n publicKeyStr: string,\n solAmount: number = 1,\n ): Promise<{ signature: string; amount: number } | undefined> {\n if (!this.isDevnet()) return undefined;\n\n let timer: ReturnType<typeof setTimeout> | undefined;\n try {\n const pubkey = new PublicKey(publicKeyStr);\n const clamped = Math.max(0.1, Math.min(solAmount, 2));\n const lamports = Math.round(clamped * LAMPORTS_PER_SOL);\n\n const signature = await Promise.race([\n this.connection.requestAirdrop(pubkey, lamports),\n new Promise<never>((_, reject) => {\n timer = setTimeout(() => reject(new Error(\"Airdrop timeout\")), 10_000);\n }),\n ]);\n\n return { signature, amount: clamped };\n } catch {\n // Auto-airdrop is best-effort — never block wallet creation\n return undefined;\n } finally {\n if (timer) clearTimeout(timer);\n }\n }\n\n /** Create a new wallet and auto-airdrop devnet SOL (best-effort). */\n async createWalletWithAirdrop(\n label?: string,\n airdropSol: number = 1,\n opts?: { isAgent?: boolean },\n ): Promise<{ wallet: StoredWallet; airdrop?: { signature: string; amount: number } }> {\n const wallet = await this.createWallet(label, opts);\n const airdrop = await this.tryAutoAirdrop(wallet.publicKey, airdropSol);\n return { wallet, airdrop };\n }\n\n async getBalance(publicKeyStr: string): Promise<number> {\n const pubkey = new PublicKey(publicKeyStr);\n const lamports = await this.connection.getBalance(pubkey);\n return lamports / LAMPORTS_PER_SOL;\n }\n\n async getTokenBalances(publicKeyStr: string): Promise<TokenBalance[]> {\n const pubkey = new PublicKey(publicKeyStr);\n const tokenAccounts = await this.connection.getParsedTokenAccountsByOwner(\n pubkey,\n { programId: TOKEN_PROGRAM_ID },\n );\n\n return tokenAccounts.value\n .map((account) => {\n const parsed = account.account.data.parsed.info;\n const amount = parsed.tokenAmount;\n return {\n mint: parsed.mint as string,\n balance: Number(amount.uiAmount),\n decimals: amount.decimals as number,\n };\n })\n .filter((t) => t.balance > 0);\n }\n\n async requestAirdrop(\n publicKeyStr: string,\n solAmount: number = 1,\n ): Promise<string> {\n const pubkey = new PublicKey(publicKeyStr);\n const clamped = Math.max(0.1, Math.min(solAmount, 2));\n const lamports = Math.round(clamped * LAMPORTS_PER_SOL);\n const signature = await this.connection.requestAirdrop(pubkey, lamports);\n await this.connection.confirmTransaction(signature, \"confirmed\");\n return signature;\n }\n\n /**\n * Re-key a wallet's encryption envelope.\n * Decrypts the stored keypair and re-encrypts it with fresh cryptographic\n * material (new scrypt salt + AES-GCM IV) under the same master key.\n *\n * The Solana public key is unchanged — only the ciphertext is rotated.\n * This provides forward secrecy: old captured ciphertext cannot be replayed\n * after re-keying.\n */\n async rekeyWallet(id: string): Promise<{ walletId: string; publicKey: string; rekeyedAt: string }> {\n this.validateId(id);\n const { publicKey, rekeyedAt } = await this.store.rekey(id);\n return { walletId: id, publicKey, rekeyedAt };\n }\n\n // --- FROST Threshold Wallet Methods ---\n\n /** Create a new FROST threshold wallet (m-of-n). */\n async createFrostWallet(options?: GenerateWalletOptions): Promise<FrostWalletMeta> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n return await fkm.generateWallet(options);\n }\n\n /** Create a FROST wallet from a deterministic seed (e.g. derived from Google sub). */\n async createFrostWalletFromSeed(\n seed: Uint8Array,\n options?: GenerateWalletOptions,\n ): Promise<FrostWalletMeta> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n return fkm.splitExistingKey(seed, options);\n }\n\n /** Get a FrostSolanaSigner for signing Solana transactions via FROST ceremony. */\n async getFrostSigner(\n walletId: string,\n participantIds?: number[],\n policyChecker?: PolicyChecker,\n ): Promise<FrostSolanaSigner> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n const meta = await fkm.getWallet(walletId);\n const groupPK = await fkm.loadGroupPublicKey(walletId);\n const ceremony = new FrostCeremony(fkm, policyChecker);\n\n return new FrostSolanaSigner(\n ceremony,\n walletId,\n participantIds ?? Array.from({ length: meta.threshold }, (_, i) => i + 1),\n groupPK.point,\n );\n }\n\n /** Get FROST wallet metadata (no secrets). */\n async getFrostWallet(walletId: string): Promise<FrostWalletMeta> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n return await fkm.getWallet(walletId);\n }\n\n /** List all FROST wallets. */\n async listFrostWallets(): Promise<FrostWalletMeta[]> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n return await fkm.listWallets();\n }\n\n /** Delete a FROST wallet and all its shares. */\n async deleteFrostWallet(walletId: string): Promise<boolean> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n return await fkm.deleteWallet(walletId);\n }\n\n /** Refresh (re-split) FROST shares with fresh randomness. Group public key unchanged. */\n async refreshFrostShares(walletId: string): Promise<FrostWalletMeta> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n return fkm.refreshShares(walletId);\n }\n\n /** Verify all FROST shares for a wallet are valid. */\n async verifyFrostShares(walletId: string): Promise<boolean> {\n const fkm = new FrostKeyManager(this.encryptionKey);\n return await fkm.verifyShares(walletId);\n }\n}\n","import crypto from \"node:crypto\";\nimport { prisma } from \"@/lib/db\";\n\nconst ALGORITHM = \"aes-256-gcm\";\nconst IV_LENGTH = 12;\nconst SALT_LENGTH = 16;\n\nexport interface StoredWallet {\n id: string;\n publicKey: string;\n createdAt: string;\n label?: string;\n /** ISO timestamp of last re-keying operation, if any. */\n rekeyedAt?: string;\n /** When true this wallet backs an agent; standalone wallets omit this. */\n isAgent?: boolean;\n}\n\ninterface EncryptedPayload {\n iv: string;\n salt: string;\n tag: string;\n data: string;\n}\n\nfunction deriveKey(encryptionKey: string, salt: Buffer): Buffer {\n return crypto.scryptSync(encryptionKey, salt, 32);\n}\n\nfunction encrypt(plaintext: Buffer, encryptionKey: string): EncryptedPayload {\n const salt = crypto.randomBytes(SALT_LENGTH);\n const key = deriveKey(encryptionKey, salt);\n const iv = crypto.randomBytes(IV_LENGTH);\n const cipher = crypto.createCipheriv(ALGORITHM, key, iv);\n const encrypted = Buffer.concat([cipher.update(plaintext), cipher.final()]);\n const tag = cipher.getAuthTag();\n return {\n iv: iv.toString(\"hex\"),\n salt: salt.toString(\"hex\"),\n tag: tag.toString(\"hex\"),\n data: encrypted.toString(\"hex\"),\n };\n}\n\nfunction decrypt(payload: EncryptedPayload, encryptionKey: string): Buffer {\n if (!payload.salt) {\n console.warn(\"[wallet-store] WARNING: Wallet record missing per-wallet salt — this should not happen with current code. Refusing to decrypt.\");\n throw new Error(\"Wallet record is missing required salt field\");\n }\n const salt = Buffer.from(payload.salt, \"hex\");\n const key = deriveKey(encryptionKey, salt);\n const iv = Buffer.from(payload.iv, \"hex\");\n const tag = Buffer.from(payload.tag, \"hex\");\n const data = Buffer.from(payload.data, \"hex\");\n const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);\n decipher.setAuthTag(tag);\n return Buffer.concat([decipher.update(data), decipher.final()]);\n}\n\n/** Convert a Prisma Wallet row to StoredWallet metadata. */\nfunction rowToMeta(row: {\n id: string;\n publicKey: string;\n createdAt: Date;\n label: string | null;\n rekeyedAt: Date | null;\n isAgent: boolean;\n}): StoredWallet {\n return {\n id: row.id,\n publicKey: row.publicKey,\n createdAt: row.createdAt.toISOString(),\n ...(row.label != null ? { label: row.label } : {}),\n ...(row.rekeyedAt != null ? { rekeyedAt: row.rekeyedAt.toISOString() } : {}),\n ...(row.isAgent ? { isAgent: true } : {}),\n };\n}\n\nexport class WalletStore {\n constructor(private encryptionKey: string) {}\n\n async save(\n id: string,\n secretKey: Uint8Array,\n publicKey: string,\n label?: string,\n opts?: { isAgent?: boolean },\n ): Promise<StoredWallet> {\n const encrypted = encrypt(Buffer.from(secretKey), this.encryptionKey);\n\n const row = await prisma.wallet.create({\n data: {\n id,\n publicKey,\n label: label ?? null,\n isAgent: opts?.isAgent ?? false,\n encIv: encrypted.iv,\n encSalt: encrypted.salt,\n encTag: encrypted.tag,\n encData: encrypted.data,\n },\n });\n\n return rowToMeta(row);\n }\n\n async load(id: string): Promise<{ meta: StoredWallet; secretKey: Uint8Array }> {\n const row = await prisma.wallet.findUnique({ where: { id } });\n if (!row) {\n throw new Error(`Wallet not found: ${id}`);\n }\n\n const payload: EncryptedPayload = {\n iv: row.encIv,\n salt: row.encSalt,\n tag: row.encTag,\n data: row.encData,\n };\n const secretKey = decrypt(payload, this.encryptionKey);\n\n return { meta: rowToMeta(row), secretKey: new Uint8Array(secretKey) };\n }\n\n async list(): Promise<StoredWallet[]> {\n const rows = await prisma.wallet.findMany({\n orderBy: { createdAt: \"asc\" },\n });\n return rows.map(rowToMeta);\n }\n\n async delete(id: string): Promise<boolean> {\n try {\n await prisma.wallet.delete({ where: { id } });\n return true;\n } catch {\n // Record not found\n return false;\n }\n }\n\n /**\n * Re-key a wallet: decrypt with the current encryption key and re-encrypt\n * with fresh random salt + IV, producing a new ciphertext.\n *\n * Security rationale:\n * - Forward secrecy: old captured ciphertext becomes stale after re-key\n * - KDF refresh: allows scrypt iteration parameters to be applied to old wallets\n * - Proactive security: periodic re-keying is a cryptographic best practice\n *\n * The underlying Solana keypair (and therefore public key) does NOT change —\n * only the encryption envelope is replaced with fresh cryptographic material.\n *\n * Returns the rekeyedAt timestamp on success.\n */\n async rekey(id: string): Promise<{ publicKey: string; rekeyedAt: string }> {\n const row = await prisma.wallet.findUnique({ where: { id } });\n if (!row) {\n throw new Error(`Wallet not found: ${id}`);\n }\n\n // Decrypt with current key\n const payload: EncryptedPayload = {\n iv: row.encIv,\n salt: row.encSalt,\n tag: row.encTag,\n data: row.encData,\n };\n const secretKey = decrypt(payload, this.encryptionKey);\n\n // Re-encrypt with fresh salt + IV (same master key, new ciphertext)\n const newEncrypted = encrypt(secretKey, this.encryptionKey);\n const rekeyedAt = new Date();\n\n await prisma.wallet.update({\n where: { id },\n data: {\n encIv: newEncrypted.iv,\n encSalt: newEncrypted.salt,\n encTag: newEncrypted.tag,\n encData: newEncrypted.data,\n rekeyedAt,\n },\n });\n\n return { publicKey: row.publicKey, rekeyedAt: rekeyedAt.toISOString() };\n }\n}\n","\n/* !!! This is code generated by Prisma. Do not edit directly. !!! */\n/* eslint-disable */\n// biome-ignore-all lint: generated file\n// @ts-nocheck \n/*\n * This file should be your main import to use Prisma. Through it you get access to all the models, enums, and input types.\n * If you're looking for something you can import in the client-side of your application, please refer to the `browser.ts` file instead.\n *\n * 🟢 You can import this file directly.\n */\n\nimport * as process from 'node:process'\nimport * as path from 'node:path'\nimport { fileURLToPath } from 'node:url'\nglobalThis['__dirname'] = path.dirname(fileURLToPath(import.meta.url))\n\nimport * as runtime from \"@prisma/client/runtime/client\"\nimport * as $Enums from \"./enums\"\nimport * as $Class from \"./internal/class\"\nimport * as Prisma from \"./internal/prismaNamespace\"\n\nexport * as $Enums from './enums'\nexport * from \"./enums\"\n/**\n * ## Prisma Client\n * \n * Type-safe database client for TypeScript\n * @example\n * ```\n * const prisma = new PrismaClient({\n * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL })\n * })\n * // Fetch zero or more UserWallets\n * const userWallets = await prisma.userWallet.findMany()\n * ```\n * \n * Read more in our [docs](https://pris.ly/d/client).\n */\nexport const PrismaClient = $Class.getPrismaClientClass()\nexport type PrismaClient<LogOpts extends Prisma.LogLevel = never, OmitOpts extends Prisma.PrismaClientOptions[\"omit\"] = Prisma.PrismaClientOptions[\"omit\"], ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = $Class.PrismaClient<LogOpts, OmitOpts, ExtArgs>\nexport { Prisma }\n\n/**\n * Model UserWallet\n * \n */\nexport type UserWallet = Prisma.UserWalletModel\n/**\n * Model Wallet\n * \n */\nexport type Wallet = Prisma.WalletModel\n/**\n * Model FrostMeta\n * \n */\nexport type FrostMeta = Prisma.FrostMetaModel\n/**\n * Model FrostShare\n * \n */\nexport type FrostShare = Prisma.FrostShareModel\n/**\n * Model AuditLog\n * \n */\nexport type AuditLog = Prisma.AuditLogModel\n/**\n * Model TxLog\n * \n */\nexport type TxLog = Prisma.TxLogModel\n/**\n * Model SpendingLimits\n * \n */\nexport type SpendingLimits = Prisma.SpendingLimitsModel\n/**\n * Model SpendingRecord\n * \n */\nexport type SpendingRecord = Prisma.SpendingRecordModel\n/**\n * Model AgentLifecycle\n * \n */\nexport type AgentLifecycle = Prisma.AgentLifecycleModel\n/**\n * Model AgentStrategyConfig\n * \n */\nexport type AgentStrategyConfig = Prisma.AgentStrategyConfigModel\n/**\n * Model FraudAlert\n * \n */\nexport type FraudAlert = Prisma.FraudAlertModel\n/**\n * Model ScheduledPayment\n * \n */\nexport type ScheduledPayment = Prisma.ScheduledPaymentModel\n/**\n * Model Subscription\n * \n */\nexport type Subscription = Prisma.SubscriptionModel\n/**\n * Model Notification\n * \n */\nexport type Notification = Prisma.NotificationModel\n/**\n * Model ChatBinding\n * \n */\nexport type ChatBinding = Prisma.ChatBindingModel\n/**\n * Model WalletPersona\n * \n */\nexport type WalletPersona = Prisma.WalletPersonaModel\n/**\n * Model Battle\n * \n */\nexport type Battle = Prisma.BattleModel\n/**\n * Model Strategy\n * \n */\nexport type Strategy = Prisma.StrategyModel\n","\n/* !!! This is code generated by Prisma. Do not edit directly. !!! */\n/* eslint-disable */\n// biome-ignore-all lint: generated file\n// @ts-nocheck \n/*\n * WARNING: This is an internal file that is subject to change!\n *\n * 🛑 Under no circumstances should you import this file directly! 🛑\n *\n * Please import the `PrismaClient` class from the `client.ts` file instead.\n */\n\nimport * as runtime from \"@prisma/client/runtime/client\"\nimport type * as Prisma from \"./prismaNamespace\"\n\n\nconst config: runtime.GetPrismaClientConfig = {\n \"previewFeatures\": [],\n \"clientVersion\": \"7.4.2\",\n \"engineVersion\": \"94a226be1cf2967af2541cca5529f0f7ba866919\",\n \"activeProvider\": \"postgresql\",\n \"inlineSchema\": \"generator client {\\n provider = \\\"prisma-client\\\"\\n output = \\\"../src/generated/prisma\\\"\\n}\\n\\ndatasource db {\\n provider = \\\"postgresql\\\"\\n}\\n\\n// ─── User-Wallet Mapping (replaces .wallets/users.json) ───\\n\\nmodel UserWallet {\\n googleSub String @id\\n walletId String @unique\\n frostPublicKey String\\n createdAt DateTime @default(now())\\n\\n wallet Wallet? @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId])\\n}\\n\\n// ─── Wallet (replaces .wallets/{id}.json) ───\\n\\nmodel Wallet {\\n id String @id @db.VarChar(8)\\n publicKey String\\n label String?\\n isAgent Boolean @default(false)\\n createdAt DateTime @default(now())\\n rekeyedAt DateTime?\\n\\n // Encrypted secret key payload (AES-256-GCM)\\n encIv String // hex\\n encSalt String // hex\\n encTag String // hex\\n encData String // hex\\n\\n // Relations\\n userWallet UserWallet?\\n frostMeta FrostMeta?\\n lifecycle AgentLifecycle?\\n strategyConfig AgentStrategyConfig?\\n spendingLimits SpendingLimits?\\n persona WalletPersona?\\n\\n frostShares FrostShare[]\\n txLogs TxLog[]\\n spendingRecords SpendingRecord[]\\n fraudAlerts FraudAlert[]\\n scheduledPmts ScheduledPayment[]\\n subscriptions Subscription[]\\n notifications Notification[]\\n strategies Strategy[]\\n auditLogs AuditLog[] @relation(\\\"WalletAudits\\\")\\n\\n @@index([publicKey])\\n}\\n\\n// ─── FROST Metadata (replaces .wallets/frost/{id}.meta.json) ───\\n\\nmodel FrostMeta {\\n walletId String @id @db.VarChar(8)\\n groupPublicKey String\\n threshold Int\\n totalShares Int\\n shareLabels String[] // e.g. [\\\"user\\\",\\\"agent\\\",\\\"policy\\\"]\\n label String?\\n createdAt DateTime @default(now())\\n lastRefreshAt DateTime?\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n}\\n\\n// ─── FROST Shares (replaces .wallets/frost/{id}.share.N.json) ───\\n\\nmodel FrostShare {\\n id String @id @default(cuid())\\n walletId String @db.VarChar(8)\\n participantId Int\\n label String\\n\\n // Encrypted key package (AES-256-GCM)\\n encIv String\\n encSalt String\\n encTag String\\n encData String\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@unique([walletId, participantId])\\n @@index([walletId])\\n}\\n\\n// ─── Audit Log (replaces .wallets/audit.jsonl) ───\\n\\nmodel AuditLog {\\n id String @id @default(cuid())\\n seq Int @unique @default(autoincrement())\\n timestamp DateTime @default(now())\\n action String\\n walletId String? @db.VarChar(8)\\n agentId String?\\n ip String?\\n outcome String // \\\"success\\\" | \\\"failure\\\" | \\\"error\\\"\\n details Json?\\n integrity String // HMAC-SHA256 chain\\n\\n wallet Wallet? @relation(\\\"WalletAudits\\\", fields: [walletId], references: [id], onDelete: SetNull)\\n\\n @@index([walletId])\\n @@index([action])\\n @@index([timestamp])\\n}\\n\\n// ─── Transaction Log (replaces .wallets/logs/{id}.jsonl) ───\\n\\nmodel TxLog {\\n id String @id @default(cuid())\\n walletId String @db.VarChar(8)\\n timestamp DateTime @default(now())\\n toolName String\\n args Json\\n result String\\n success Boolean\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId, timestamp])\\n}\\n\\n// ─── Spending Limits (replaces .wallets/limits/{id}.json) ───\\n\\nmodel SpendingLimits {\\n walletId String @id @db.VarChar(8)\\n maxPerTx Float\\n maxPerDay Float\\n enabled Boolean @default(true)\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n}\\n\\n// ─── Spending Records (replaces .wallets/spending/{id}.jsonl) ───\\n\\nmodel SpendingRecord {\\n id String @id @default(cuid())\\n walletId String @db.VarChar(8)\\n timestamp DateTime @default(now())\\n amount Float // SOL\\n toolName String\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId, timestamp])\\n}\\n\\n// ─── Agent Lifecycle (replaces .wallets/lifecycle/{id}.json) ───\\n\\nmodel AgentLifecycle {\\n walletId String @id @db.VarChar(8)\\n state String @default(\\\"active\\\") // \\\"active\\\" | \\\"paused\\\" | \\\"terminated\\\"\\n updatedAt DateTime @updatedAt\\n reason String?\\n transitions Json @default(\\\"[]\\\") // LifecycleTransition[]\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n}\\n\\n// ─── Agent Strategy Config (replaces .wallets/strategy/{id}.json) ───\\n\\nmodel AgentStrategyConfig {\\n walletId String @id @db.VarChar(8)\\n strategyId String @default(\\\"balanced\\\") // \\\"conservative\\\" | \\\"balanced\\\" | \\\"aggressive\\\"\\n updatedAt DateTime @updatedAt\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n}\\n\\n// ─── Fraud Alerts (replaces .wallets/fraud/{id}.jsonl) ───\\n\\nmodel FraudAlert {\\n id String @id @db.VarChar(8)\\n walletId String @db.VarChar(8)\\n rule String // \\\"rapid_drain\\\" | \\\"velocity_spike\\\" | etc.\\n severity String // \\\"low\\\" | \\\"medium\\\" | \\\"high\\\" | \\\"critical\\\"\\n timestamp DateTime @default(now())\\n details Json\\n acknowledged Boolean @default(false)\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId, timestamp])\\n}\\n\\n// ─── Scheduled Payments (replaces .wallets/scheduled/{id}.jsonl) ───\\n\\nmodel ScheduledPayment {\\n id String @id\\n walletId String @db.VarChar(8)\\n recipient String\\n amount Float // SOL\\n executeAfter DateTime\\n status String @default(\\\"pending\\\") // \\\"pending\\\" | \\\"executed\\\" | \\\"failed\\\" | \\\"cancelled\\\"\\n createdAt DateTime @default(now())\\n executedAt DateTime?\\n txSignature String?\\n failureReason String?\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId, status])\\n @@index([executeAfter])\\n}\\n\\n// ─── Subscriptions (replaces .wallets/subscriptions/{id}.jsonl) ───\\n\\nmodel Subscription {\\n id String @id\\n walletId String @db.VarChar(8)\\n recipient String\\n amount Float // SOL\\n interval String // \\\"daily\\\" | \\\"weekly\\\" | \\\"monthly\\\"\\n startDate DateTime\\n nextDue DateTime\\n status String @default(\\\"active\\\") // \\\"active\\\" | \\\"paused\\\" | \\\"cancelled\\\"\\n maxPayments Int?\\n paymentsMade Int @default(0)\\n createdAt DateTime @default(now())\\n lastPaymentId String?\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId, status])\\n @@index([nextDue])\\n}\\n\\n// ─── Notifications (replaces .wallets/notifications/{id}.jsonl) ───\\n\\nmodel Notification {\\n id String @id @db.VarChar(8)\\n walletId String @db.VarChar(8)\\n type String\\n priority String // \\\"low\\\" | \\\"medium\\\" | \\\"high\\\" | \\\"critical\\\"\\n title String\\n message String\\n timestamp DateTime @default(now())\\n read Boolean @default(false)\\n metadata Json?\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId, read])\\n @@index([walletId, timestamp])\\n}\\n\\n// ─── Chat Bindings (replaces .wallets/messaging/bindings.jsonl) ───\\n\\nmodel ChatBinding {\\n platform String\\n chatId String\\n walletId String\\n muted Boolean @default(false)\\n createdAt DateTime @default(now())\\n\\n @@id([platform, chatId])\\n @@index([walletId])\\n}\\n\\n// ─── Wallet Persona (replaces .wallets/personas/{id}.json) ───\\n\\nmodel WalletPersona {\\n walletId String @id @db.VarChar(8)\\n personaId String @default(\\\"aria\\\") // \\\"aria\\\" | \\\"bolt\\\" | \\\"sage\\\" | \\\"blaze\\\" | \\\"hex\\\" | \\\"nova\\\"\\n updatedAt DateTime @updatedAt\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n}\\n\\n// ─── Battle Arena (replaces .wallets/battles/{id}.json) ───\\n\\nmodel Battle {\\n id String @id\\n agents Json // BattleAgent[]\\n roundDuration Int\\n totalRounds Int\\n currentRound Int @default(0)\\n status String @default(\\\"running\\\") // \\\"running\\\" | \\\"completed\\\" | \\\"cancelled\\\"\\n createdAt DateTime @default(now())\\n updatedAt DateTime @updatedAt\\n completedAt DateTime?\\n winnerId String?\\n}\\n\\n// ─── Trading Strategies (replaces .wallets/strategies/{id}.jsonl) ───\\n\\nmodel Strategy {\\n id String @id\\n walletId String @db.VarChar(8)\\n type String // \\\"dca\\\" | \\\"limit_sweep\\\" | \\\"rebalance\\\" | \\\"lp_provision\\\" | \\\"custom_prompt\\\"\\n status String @default(\\\"active\\\")\\n name String\\n interval String // \\\"hourly\\\" | \\\"every4h\\\" | etc.\\n nextRun DateTime\\n params Json\\n maxExecutions Int?\\n executionCount Int @default(0)\\n consecutiveFailures Int @default(0)\\n maxConsecutiveFailures Int @default(3)\\n createdAt DateTime @default(now())\\n updatedAt DateTime @updatedAt\\n\\n wallet Wallet @relation(fields: [walletId], references: [id], onDelete: Cascade)\\n\\n @@index([walletId, status])\\n @@index([nextRun])\\n}\\n\",\n \"runtimeDataModel\": {\n \"models\": {},\n \"enums\": {},\n \"types\": {}\n },\n \"parameterizationSchema\": {\n \"strings\": [],\n \"graph\": \"\"\n }\n}\n\nconfig.runtimeDataModel = JSON.parse(\"{\\\"models\\\":{\\\"UserWallet\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"googleSub\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"frostPublicKey\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"UserWalletToWallet\\\"}],\\\"dbName\\\":null},\\\"Wallet\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"publicKey\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"label\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"isAgent\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Boolean\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"rekeyedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"encIv\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"encSalt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"encTag\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"encData\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"userWallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"UserWallet\\\",\\\"relationName\\\":\\\"UserWalletToWallet\\\"},{\\\"name\\\":\\\"frostMeta\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"FrostMeta\\\",\\\"relationName\\\":\\\"FrostMetaToWallet\\\"},{\\\"name\\\":\\\"lifecycle\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"AgentLifecycle\\\",\\\"relationName\\\":\\\"AgentLifecycleToWallet\\\"},{\\\"name\\\":\\\"strategyConfig\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"AgentStrategyConfig\\\",\\\"relationName\\\":\\\"AgentStrategyConfigToWallet\\\"},{\\\"name\\\":\\\"spendingLimits\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"SpendingLimits\\\",\\\"relationName\\\":\\\"SpendingLimitsToWallet\\\"},{\\\"name\\\":\\\"persona\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"WalletPersona\\\",\\\"relationName\\\":\\\"WalletToWalletPersona\\\"},{\\\"name\\\":\\\"frostShares\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"FrostShare\\\",\\\"relationName\\\":\\\"FrostShareToWallet\\\"},{\\\"name\\\":\\\"txLogs\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"TxLog\\\",\\\"relationName\\\":\\\"TxLogToWallet\\\"},{\\\"name\\\":\\\"spendingRecords\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"SpendingRecord\\\",\\\"relationName\\\":\\\"SpendingRecordToWallet\\\"},{\\\"name\\\":\\\"fraudAlerts\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"FraudAlert\\\",\\\"relationName\\\":\\\"FraudAlertToWallet\\\"},{\\\"name\\\":\\\"scheduledPmts\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"ScheduledPayment\\\",\\\"relationName\\\":\\\"ScheduledPaymentToWallet\\\"},{\\\"name\\\":\\\"subscriptions\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Subscription\\\",\\\"relationName\\\":\\\"SubscriptionToWallet\\\"},{\\\"name\\\":\\\"notifications\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Notification\\\",\\\"relationName\\\":\\\"NotificationToWallet\\\"},{\\\"name\\\":\\\"strategies\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Strategy\\\",\\\"relationName\\\":\\\"StrategyToWallet\\\"},{\\\"name\\\":\\\"auditLogs\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"AuditLog\\\",\\\"relationName\\\":\\\"WalletAudits\\\"}],\\\"dbName\\\":null},\\\"FrostMeta\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"groupPublicKey\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"threshold\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"totalShares\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"shareLabels\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"label\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"lastRefreshAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"FrostMetaToWallet\\\"}],\\\"dbName\\\":null},\\\"FrostShare\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"participantId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"label\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"encIv\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"encSalt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"encTag\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"encData\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"FrostShareToWallet\\\"}],\\\"dbName\\\":null},\\\"AuditLog\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"seq\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"timestamp\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"action\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"agentId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"ip\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"outcome\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"details\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Json\\\"},{\\\"name\\\":\\\"integrity\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"WalletAudits\\\"}],\\\"dbName\\\":null},\\\"TxLog\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"timestamp\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"toolName\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"args\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Json\\\"},{\\\"name\\\":\\\"result\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"success\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Boolean\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"TxLogToWallet\\\"}],\\\"dbName\\\":null},\\\"SpendingLimits\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"maxPerTx\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Float\\\"},{\\\"name\\\":\\\"maxPerDay\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Float\\\"},{\\\"name\\\":\\\"enabled\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Boolean\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"SpendingLimitsToWallet\\\"}],\\\"dbName\\\":null},\\\"SpendingRecord\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"timestamp\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"amount\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Float\\\"},{\\\"name\\\":\\\"toolName\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"SpendingRecordToWallet\\\"}],\\\"dbName\\\":null},\\\"AgentLifecycle\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"state\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"updatedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"reason\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"transitions\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Json\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"AgentLifecycleToWallet\\\"}],\\\"dbName\\\":null},\\\"AgentStrategyConfig\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"strategyId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"updatedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"AgentStrategyConfigToWallet\\\"}],\\\"dbName\\\":null},\\\"FraudAlert\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"rule\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"severity\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"timestamp\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"details\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Json\\\"},{\\\"name\\\":\\\"acknowledged\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Boolean\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"FraudAlertToWallet\\\"}],\\\"dbName\\\":null},\\\"ScheduledPayment\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"recipient\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"amount\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Float\\\"},{\\\"name\\\":\\\"executeAfter\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"status\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"executedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"txSignature\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"failureReason\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"ScheduledPaymentToWallet\\\"}],\\\"dbName\\\":null},\\\"Subscription\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"recipient\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"amount\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Float\\\"},{\\\"name\\\":\\\"interval\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"startDate\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"nextDue\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"status\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"maxPayments\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"paymentsMade\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"lastPaymentId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"SubscriptionToWallet\\\"}],\\\"dbName\\\":null},\\\"Notification\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"type\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"priority\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"title\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"message\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"timestamp\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"read\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Boolean\\\"},{\\\"name\\\":\\\"metadata\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Json\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"NotificationToWallet\\\"}],\\\"dbName\\\":null},\\\"ChatBinding\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"platform\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"chatId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"muted\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Boolean\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"}],\\\"dbName\\\":null},\\\"WalletPersona\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"personaId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"updatedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"WalletToWalletPersona\\\"}],\\\"dbName\\\":null},\\\"Battle\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"agents\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Json\\\"},{\\\"name\\\":\\\"roundDuration\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"totalRounds\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"currentRound\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"status\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"updatedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"completedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"winnerId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"}],\\\"dbName\\\":null},\\\"Strategy\\\":{\\\"fields\\\":[{\\\"name\\\":\\\"id\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"walletId\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"type\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"status\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"name\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"interval\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"String\\\"},{\\\"name\\\":\\\"nextRun\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"params\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Json\\\"},{\\\"name\\\":\\\"maxExecutions\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"executionCount\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"consecutiveFailures\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"maxConsecutiveFailures\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"Int\\\"},{\\\"name\\\":\\\"createdAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"updatedAt\\\",\\\"kind\\\":\\\"scalar\\\",\\\"type\\\":\\\"DateTime\\\"},{\\\"name\\\":\\\"wallet\\\",\\\"kind\\\":\\\"object\\\",\\\"type\\\":\\\"Wallet\\\",\\\"relationName\\\":\\\"StrategyToWallet\\\"}],\\\"dbName\\\":null}},\\\"enums\\\":{},\\\"types\\\":{}}\")\nconfig.parameterizationSchema = {\n strings: JSON.parse(\"[\\\"where\\\",\\\"userWallet\\\",\\\"wallet\\\",\\\"frostMeta\\\",\\\"lifecycle\\\",\\\"strategyConfig\\\",\\\"spendingLimits\\\",\\\"persona\\\",\\\"orderBy\\\",\\\"cursor\\\",\\\"frostShares\\\",\\\"txLogs\\\",\\\"spendingRecords\\\",\\\"fraudAlerts\\\",\\\"scheduledPmts\\\",\\\"subscriptions\\\",\\\"notifications\\\",\\\"strategies\\\",\\\"auditLogs\\\",\\\"_count\\\",\\\"UserWallet.findUnique\\\",\\\"UserWallet.findUniqueOrThrow\\\",\\\"UserWallet.findFirst\\\",\\\"UserWallet.findFirstOrThrow\\\",\\\"UserWallet.findMany\\\",\\\"data\\\",\\\"UserWallet.createOne\\\",\\\"UserWallet.createMany\\\",\\\"UserWallet.createManyAndReturn\\\",\\\"UserWallet.updateOne\\\",\\\"UserWallet.updateMany\\\",\\\"UserWallet.updateManyAndReturn\\\",\\\"create\\\",\\\"update\\\",\\\"UserWallet.upsertOne\\\",\\\"UserWallet.deleteOne\\\",\\\"UserWallet.deleteMany\\\",\\\"having\\\",\\\"_min\\\",\\\"_max\\\",\\\"UserWallet.groupBy\\\",\\\"UserWallet.aggregate\\\",\\\"Wallet.findUnique\\\",\\\"Wallet.findUniqueOrThrow\\\",\\\"Wallet.findFirst\\\",\\\"Wallet.findFirstOrThrow\\\",\\\"Wallet.findMany\\\",\\\"Wallet.createOne\\\",\\\"Wallet.createMany\\\",\\\"Wallet.createManyAndReturn\\\",\\\"Wallet.updateOne\\\",\\\"Wallet.updateMany\\\",\\\"Wallet.updateManyAndReturn\\\",\\\"Wallet.upsertOne\\\",\\\"Wallet.deleteOne\\\",\\\"Wallet.deleteMany\\\",\\\"Wallet.groupBy\\\",\\\"Wallet.aggregate\\\",\\\"FrostMeta.findUnique\\\",\\\"FrostMeta.findUniqueOrThrow\\\",\\\"FrostMeta.findFirst\\\",\\\"FrostMeta.findFirstOrThrow\\\",\\\"FrostMeta.findMany\\\",\\\"FrostMeta.createOne\\\",\\\"FrostMeta.createMany\\\",\\\"FrostMeta.createManyAndReturn\\\",\\\"FrostMeta.updateOne\\\",\\\"FrostMeta.updateMany\\\",\\\"FrostMeta.updateManyAndReturn\\\",\\\"FrostMeta.upsertOne\\\",\\\"FrostMeta.deleteOne\\\",\\\"FrostMeta.deleteMany\\\",\\\"_avg\\\",\\\"_sum\\\",\\\"FrostMeta.groupBy\\\",\\\"FrostMeta.aggregate\\\",\\\"FrostShare.findUnique\\\",\\\"FrostShare.findUniqueOrThrow\\\",\\\"FrostShare.findFirst\\\",\\\"FrostShare.findFirstOrThrow\\\",\\\"FrostShare.findMany\\\",\\\"FrostShare.createOne\\\",\\\"FrostShare.createMany\\\",\\\"FrostShare.createManyAndReturn\\\",\\\"FrostShare.updateOne\\\",\\\"FrostShare.updateMany\\\",\\\"FrostShare.updateManyAndReturn\\\",\\\"FrostShare.upsertOne\\\",\\\"FrostShare.deleteOne\\\",\\\"FrostShare.deleteMany\\\",\\\"FrostShare.groupBy\\\",\\\"FrostShare.aggregate\\\",\\\"AuditLog.findUnique\\\",\\\"AuditLog.findUniqueOrThrow\\\",\\\"AuditLog.findFirst\\\",\\\"AuditLog.findFirstOrThrow\\\",\\\"AuditLog.findMany\\\",\\\"AuditLog.createOne\\\",\\\"AuditLog.createMany\\\",\\\"AuditLog.createManyAndReturn\\\",\\\"AuditLog.updateOne\\\",\\\"AuditLog.updateMany\\\",\\\"AuditLog.updateManyAndReturn\\\",\\\"AuditLog.upsertOne\\\",\\\"AuditLog.deleteOne\\\",\\\"AuditLog.deleteMany\\\",\\\"AuditLog.groupBy\\\",\\\"AuditLog.aggregate\\\",\\\"TxLog.findUnique\\\",\\\"TxLog.findUniqueOrThrow\\\",\\\"TxLog.findFirst\\\",\\\"TxLog.findFirstOrThrow\\\",\\\"TxLog.findMany\\\",\\\"TxLog.createOne\\\",\\\"TxLog.createMany\\\",\\\"TxLog.createManyAndReturn\\\",\\\"TxLog.updateOne\\\",\\\"TxLog.updateMany\\\",\\\"TxLog.updateManyAndReturn\\\",\\\"TxLog.upsertOne\\\",\\\"TxLog.deleteOne\\\",\\\"TxLog.deleteMany\\\",\\\"TxLog.groupBy\\\",\\\"TxLog.aggregate\\\",\\\"SpendingLimits.findUnique\\\",\\\"SpendingLimits.findUniqueOrThrow\\\",\\\"SpendingLimits.findFirst\\\",\\\"SpendingLimits.findFirstOrThrow\\\",\\\"SpendingLimits.findMany\\\",\\\"SpendingLimits.createOne\\\",\\\"SpendingLimits.createMany\\\",\\\"SpendingLimits.createManyAndReturn\\\",\\\"SpendingLimits.updateOne\\\",\\\"SpendingLimits.updateMany\\\",\\\"SpendingLimits.updateManyAndReturn\\\",\\\"SpendingLimits.upsertOne\\\",\\\"SpendingLimits.deleteOne\\\",\\\"SpendingLimits.deleteMany\\\",\\\"SpendingLimits.groupBy\\\",\\\"SpendingLimits.aggregate\\\",\\\"SpendingRecord.findUnique\\\",\\\"SpendingRecord.findUniqueOrThrow\\\",\\\"SpendingRecord.findFirst\\\",\\\"SpendingRecord.findFirstOrThrow\\\",\\\"SpendingRecord.findMany\\\",\\\"SpendingRecord.createOne\\\",\\\"SpendingRecord.createMany\\\",\\\"SpendingRecord.createManyAndReturn\\\",\\\"SpendingRecord.updateOne\\\",\\\"SpendingRecord.updateMany\\\",\\\"SpendingRecord.updateManyAndReturn\\\",\\\"SpendingRecord.upsertOne\\\",\\\"SpendingRecord.deleteOne\\\",\\\"SpendingRecord.deleteMany\\\",\\\"SpendingRecord.groupBy\\\",\\\"SpendingRecord.aggregate\\\",\\\"AgentLifecycle.findUnique\\\",\\\"AgentLifecycle.findUniqueOrThrow\\\",\\\"AgentLifecycle.findFirst\\\",\\\"AgentLifecycle.findFirstOrThrow\\\",\\\"AgentLifecycle.findMany\\\",\\\"AgentLifecycle.createOne\\\",\\\"AgentLifecycle.createMany\\\",\\\"AgentLifecycle.createManyAndReturn\\\",\\\"AgentLifecycle.updateOne\\\",\\\"AgentLifecycle.updateMany\\\",\\\"AgentLifecycle.updateManyAndReturn\\\",\\\"AgentLifecycle.upsertOne\\\",\\\"AgentLifecycle.deleteOne\\\",\\\"AgentLifecycle.deleteMany\\\",\\\"AgentLifecycle.groupBy\\\",\\\"AgentLifecycle.aggregate\\\",\\\"AgentStrategyConfig.findUnique\\\",\\\"AgentStrategyConfig.findUniqueOrThrow\\\",\\\"AgentStrategyConfig.findFirst\\\",\\\"AgentStrategyConfig.findFirstOrThrow\\\",\\\"AgentStrategyConfig.findMany\\\",\\\"AgentStrategyConfig.createOne\\\",\\\"AgentStrategyConfig.createMany\\\",\\\"AgentStrategyConfig.createManyAndReturn\\\",\\\"AgentStrategyConfig.updateOne\\\",\\\"AgentStrategyConfig.updateMany\\\",\\\"AgentStrategyConfig.updateManyAndReturn\\\",\\\"AgentStrategyConfig.upsertOne\\\",\\\"AgentStrategyConfig.deleteOne\\\",\\\"AgentStrategyConfig.deleteMany\\\",\\\"AgentStrategyConfig.groupBy\\\",\\\"AgentStrategyConfig.aggregate\\\",\\\"FraudAlert.findUnique\\\",\\\"FraudAlert.findUniqueOrThrow\\\",\\\"FraudAlert.findFirst\\\",\\\"FraudAlert.findFirstOrThrow\\\",\\\"FraudAlert.findMany\\\",\\\"FraudAlert.createOne\\\",\\\"FraudAlert.createMany\\\",\\\"FraudAlert.createManyAndReturn\\\",\\\"FraudAlert.updateOne\\\",\\\"FraudAlert.updateMany\\\",\\\"FraudAlert.updateManyAndReturn\\\",\\\"FraudAlert.upsertOne\\\",\\\"FraudAlert.deleteOne\\\",\\\"FraudAlert.deleteMany\\\",\\\"FraudAlert.groupBy\\\",\\\"FraudAlert.aggregate\\\",\\\"ScheduledPayment.findUnique\\\",\\\"ScheduledPayment.findUniqueOrThrow\\\",\\\"ScheduledPayment.findFirst\\\",\\\"ScheduledPayment.findFirstOrThrow\\\",\\\"ScheduledPayment.findMany\\\",\\\"ScheduledPayment.createOne\\\",\\\"ScheduledPayment.createMany\\\",\\\"ScheduledPayment.createManyAndReturn\\\",\\\"ScheduledPayment.updateOne\\\",\\\"ScheduledPayment.updateMany\\\",\\\"ScheduledPayment.updateManyAndReturn\\\",\\\"ScheduledPayment.upsertOne\\\",\\\"ScheduledPayment.deleteOne\\\",\\\"ScheduledPayment.deleteMany\\\",\\\"ScheduledPayment.groupBy\\\",\\\"ScheduledPayment.aggregate\\\",\\\"Subscription.findUnique\\\",\\\"Subscription.findUniqueOrThrow\\\",\\\"Subscription.findFirst\\\",\\\"Subscription.findFirstOrThrow\\\",\\\"Subscription.findMany\\\",\\\"Subscription.createOne\\\",\\\"Subscription.createMany\\\",\\\"Subscription.createManyAndReturn\\\",\\\"Subscription.updateOne\\\",\\\"Subscription.updateMany\\\",\\\"Subscription.updateManyAndReturn\\\",\\\"Subscription.upsertOne\\\",\\\"Subscription.deleteOne\\\",\\\"Subscription.deleteMany\\\",\\\"Subscription.groupBy\\\",\\\"Subscription.aggregate\\\",\\\"Notification.findUnique\\\",\\\"Notification.findUniqueOrThrow\\\",\\\"Notification.findFirst\\\",\\\"Notification.findFirstOrThrow\\\",\\\"Notification.findMany\\\",\\\"Notification.createOne\\\",\\\"Notification.createMany\\\",\\\"Notification.createManyAndReturn\\\",\\\"Notification.updateOne\\\",\\\"Notification.updateMany\\\",\\\"Notification.updateManyAndReturn\\\",\\\"Notification.upsertOne\\\",\\\"Notification.deleteOne\\\",\\\"Notification.deleteMany\\\",\\\"Notification.groupBy\\\",\\\"Notification.aggregate\\\",\\\"ChatBinding.findUnique\\\",\\\"ChatBinding.findUniqueOrThrow\\\",\\\"ChatBinding.findFirst\\\",\\\"ChatBinding.findFirstOrThrow\\\",\\\"ChatBinding.findMany\\\",\\\"ChatBinding.createOne\\\",\\\"ChatBinding.createMany\\\",\\\"ChatBinding.createManyAndReturn\\\",\\\"ChatBinding.updateOne\\\",\\\"ChatBinding.updateMany\\\",\\\"ChatBinding.updateManyAndReturn\\\",\\\"ChatBinding.upsertOne\\\",\\\"ChatBinding.deleteOne\\\",\\\"ChatBinding.deleteMany\\\",\\\"ChatBinding.groupBy\\\",\\\"ChatBinding.aggregate\\\",\\\"WalletPersona.findUnique\\\",\\\"WalletPersona.findUniqueOrThrow\\\",\\\"WalletPersona.findFirst\\\",\\\"WalletPersona.findFirstOrThrow\\\",\\\"WalletPersona.findMany\\\",\\\"WalletPersona.createOne\\\",\\\"WalletPersona.createMany\\\",\\\"WalletPersona.createManyAndReturn\\\",\\\"WalletPersona.updateOne\\\",\\\"WalletPersona.updateMany\\\",\\\"WalletPersona.updateManyAndReturn\\\",\\\"WalletPersona.upsertOne\\\",\\\"WalletPersona.deleteOne\\\",\\\"WalletPersona.deleteMany\\\",\\\"WalletPersona.groupBy\\\",\\\"WalletPersona.aggregate\\\",\\\"Battle.findUnique\\\",\\\"Battle.findUniqueOrThrow\\\",\\\"Battle.findFirst\\\",\\\"Battle.findFirstOrThrow\\\",\\\"Battle.findMany\\\",\\\"Battle.createOne\\\",\\\"Battle.createMany\\\",\\\"Battle.createManyAndReturn\\\",\\\"Battle.updateOne\\\",\\\"Battle.updateMany\\\",\\\"Battle.updateManyAndReturn\\\",\\\"Battle.upsertOne\\\",\\\"Battle.deleteOne\\\",\\\"Battle.deleteMany\\\",\\\"Battle.groupBy\\\",\\\"Battle.aggregate\\\",\\\"Strategy.findUnique\\\",\\\"Strategy.findUniqueOrThrow\\\",\\\"Strategy.findFirst\\\",\\\"Strategy.findFirstOrThrow\\\",\\\"Strategy.findMany\\\",\\\"Strategy.createOne\\\",\\\"Strategy.createMany\\\",\\\"Strategy.createManyAndReturn\\\",\\\"Strategy.updateOne\\\",\\\"Strategy.updateMany\\\",\\\"Strategy.updateManyAndReturn\\\",\\\"Strategy.upsertOne\\\",\\\"Strategy.deleteOne\\\",\\\"Strategy.deleteMany\\\",\\\"Strategy.groupBy\\\",\\\"Strategy.aggregate\\\",\\\"AND\\\",\\\"OR\\\",\\\"NOT\\\",\\\"id\\\",\\\"walletId\\\",\\\"type\\\",\\\"status\\\",\\\"name\\\",\\\"interval\\\",\\\"nextRun\\\",\\\"params\\\",\\\"maxExecutions\\\",\\\"executionCount\\\",\\\"consecutiveFailures\\\",\\\"maxConsecutiveFailures\\\",\\\"createdAt\\\",\\\"updatedAt\\\",\\\"equals\\\",\\\"in\\\",\\\"notIn\\\",\\\"lt\\\",\\\"lte\\\",\\\"gt\\\",\\\"gte\\\",\\\"not\\\",\\\"string_contains\\\",\\\"string_starts_with\\\",\\\"string_ends_with\\\",\\\"array_starts_with\\\",\\\"array_ends_with\\\",\\\"array_contains\\\",\\\"contains\\\",\\\"startsWith\\\",\\\"endsWith\\\",\\\"agents\\\",\\\"roundDuration\\\",\\\"totalRounds\\\",\\\"currentRound\\\",\\\"completedAt\\\",\\\"winnerId\\\",\\\"personaId\\\",\\\"platform\\\",\\\"chatId\\\",\\\"muted\\\",\\\"platform_chatId\\\",\\\"priority\\\",\\\"title\\\",\\\"message\\\",\\\"timestamp\\\",\\\"read\\\",\\\"metadata\\\",\\\"recipient\\\",\\\"amount\\\",\\\"startDate\\\",\\\"nextDue\\\",\\\"maxPayments\\\",\\\"paymentsMade\\\",\\\"lastPaymentId\\\",\\\"executeAfter\\\",\\\"executedAt\\\",\\\"txSignature\\\",\\\"failureReason\\\",\\\"rule\\\",\\\"severity\\\",\\\"details\\\",\\\"acknowledged\\\",\\\"strategyId\\\",\\\"state\\\",\\\"reason\\\",\\\"transitions\\\",\\\"toolName\\\",\\\"maxPerTx\\\",\\\"maxPerDay\\\",\\\"enabled\\\",\\\"args\\\",\\\"result\\\",\\\"success\\\",\\\"seq\\\",\\\"action\\\",\\\"agentId\\\",\\\"ip\\\",\\\"outcome\\\",\\\"integrity\\\",\\\"participantId\\\",\\\"label\\\",\\\"encIv\\\",\\\"encSalt\\\",\\\"encTag\\\",\\\"encData\\\",\\\"groupPublicKey\\\",\\\"threshold\\\",\\\"totalShares\\\",\\\"shareLabels\\\",\\\"lastRefreshAt\\\",\\\"has\\\",\\\"hasEvery\\\",\\\"hasSome\\\",\\\"publicKey\\\",\\\"isAgent\\\",\\\"rekeyedAt\\\",\\\"every\\\",\\\"some\\\",\\\"none\\\",\\\"googleSub\\\",\\\"frostPublicKey\\\",\\\"walletId_participantId\\\",\\\"is\\\",\\\"isNot\\\",\\\"connectOrCreate\\\",\\\"upsert\\\",\\\"createMany\\\",\\\"set\\\",\\\"disconnect\\\",\\\"delete\\\",\\\"connect\\\",\\\"updateMany\\\",\\\"deleteMany\\\",\\\"push\\\",\\\"increment\\\",\\\"decrement\\\",\\\"multiply\\\",\\\"divide\\\"]\"),\n graph: \"vAekAaACCAIAALQEACC8AgAAvwQAML0CAAAFABC-AgAAvwQAMMACAQAAAAHLAkAA_QMAIaMDAQAAAAGkAwEA-gMAIQEAAAABACAcAQAAogQAIAMAAKMEACAEAACkBAAgBQAApQQAIAYAAKYEACAHAACnBAAgCgAAqAQAIAsAAKkEACAMAACqBAAgDQAAqwQAIA4AAKwEACAPAACtBAAgEAAArgQAIBEAAK8EACASAACwBAAgvAIAAKEEADC9AgAAAwAQvgIAAKEEADC_AgEA-gMAIcsCQAD9AwAhkAMBAP8DACGRAwEA-gMAIZIDAQD6AwAhkwMBAPoDACGUAwEA-gMAIZ0DAQD6AwAhngMgAIgEACGfA0AA_gMAIQEAAAADACAIAgAAtAQAILwCAAC_BAAwvQIAAAUAEL4CAAC_BAAwwAIBAPoDACHLAkAA_QMAIaMDAQD6AwAhpAMBAPoDACEBAAAABQAgDAIAAIIEACC8AgAAnwQAML0CAAAHABC-AgAAnwQAMMACAQD6AwAhywJAAP0DACGQAwEA_wMAIZUDAQD6AwAhlgMCAPwDACGXAwIA_AMAIZgDAACeBAAgmQNAAP4DACEBAAAABwAgCQIAAIIEACC8AgAAlQQAML0CAAAJABC-AgAAlQQAMMACAQD6AwAhzAJAAP0DACH_AgEA-gMAIYADAQD_AwAhgQMAAPsDACABAAAACQAgBwIAAIIEACC8AgAAkwQAML0CAAALABC-AgAAkwQAMMACAQD6AwAhzAJAAP0DACH-AgEA-gMAIQEAAAALACAIAgAAggQAILwCAACYBAAwvQIAAA0AEL4CAACYBAAwwAIBAPoDACGDAwgAmQQAIYQDCACZBAAhhQMgAIgEACEBAAAADQAgBwIAAIIEACC8AgAAgQQAML0CAAAPABC-AgAAgQQAMMACAQD6AwAhzAJAAP0DACHkAgEA-gMAIQEAAAAPACAMAgAAggQAILwCAAC-BAAwvQIAABEAEL4CAAC-BAAwvwIBAPoDACHAAgEA-gMAIY8DAgD8AwAhkAMBAPoDACGRAwEA-gMAIZIDAQD6AwAhkwMBAPoDACGUAwEA-gMAIQECAADYBAAgDQIAAIIEACC8AgAAvgQAML0CAAARABC-AgAAvgQAML8CAQAAAAHAAgEA-gMAIY8DAgD8AwAhkAMBAPoDACGRAwEA-gMAIZIDAQD6AwAhkwMBAPoDACGUAwEA-gMAIaUDAAC9BAAgAwAAABEAIAgAABIAMAkAABMAIAsCAACCBAAgvAIAALwEADC9AgAAFQAQvgIAALwEADC_AgEA-gMAIcACAQD6AwAh7AJAAP0DACGCAwEA-gMAIYYDAAD7AwAghwMBAPoDACGIAyAAiAQAIQECAADYBAAgCwIAAIIEACC8AgAAvAQAML0CAAAVABC-AgAAvAQAML8CAQAAAAHAAgEA-gMAIewCQAD9AwAhggMBAPoDACGGAwAA-wMAIIcDAQD6AwAhiAMgAIgEACEDAAAAFQAgCAAAFgAwCQAAFwAgCQIAAIIEACC8AgAAuwQAML0CAAAZABC-AgAAuwQAML8CAQD6AwAhwAIBAPoDACHsAkAA_QMAIfACCACZBAAhggMBAPoDACEBAgAA2AQAIAkCAACCBAAgvAIAALsEADC9AgAAGQAQvgIAALsEADC_AgEAAAABwAIBAPoDACHsAkAA_QMAIfACCACZBAAhggMBAPoDACEDAAAAGQAgCAAAGgAwCQAAGwAgCwIAAIIEACC8AgAAugQAML0CAAAdABC-AgAAugQAML8CAQD6AwAhwAIBAPoDACHsAkAA_QMAIfoCAQD6AwAh-wIBAPoDACH8AgAA-wMAIP0CIACIBAAhAQIAANgEACALAgAAggQAILwCAAC6BAAwvQIAAB0AEL4CAAC6BAAwvwIBAAAAAcACAQD6AwAh7AJAAP0DACH6AgEA-gMAIfsCAQD6AwAh_AIAAPsDACD9AiAAiAQAIQMAAAAdACAIAAAeADAJAAAfACAOAgAAggQAILwCAAC5BAAwvQIAACEAEL4CAAC5BAAwvwIBAPoDACHAAgEA-gMAIcICAQD6AwAhywJAAP0DACHvAgEA-gMAIfACCACZBAAh9gJAAP0DACH3AkAA_gMAIfgCAQD_AwAh-QIBAP8DACEEAgAA2AQAIPcCAADABAAg-AIAAMAEACD5AgAAwAQAIA4CAACCBAAgvAIAALkEADC9AgAAIQAQvgIAALkEADC_AgEAAAABwAIBAPoDACHCAgEA-gMAIcsCQAD9AwAh7wIBAPoDACHwAggAmQQAIfYCQAD9AwAh9wJAAP4DACH4AgEA_wMAIfkCAQD_AwAhAwAAACEAIAgAACIAMAkAACMAIBACAACCBAAgvAIAALgEADC9AgAAJQAQvgIAALgEADC_AgEA-gMAIcACAQD6AwAhwgIBAPoDACHEAgEA-gMAIcsCQAD9AwAh7wIBAPoDACHwAggAmQQAIfECQAD9AwAh8gJAAP0DACHzAgIAtgQAIfQCAgD8AwAh9QIBAP8DACEDAgAA2AQAIPMCAADABAAg9QIAAMAEACAQAgAAggQAILwCAAC4BAAwvQIAACUAEL4CAAC4BAAwvwIBAAAAAcACAQD6AwAhwgIBAPoDACHEAgEA-gMAIcsCQAD9AwAh7wIBAPoDACHwAggAmQQAIfECQAD9AwAh8gJAAP0DACHzAgIAtgQAIfQCAgD8AwAh9QIBAP8DACEDAAAAJQAgCAAAJgAwCQAAJwAgDQIAAIIEACC8AgAAtwQAML0CAAApABC-AgAAtwQAML8CAQD6AwAhwAIBAPoDACHBAgEA-gMAIekCAQD6AwAh6gIBAPoDACHrAgEA-gMAIewCQAD9AwAh7QIgAIgEACHuAgAAswQAIAICAADYBAAg7gIAAMAEACANAgAAggQAILwCAAC3BAAwvQIAACkAEL4CAAC3BAAwvwIBAAAAAcACAQD6AwAhwQIBAPoDACHpAgEA-gMAIeoCAQD6AwAh6wIBAPoDACHsAkAA_QMAIe0CIACIBAAh7gIAALMEACADAAAAKQAgCAAAKgAwCQAAKwAgEgIAAIIEACC8AgAAtQQAML0CAAAtABC-AgAAtQQAML8CAQD6AwAhwAIBAPoDACHBAgEA-gMAIcICAQD6AwAhwwIBAPoDACHEAgEA-gMAIcUCQAD9AwAhxgIAAPsDACDHAgIAtgQAIcgCAgD8AwAhyQICAPwDACHKAgIA_AMAIcsCQAD9AwAhzAJAAP0DACECAgAA2AQAIMcCAADABAAgEgIAAIIEACC8AgAAtQQAML0CAAAtABC-AgAAtQQAML8CAQAAAAHAAgEA-gMAIcECAQD6AwAhwgIBAPoDACHDAgEA-gMAIcQCAQD6AwAhxQJAAP0DACHGAgAA-wMAIMcCAgC2BAAhyAICAPwDACHJAgIA_AMAIcoCAgD8AwAhywJAAP0DACHMAkAA_QMAIQMAAAAtACAIAAAuADAJAAAvACAOAgAAtAQAILwCAACyBAAwvQIAADEAEL4CAACyBAAwvwIBAPoDACHAAgEA_wMAIewCQAD9AwAh_AIAALMEACCJAwIA_AMAIYoDAQD6AwAhiwMBAP8DACGMAwEA_wMAIY0DAQD6AwAhjgMBAPoDACEFAgAA2AQAIMACAADABAAg_AIAAMAEACCLAwAAwAQAIIwDAADABAAgDgIAALQEACC8AgAAsgQAML0CAAAxABC-AgAAsgQAML8CAQAAAAHAAgEA_wMAIewCQAD9AwAh_AIAALMEACCJAwIAAAABigMBAPoDACGLAwEA_wMAIYwDAQD_AwAhjQMBAPoDACGOAwEA-gMAIQMAAAAxACAIAAAyADAJAAAzACABAAAAAwAgAQAAABEAIAEAAAAVACABAAAAGQAgAQAAAB0AIAEAAAAhACABAAAAJQAgAQAAACkAIAEAAAAtACABAAAAMQAgAQAAAAEAIAECAADYBAAgAwAAAAUAIAgAAEAAMAkAAAEAIAMAAAAFACAIAABAADAJAAABACADAAAABQAgCAAAQAAwCQAAAQAgBQIAAOgGACDAAgEAAAABywJAAAAAAaMDAQAAAAGkAwEAAAABARkAAEQAIATAAgEAAAABywJAAAAAAaMDAQAAAAGkAwEAAAABARkAAEYAMAEZAABGADABAAAAAwAgBQIAAOcGACDAAgEAxgQAIcsCQADHBAAhowMBAMYEACGkAwEAxgQAIQIAAAABACAZAABKACAEwAIBAMYEACHLAkAAxwQAIaMDAQDGBAAhpAMBAMYEACECAAAABQAgGQAATAAgAgAAAAUAIBkAAEwAIAEAAAADACADAAAAAQAgIAAARAAgIQAASgAgAQAAAAEAIAEAAAAFACADEwAA5AYAICYAAOYGACAnAADlBgAgB7wCAACxBAAwvQIAAFQAEL4CAACxBAAwwAIBAOIDACHLAkAA4wMAIaMDAQDiAwAhpAMBAOIDACEDAAAABQAgCAAAUwAwJQAAVAAgAwAAAAUAIAgAAEAAMAkAAAEAIBwBAACiBAAgAwAAowQAIAQAAKQEACAFAAClBAAgBgAApgQAIAcAAKcEACAKAACoBAAgCwAAqQQAIAwAAKoEACANAACrBAAgDgAArAQAIA8AAK0EACAQAACuBAAgEQAArwQAIBIAALAEACC8AgAAoQQAML0CAAADABC-AgAAoQQAML8CAQAAAAHLAkAA_QMAIZADAQD_AwAhkQMBAPoDACGSAwEA-gMAIZMDAQD6AwAhlAMBAPoDACGdAwEA-gMAIZ4DIACIBAAhnwNAAP4DACEBAAAAVwAgAQAAAFcAIBEBAADVBgAgAwAA1gYAIAQAANcGACAFAADYBgAgBgAA2QYAIAcAANoGACAKAADbBgAgCwAA3AYAIAwAAN0GACANAADeBgAgDgAA3wYAIA8AAOAGACAQAADhBgAgEQAA4gYAIBIAAOMGACCQAwAAwAQAIJ8DAADABAAgAwAAAAMAIAgAAFoAMAkAAFcAIAMAAAADACAIAABaADAJAABXACADAAAAAwAgCAAAWgAwCQAAVwAgGQEAAMYGACADAADHBgAgBAAAyAYAIAUAAMkGACAGAADKBgAgBwAAywYAIAoAAMwGACALAADNBgAgDAAAzgYAIA0AAM8GACAOAADQBgAgDwAA0QYAIBAAANIGACARAADTBgAgEgAA1AYAIL8CAQAAAAHLAkAAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGdAwEAAAABngMgAAAAAZ8DQAAAAAEBGQAAXgAgCr8CAQAAAAHLAkAAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGdAwEAAAABngMgAAAAAZ8DQAAAAAEBGQAAYAAwARkAAGAAMBkBAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIQIAAABXACAZAABjACAKvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACECAAAAAwAgGQAAZQAgAgAAAAMAIBkAAGUAIAMAAABXACAgAABeACAhAABjACABAAAAVwAgAQAAAAMAIAUTAACqBQAgJgAArAUAICcAAKsFACCQAwAAwAQAIJ8DAADABAAgDbwCAACgBAAwvQIAAGwAEL4CAACgBAAwvwIBAOIDACHLAkAA4wMAIZADAQD0AwAhkQMBAOIDACGSAwEA4gMAIZMDAQDiAwAhlAMBAOIDACGdAwEA4gMAIZ4DIACEBAAhnwNAAPMDACEDAAAAAwAgCAAAawAwJQAAbAAgAwAAAAMAIAgAAFoAMAkAAFcAIAwCAACCBAAgvAIAAJ8EADC9AgAABwAQvgIAAJ8EADDAAgEAAAABywJAAP0DACGQAwEA_wMAIZUDAQD6AwAhlgMCAPwDACGXAwIA_AMAIZgDAACeBAAgmQNAAP4DACEBAAAAbwAgAQAAAG8AIAMCAADYBAAgkAMAAMAEACCZAwAAwAQAIAMAAAAHACAIAAByADAJAABvACADAAAABwAgCAAAcgAwCQAAbwAgAwAAAAcAIAgAAHIAMAkAAG8AIAkCAACpBQAgwAIBAAAAAcsCQAAAAAGQAwEAAAABlQMBAAAAAZYDAgAAAAGXAwIAAAABmAMAAKgFACCZA0AAAAABARkAAHYAIAjAAgEAAAABywJAAAAAAZADAQAAAAGVAwEAAAABlgMCAAAAAZcDAgAAAAGYAwAAqAUAIJkDQAAAAAEBGQAAeAAwARkAAHgAMAkCAACnBQAgwAIBAMYEACHLAkAAxwQAIZADAQDSBAAhlQMBAMYEACGWAwIAyQQAIZcDAgDJBAAhmAMAAKYFACCZA0AA0QQAIQIAAABvACAZAAB7ACAIwAIBAMYEACHLAkAAxwQAIZADAQDSBAAhlQMBAMYEACGWAwIAyQQAIZcDAgDJBAAhmAMAAKYFACCZA0AA0QQAIQIAAAAHACAZAAB9ACACAAAABwAgGQAAfQAgAwAAAG8AICAAAHYAICEAAHsAIAEAAABvACABAAAABwAgBxMAAKEFACAmAACkBQAgJwAAowUAIEgAAKIFACBJAAClBQAgkAMAAMAEACCZAwAAwAQAIAu8AgAAnQQAML0CAACEAQAQvgIAAJ0EADDAAgEA4gMAIcsCQADjAwAhkAMBAPQDACGVAwEA4gMAIZYDAgDmAwAhlwMCAOYDACGYAwAAngQAIJkDQADzAwAhAwAAAAcAIAgAAIMBADAlAACEAQAgAwAAAAcAIAgAAHIAMAkAAG8AIAEAAAATACABAAAAEwAgAwAAABEAIAgAABIAMAkAABMAIAMAAAARACAIAAASADAJAAATACADAAAAEQAgCAAAEgAwCQAAEwAgCQIAAKAFACC_AgEAAAABwAIBAAAAAY8DAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAQEZAACMAQAgCL8CAQAAAAHAAgEAAAABjwMCAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABARkAAI4BADABGQAAjgEAMAkCAACfBQAgvwIBAMYEACHAAgEAxgQAIY8DAgDJBAAhkAMBAMYEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIQIAAAATACAZAACRAQAgCL8CAQDGBAAhwAIBAMYEACGPAwIAyQQAIZADAQDGBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACECAAAAEQAgGQAAkwEAIAIAAAARACAZAACTAQAgAwAAABMAICAAAIwBACAhAACRAQAgAQAAABMAIAEAAAARACAFEwAAmgUAICYAAJ0FACAnAACcBQAgSAAAmwUAIEkAAJ4FACALvAIAAJwEADC9AgAAmgEAEL4CAACcBAAwvwIBAOIDACHAAgEA4gMAIY8DAgDmAwAhkAMBAOIDACGRAwEA4gMAIZIDAQDiAwAhkwMBAOIDACGUAwEA4gMAIQMAAAARACAIAACZAQAwJQAAmgEAIAMAAAARACAIAAASADAJAAATACABAAAAMwAgAQAAADMAIAMAAAAxACAIAAAyADAJAAAzACADAAAAMQAgCAAAMgAwCQAAMwAgAwAAADEAIAgAADIAMAkAADMAIAsCAACZBQAgvwIBAAAAAcACAQAAAAHsAkAAAAAB_AKAAAAAAYkDAgAAAAGKAwEAAAABiwMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAQEZAACiAQAgCr8CAQAAAAHAAgEAAAAB7AJAAAAAAfwCgAAAAAGJAwIAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAEBGQAApAEAMAEZAACkAQAwAQAAAAMAIAsCAACYBQAgvwIBAMYEACHAAgEA0gQAIewCQADHBAAh_AKAAAAAAYkDAgDJBAAhigMBAMYEACGLAwEA0gQAIYwDAQDSBAAhjQMBAMYEACGOAwEAxgQAIQIAAAAzACAZAACoAQAgCr8CAQDGBAAhwAIBANIEACHsAkAAxwQAIfwCgAAAAAGJAwIAyQQAIYoDAQDGBAAhiwMBANIEACGMAwEA0gQAIY0DAQDGBAAhjgMBAMYEACECAAAAMQAgGQAAqgEAIAIAAAAxACAZAACqAQAgAQAAAAMAIAMAAAAzACAgAACiAQAgIQAAqAEAIAEAAAAzACABAAAAMQAgCRMAAJMFACAmAACWBQAgJwAAlQUAIEgAAJQFACBJAACXBQAgwAIAAMAEACD8AgAAwAQAIIsDAADABAAgjAMAAMAEACANvAIAAJsEADC9AgAAsgEAEL4CAACbBAAwvwIBAOIDACHAAgEA9AMAIewCQADjAwAh_AIAAIsEACCJAwIA5gMAIYoDAQDiAwAhiwMBAPQDACGMAwEA9AMAIY0DAQDiAwAhjgMBAOIDACEDAAAAMQAgCAAAsQEAMCUAALIBACADAAAAMQAgCAAAMgAwCQAAMwAgAQAAABcAIAEAAAAXACADAAAAFQAgCAAAFgAwCQAAFwAgAwAAABUAIAgAABYAMAkAABcAIAMAAAAVACAIAAAWADAJAAAXACAIAgAAkgUAIL8CAQAAAAHAAgEAAAAB7AJAAAAAAYIDAQAAAAGGA4AAAAABhwMBAAAAAYgDIAAAAAEBGQAAugEAIAe_AgEAAAABwAIBAAAAAewCQAAAAAGCAwEAAAABhgOAAAAAAYcDAQAAAAGIAyAAAAABARkAALwBADABGQAAvAEAMAgCAACRBQAgvwIBAMYEACHAAgEAxgQAIewCQADHBAAhggMBAMYEACGGA4AAAAABhwMBAMYEACGIAyAA3AQAIQIAAAAXACAZAAC_AQAgB78CAQDGBAAhwAIBAMYEACHsAkAAxwQAIYIDAQDGBAAhhgOAAAAAAYcDAQDGBAAhiAMgANwEACECAAAAFQAgGQAAwQEAIAIAAAAVACAZAADBAQAgAwAAABcAICAAALoBACAhAAC_AQAgAQAAABcAIAEAAAAVACADEwAAjgUAICYAAJAFACAnAACPBQAgCrwCAACaBAAwvQIAAMgBABC-AgAAmgQAML8CAQDiAwAhwAIBAOIDACHsAkAA4wMAIYIDAQDiAwAhhgMAAOQDACCHAwEA4gMAIYgDIACEBAAhAwAAABUAIAgAAMcBADAlAADIAQAgAwAAABUAIAgAABYAMAkAABcAIAgCAACCBAAgvAIAAJgEADC9AgAADQAQvgIAAJgEADDAAgEAAAABgwMIAJkEACGEAwgAmQQAIYUDIACIBAAhAQAAAMsBACABAAAAywEAIAECAADYBAAgAwAAAA0AIAgAAM4BADAJAADLAQAgAwAAAA0AIAgAAM4BADAJAADLAQAgAwAAAA0AIAgAAM4BADAJAADLAQAgBQIAAI0FACDAAgEAAAABgwMIAAAAAYQDCAAAAAGFAyAAAAABARkAANIBACAEwAIBAAAAAYMDCAAAAAGEAwgAAAABhQMgAAAAAQEZAADUAQAwARkAANQBADAFAgAAjAUAIMACAQDGBAAhgwMIAOcEACGEAwgA5wQAIYUDIADcBAAhAgAAAMsBACAZAADXAQAgBMACAQDGBAAhgwMIAOcEACGEAwgA5wQAIYUDIADcBAAhAgAAAA0AIBkAANkBACACAAAADQAgGQAA2QEAIAMAAADLAQAgIAAA0gEAICEAANcBACABAAAAywEAIAEAAAANACAFEwAAhwUAICYAAIoFACAnAACJBQAgSAAAiAUAIEkAAIsFACAHvAIAAJcEADC9AgAA4AEAEL4CAACXBAAwwAIBAOIDACGDAwgAjgQAIYQDCACOBAAhhQMgAIQEACEDAAAADQAgCAAA3wEAMCUAAOABACADAAAADQAgCAAAzgEAMAkAAMsBACABAAAAGwAgAQAAABsAIAMAAAAZACAIAAAaADAJAAAbACADAAAAGQAgCAAAGgAwCQAAGwAgAwAAABkAIAgAABoAMAkAABsAIAYCAACGBQAgvwIBAAAAAcACAQAAAAHsAkAAAAAB8AIIAAAAAYIDAQAAAAEBGQAA6AEAIAW_AgEAAAABwAIBAAAAAewCQAAAAAHwAggAAAABggMBAAAAAQEZAADqAQAwARkAAOoBADAGAgAAhQUAIL8CAQDGBAAhwAIBAMYEACHsAkAAxwQAIfACCADnBAAhggMBAMYEACECAAAAGwAgGQAA7QEAIAW_AgEAxgQAIcACAQDGBAAh7AJAAMcEACHwAggA5wQAIYIDAQDGBAAhAgAAABkAIBkAAO8BACACAAAAGQAgGQAA7wEAIAMAAAAbACAgAADoAQAgIQAA7QEAIAEAAAAbACABAAAAGQAgBRMAAIAFACAmAACDBQAgJwAAggUAIEgAAIEFACBJAACEBQAgCLwCAACWBAAwvQIAAPYBABC-AgAAlgQAML8CAQDiAwAhwAIBAOIDACHsAkAA4wMAIfACCACOBAAhggMBAOIDACEDAAAAGQAgCAAA9QEAMCUAAPYBACADAAAAGQAgCAAAGgAwCQAAGwAgCQIAAIIEACC8AgAAlQQAML0CAAAJABC-AgAAlQQAMMACAQAAAAHMAkAA_QMAIf8CAQD6AwAhgAMBAP8DACGBAwAA-wMAIAEAAAD5AQAgAQAAAPkBACACAgAA2AQAIIADAADABAAgAwAAAAkAIAgAAPwBADAJAAD5AQAgAwAAAAkAIAgAAPwBADAJAAD5AQAgAwAAAAkAIAgAAPwBADAJAAD5AQAgBgIAAP8EACDAAgEAAAABzAJAAAAAAf8CAQAAAAGAAwEAAAABgQOAAAAAAQEZAACAAgAgBcACAQAAAAHMAkAAAAAB_wIBAAAAAYADAQAAAAGBA4AAAAABARkAAIICADABGQAAggIAMAYCAAD-BAAgwAIBAMYEACHMAkAAxwQAIf8CAQDGBAAhgAMBANIEACGBA4AAAAABAgAAAPkBACAZAACFAgAgBcACAQDGBAAhzAJAAMcEACH_AgEAxgQAIYADAQDSBAAhgQOAAAAAAQIAAAAJACAZAACHAgAgAgAAAAkAIBkAAIcCACADAAAA-QEAICAAAIACACAhAACFAgAgAQAAAPkBACABAAAACQAgBBMAAPsEACAmAAD9BAAgJwAA_AQAIIADAADABAAgCLwCAACUBAAwvQIAAI4CABC-AgAAlAQAMMACAQDiAwAhzAJAAOMDACH_AgEA4gMAIYADAQD0AwAhgQMAAOQDACADAAAACQAgCAAAjQIAMCUAAI4CACADAAAACQAgCAAA_AEAMAkAAPkBACAHAgAAggQAILwCAACTBAAwvQIAAAsAEL4CAACTBAAwwAIBAAAAAcwCQAD9AwAh_gIBAPoDACEBAAAAkQIAIAEAAACRAgAgAQIAANgEACADAAAACwAgCAAAlAIAMAkAAJECACADAAAACwAgCAAAlAIAMAkAAJECACADAAAACwAgCAAAlAIAMAkAAJECACAEAgAA-gQAIMACAQAAAAHMAkAAAAAB_gIBAAAAAQEZAACYAgAgA8ACAQAAAAHMAkAAAAAB_gIBAAAAAQEZAACaAgAwARkAAJoCADAEAgAA-QQAIMACAQDGBAAhzAJAAMcEACH-AgEAxgQAIQIAAACRAgAgGQAAnQIAIAPAAgEAxgQAIcwCQADHBAAh_gIBAMYEACECAAAACwAgGQAAnwIAIAIAAAALACAZAACfAgAgAwAAAJECACAgAACYAgAgIQAAnQIAIAEAAACRAgAgAQAAAAsAIAMTAAD2BAAgJgAA-AQAICcAAPcEACAGvAIAAJIEADC9AgAApgIAEL4CAACSBAAwwAIBAOIDACHMAkAA4wMAIf4CAQDiAwAhAwAAAAsAIAgAAKUCADAlAACmAgAgAwAAAAsAIAgAAJQCADAJAACRAgAgAQAAAB8AIAEAAAAfACADAAAAHQAgCAAAHgAwCQAAHwAgAwAAAB0AIAgAAB4AMAkAAB8AIAMAAAAdACAIAAAeADAJAAAfACAIAgAA9QQAIL8CAQAAAAHAAgEAAAAB7AJAAAAAAfoCAQAAAAH7AgEAAAAB_AKAAAAAAf0CIAAAAAEBGQAArgIAIAe_AgEAAAABwAIBAAAAAewCQAAAAAH6AgEAAAAB-wIBAAAAAfwCgAAAAAH9AiAAAAABARkAALACADABGQAAsAIAMAgCAAD0BAAgvwIBAMYEACHAAgEAxgQAIewCQADHBAAh-gIBAMYEACH7AgEAxgQAIfwCgAAAAAH9AiAA3AQAIQIAAAAfACAZAACzAgAgB78CAQDGBAAhwAIBAMYEACHsAkAAxwQAIfoCAQDGBAAh-wIBAMYEACH8AoAAAAAB_QIgANwEACECAAAAHQAgGQAAtQIAIAIAAAAdACAZAAC1AgAgAwAAAB8AICAAAK4CACAhAACzAgAgAQAAAB8AIAEAAAAdACADEwAA8QQAICYAAPMEACAnAADyBAAgCrwCAACRBAAwvQIAALwCABC-AgAAkQQAML8CAQDiAwAhwAIBAOIDACHsAkAA4wMAIfoCAQDiAwAh-wIBAOIDACH8AgAA5AMAIP0CIACEBAAhAwAAAB0AIAgAALsCADAlAAC8AgAgAwAAAB0AIAgAAB4AMAkAAB8AIAEAAAAjACABAAAAIwAgAwAAACEAIAgAACIAMAkAACMAIAMAAAAhACAIAAAiADAJAAAjACADAAAAIQAgCAAAIgAwCQAAIwAgCwIAAPAEACC_AgEAAAABwAIBAAAAAcICAQAAAAHLAkAAAAAB7wIBAAAAAfACCAAAAAH2AkAAAAAB9wJAAAAAAfgCAQAAAAH5AgEAAAABARkAAMQCACAKvwIBAAAAAcACAQAAAAHCAgEAAAABywJAAAAAAe8CAQAAAAHwAggAAAAB9gJAAAAAAfcCQAAAAAH4AgEAAAAB-QIBAAAAAQEZAADGAgAwARkAAMYCADALAgAA7wQAIL8CAQDGBAAhwAIBAMYEACHCAgEAxgQAIcsCQADHBAAh7wIBAMYEACHwAggA5wQAIfYCQADHBAAh9wJAANEEACH4AgEA0gQAIfkCAQDSBAAhAgAAACMAIBkAAMkCACAKvwIBAMYEACHAAgEAxgQAIcICAQDGBAAhywJAAMcEACHvAgEAxgQAIfACCADnBAAh9gJAAMcEACH3AkAA0QQAIfgCAQDSBAAh-QIBANIEACECAAAAIQAgGQAAywIAIAIAAAAhACAZAADLAgAgAwAAACMAICAAAMQCACAhAADJAgAgAQAAACMAIAEAAAAhACAIEwAA6gQAICYAAO0EACAnAADsBAAgSAAA6wQAIEkAAO4EACD3AgAAwAQAIPgCAADABAAg-QIAAMAEACANvAIAAJAEADC9AgAA0gIAEL4CAACQBAAwvwIBAOIDACHAAgEA4gMAIcICAQDiAwAhywJAAOMDACHvAgEA4gMAIfACCACOBAAh9gJAAOMDACH3AkAA8wMAIfgCAQD0AwAh-QIBAPQDACEDAAAAIQAgCAAA0QIAMCUAANICACADAAAAIQAgCAAAIgAwCQAAIwAgAQAAACcAIAEAAAAnACADAAAAJQAgCAAAJgAwCQAAJwAgAwAAACUAIAgAACYAMAkAACcAIAMAAAAlACAIAAAmADAJAAAnACANAgAA6QQAIL8CAQAAAAHAAgEAAAABwgIBAAAAAcQCAQAAAAHLAkAAAAAB7wIBAAAAAfACCAAAAAHxAkAAAAAB8gJAAAAAAfMCAgAAAAH0AgIAAAAB9QIBAAAAAQEZAADaAgAgDL8CAQAAAAHAAgEAAAABwgIBAAAAAcQCAQAAAAHLAkAAAAAB7wIBAAAAAfACCAAAAAHxAkAAAAAB8gJAAAAAAfMCAgAAAAH0AgIAAAAB9QIBAAAAAQEZAADcAgAwARkAANwCADANAgAA6AQAIL8CAQDGBAAhwAIBAMYEACHCAgEAxgQAIcQCAQDGBAAhywJAAMcEACHvAgEAxgQAIfACCADnBAAh8QJAAMcEACHyAkAAxwQAIfMCAgDIBAAh9AICAMkEACH1AgEA0gQAIQIAAAAnACAZAADfAgAgDL8CAQDGBAAhwAIBAMYEACHCAgEAxgQAIcQCAQDGBAAhywJAAMcEACHvAgEAxgQAIfACCADnBAAh8QJAAMcEACHyAkAAxwQAIfMCAgDIBAAh9AICAMkEACH1AgEA0gQAIQIAAAAlACAZAADhAgAgAgAAACUAIBkAAOECACADAAAAJwAgIAAA2gIAICEAAN8CACABAAAAJwAgAQAAACUAIAcTAADiBAAgJgAA5QQAICcAAOQEACBIAADjBAAgSQAA5gQAIPMCAADABAAg9QIAAMAEACAPvAIAAI0EADC9AgAA6AIAEL4CAACNBAAwvwIBAOIDACHAAgEA4gMAIcICAQDiAwAhxAIBAOIDACHLAkAA4wMAIe8CAQDiAwAh8AIIAI4EACHxAkAA4wMAIfICQADjAwAh8wICAOUDACH0AgIA5gMAIfUCAQD0AwAhAwAAACUAIAgAAOcCADAlAADoAgAgAwAAACUAIAgAACYAMAkAACcAIAEAAAArACABAAAAKwAgAwAAACkAIAgAACoAMAkAACsAIAMAAAApACAIAAAqADAJAAArACADAAAAKQAgCAAAKgAwCQAAKwAgCgIAAOEEACC_AgEAAAABwAIBAAAAAcECAQAAAAHpAgEAAAAB6gIBAAAAAesCAQAAAAHsAkAAAAAB7QIgAAAAAe4CgAAAAAEBGQAA8AIAIAm_AgEAAAABwAIBAAAAAcECAQAAAAHpAgEAAAAB6gIBAAAAAesCAQAAAAHsAkAAAAAB7QIgAAAAAe4CgAAAAAEBGQAA8gIAMAEZAADyAgAwCgIAAOAEACC_AgEAxgQAIcACAQDGBAAhwQIBAMYEACHpAgEAxgQAIeoCAQDGBAAh6wIBAMYEACHsAkAAxwQAIe0CIADcBAAh7gKAAAAAAQIAAAArACAZAAD1AgAgCb8CAQDGBAAhwAIBAMYEACHBAgEAxgQAIekCAQDGBAAh6gIBAMYEACHrAgEAxgQAIewCQADHBAAh7QIgANwEACHuAoAAAAABAgAAACkAIBkAAPcCACACAAAAKQAgGQAA9wIAIAMAAAArACAgAADwAgAgIQAA9QIAIAEAAAArACABAAAAKQAgBBMAAN0EACAmAADfBAAgJwAA3gQAIO4CAADABAAgDLwCAACKBAAwvQIAAP4CABC-AgAAigQAML8CAQDiAwAhwAIBAOIDACHBAgEA4gMAIekCAQDiAwAh6gIBAOIDACHrAgEA4gMAIewCQADjAwAh7QIgAIQEACHuAgAAiwQAIAMAAAApACAIAAD9AgAwJQAA_gIAIAMAAAApACAIAAAqADAJAAArACAJvAIAAIcEADC9AgAAhAMAEL4CAACHBAAwwAIBAPoDACHLAkAA_QMAIeUCAQD6AwAh5gIBAPoDACHnAiAAiAQAIegCAACJBAAgAQAAAIEDACABAAAAgQMAIAi8AgAAhwQAML0CAACEAwAQvgIAAIcEADDAAgEA-gMAIcsCQAD9AwAh5QIBAPoDACHmAgEA-gMAIecCIACIBAAhAAMAAACEAwAgCAAAhQMAMAkAAIEDACADAAAAhAMAIAgAAIUDADAJAACBAwAgAwAAAIQDACAIAACFAwAwCQAAgQMAIAXAAgEAAAABywJAAAAAAeUCAQAAAAHmAgEAAAAB5wIgAAAAAQEZAACJAwAgBcACAQAAAAHLAkAAAAAB5QIBAAAAAeYCAQAAAAHnAiAAAAABARkAAIsDADABGQAAiwMAMAXAAgEAxgQAIcsCQADHBAAh5QIBAMYEACHmAgEAxgQAIecCIADcBAAhAgAAAIEDACAZAACOAwAgBcACAQDGBAAhywJAAMcEACHlAgEAxgQAIeYCAQDGBAAh5wIgANwEACECAAAAhAMAIBkAAJADACACAAAAhAMAIBkAAJADACADAAAAgQMAICAAAIkDACAhAACOAwAgAQAAAIEDACABAAAAhAMAIAMTAADZBAAgJgAA2wQAICcAANoEACAIvAIAAIMEADC9AgAAlwMAEL4CAACDBAAwwAIBAOIDACHLAkAA4wMAIeUCAQDiAwAh5gIBAOIDACHnAiAAhAQAIQMAAACEAwAgCAAAlgMAMCUAAJcDACADAAAAhAMAIAgAAIUDADAJAACBAwAgBwIAAIIEACC8AgAAgQQAML0CAAAPABC-AgAAgQQAMMACAQAAAAHMAkAA_QMAIeQCAQD6AwAhAQAAAJoDACABAAAAmgMAIAECAADYBAAgAwAAAA8AIAgAAJ0DADAJAACaAwAgAwAAAA8AIAgAAJ0DADAJAACaAwAgAwAAAA8AIAgAAJ0DADAJAACaAwAgBAIAANcEACDAAgEAAAABzAJAAAAAAeQCAQAAAAEBGQAAoQMAIAPAAgEAAAABzAJAAAAAAeQCAQAAAAEBGQAAowMAMAEZAACjAwAwBAIAANYEACDAAgEAxgQAIcwCQADHBAAh5AIBAMYEACECAAAAmgMAIBkAAKYDACADwAIBAMYEACHMAkAAxwQAIeQCAQDGBAAhAgAAAA8AIBkAAKgDACACAAAADwAgGQAAqAMAIAMAAACaAwAgIAAAoQMAICEAAKYDACABAAAAmgMAIAEAAAAPACADEwAA0wQAICYAANUEACAnAADUBAAgBrwCAACABAAwvQIAAK8DABC-AgAAgAQAMMACAQDiAwAhzAJAAOMDACHkAgEA4gMAIQMAAAAPACAIAACuAwAwJQAArwMAIAMAAAAPACAIAACdAwAwCQAAmgMAIA28AgAA-QMAML0CAAC1AwAQvgIAAPkDADC_AgEAAAABwgIBAPoDACHLAkAA_QMAIcwCQAD9AwAh3gIAAPsDACDfAgIA_AMAIeACAgD8AwAh4QICAPwDACHiAkAA_gMAIeMCAQD_AwAhAQAAALIDACABAAAAsgMAIA28AgAA-QMAML0CAAC1AwAQvgIAAPkDADC_AgEA-gMAIcICAQD6AwAhywJAAP0DACHMAkAA_QMAId4CAAD7AwAg3wICAPwDACHgAgIA_AMAIeECAgD8AwAh4gJAAP4DACHjAgEA_wMAIQLiAgAAwAQAIOMCAADABAAgAwAAALUDACAIAAC2AwAwCQAAsgMAIAMAAAC1AwAgCAAAtgMAMAkAALIDACADAAAAtQMAIAgAALYDADAJAACyAwAgCr8CAQAAAAHCAgEAAAABywJAAAAAAcwCQAAAAAHeAoAAAAAB3wICAAAAAeACAgAAAAHhAgIAAAAB4gJAAAAAAeMCAQAAAAEBGQAAugMAIAq_AgEAAAABwgIBAAAAAcsCQAAAAAHMAkAAAAAB3gKAAAAAAd8CAgAAAAHgAgIAAAAB4QICAAAAAeICQAAAAAHjAgEAAAABARkAALwDADABGQAAvAMAMAq_AgEAxgQAIcICAQDGBAAhywJAAMcEACHMAkAAxwQAId4CgAAAAAHfAgIAyQQAIeACAgDJBAAh4QICAMkEACHiAkAA0QQAIeMCAQDSBAAhAgAAALIDACAZAAC_AwAgCr8CAQDGBAAhwgIBAMYEACHLAkAAxwQAIcwCQADHBAAh3gKAAAAAAd8CAgDJBAAh4AICAMkEACHhAgIAyQQAIeICQADRBAAh4wIBANIEACECAAAAtQMAIBkAAMEDACACAAAAtQMAIBkAAMEDACADAAAAsgMAICAAALoDACAhAAC_AwAgAQAAALIDACABAAAAtQMAIAcTAADMBAAgJgAAzwQAICcAAM4EACBIAADNBAAgSQAA0AQAIOICAADABAAg4wIAAMAEACANvAIAAPIDADC9AgAAyAMAEL4CAADyAwAwvwIBAOIDACHCAgEA4gMAIcsCQADjAwAhzAJAAOMDACHeAgAA5AMAIN8CAgDmAwAh4AICAOYDACHhAgIA5gMAIeICQADzAwAh4wIBAPQDACEDAAAAtQMAIAgAAMcDADAlAADIAwAgAwAAALUDACAIAAC2AwAwCQAAsgMAIAEAAAAvACABAAAALwAgAwAAAC0AIAgAAC4AMAkAAC8AIAMAAAAtACAIAAAuADAJAAAvACADAAAALQAgCAAALgAwCQAALwAgDwIAAMsEACC_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_AgEA4gMAIcICAQDiAwAhywJAAOMDACHMAkAA4wMAId4CAADkAwAg3wICAOYDACHgAgIA5gMAIeECAgDmAwAh4gJAAPMDACHjAgEA9AMAIQsTAADrAwAgJgAA-AMAICcAAPgDACDNAkAAAAABzgJAAAAABc8CQAAAAAXQAkAAAAAB0QJAAAAAAdICQAAAAAHTAkAAAAAB1AJAAPcDACEOEwAA6wMAICYAAPYDACAnAAD2AwAgzQIBAAAAAc4CAQAAAAXPAgEAAAAF0AIBAAAAAdECAQAAAAHSAgEAAAAB0wIBAAAAAdQCAQD1AwAh2wIBAAAAAdwCAQAAAAHdAgEAAAABDhMAAOsDACAmAAD2AwAgJwAA9gMAIM0CAQAAAAHOAgEAAAAFzwIBAAAABdACAQAAAAHRAgEAAAAB0gIBAAAAAdMCAQAAAAHUAgEA9QMAIdsCAQAAAAHcAgEAAAAB3QIBAAAAAQvNAgEAAAABzgIBAAAABc8CAQAAAAXQAgEAAAAB0QIBAAAAAdICAQAAAAHTAgEAAAAB1AIBAPYDACHbAgEAAAAB3AIBAAAAAd0CAQAAAAELEwAA6wMAICYAAPgDACAnAAD4AwAgzQJAAAAAAc4CQAAAAAXPAkAAAAAF0AJAAAAAAdECQAAAAAHSAkAAAAAB0wJAAAAAAdQCQAD3AwAhCM0CQAAAAAHOAkAAAAAFzwJAAAAABdACQAAAAAHRAkAAAAAB0gJAAAAAAdMCQAAAAAHUAkAA-AMAIQ28AgAA-QMAML0CAAC1AwAQvgIAAPkDADC_AgEA-gMAIcICAQD6AwAhywJAAP0DACHMAkAA_QMAId4CAAD7AwAg3wICAPwDACHgAgIA_AMAIeECAgD8AwAh4gJAAP4DACHjAgEA_wMAIQvNAgEAAAABzgIBAAAABM8CAQAAAATQAgEAAAAB0QIBAAAAAdICAQAAAAHTAgEAAAAB1AIBAPEDACHbAgEAAAAB3AIBAAAAAd0CAQAAAAEMzQKAAAAAAdACgAAAAAHRAoAAAAAB0gKAAAAAAdMCgAAAAAHUAoAAAAAB1QIBAAAAAdYCAQAAAAHXAgEAAAAB2AKAAAAAAdkCgAAAAAHaAoAAAAABCM0CAgAAAAHOAgIAAAAEzwICAAAABNACAgAAAAHRAgIAAAAB0gICAAAAAdMCAgAAAAHUAgIA6AMAIQjNAkAAAAABzgJAAAAABM8CQAAAAATQAkAAAAAB0QJAAAAAAdICQAAAAAHTAkAAAAAB1AJAAO8DACEIzQJAAAAAAc4CQAAAAAXPAkAAAAAF0AJAAAAAAdECQAAAAAHSAkAAAAAB0wJAAAAAAdQCQAD4AwAhC80CAQAAAAHOAgEAAAAFzwIBAAAABdACAQAAAAHRAgEAAAAB0gIBAAAAAdMCAQAAAAHUAgEA9gMAIdsCAQAAAAHcAgEAAAAB3QIBAAAAAQa8AgAAgAQAML0CAACvAwAQvgIAAIAEADDAAgEA4gMAIcwCQADjAwAh5AIBAOIDACEHAgAAggQAILwCAACBBAAwvQIAAA8AEL4CAACBBAAwwAIBAPoDACHMAkAA_QMAIeQCAQD6AwAhHgEAAKIEACADAACjBAAgBAAApAQAIAUAAKUEACAGAACmBAAgBwAApwQAIAoAAKgEACALAACpBAAgDAAAqgQAIA0AAKsEACAOAACsBAAgDwAArQQAIBAAAK4EACARAACvBAAgEgAAsAQAILwCAAChBAAwvQIAAAMAEL4CAAChBAAwvwIBAPoDACHLAkAA_QMAIZADAQD_AwAhkQMBAPoDACGSAwEA-gMAIZMDAQD6AwAhlAMBAPoDACGdAwEA-gMAIZ4DIACIBAAhnwNAAP4DACGmAwAAAwAgpwMAAAMAIAi8AgAAgwQAML0CAACXAwAQvgIAAIMEADDAAgEA4gMAIcsCQADjAwAh5QIBAOIDACHmAgEA4gMAIecCIACEBAAhBRMAAOgDACAmAACGBAAgJwAAhgQAIM0CIAAAAAHUAiAAhQQAIQUTAADoAwAgJgAAhgQAICcAAIYEACDNAiAAAAAB1AIgAIUEACECzQIgAAAAAdQCIACGBAAhCLwCAACHBAAwvQIAAIQDABC-AgAAhwQAMMACAQD6AwAhywJAAP0DACHlAgEA-gMAIeYCAQD6AwAh5wIgAIgEACECzQIgAAAAAdQCIACGBAAhAuUCAQAAAAHmAgEAAAABDLwCAACKBAAwvQIAAP4CABC-AgAAigQAML8CAQDiAwAhwAIBAOIDACHBAgEA4gMAIekCAQDiAwAh6gIBAOIDACHrAgEA4gMAIewCQADjAwAh7QIgAIQEACHuAgAAiwQAIA8TAADrAwAgJgAAjAQAICcAAIwEACDNAoAAAAAB0AKAAAAAAdECgAAAAAHSAoAAAAAB0wKAAAAAAdQCgAAAAAHVAgEAAAAB1gIBAAAAAdcCAQAAAAHYAoAAAAAB2QKAAAAAAdoCgAAAAAEMzQKAAAAAAdACgAAAAAHRAoAAAAAB0gKAAAAAAdMCgAAAAAHUAoAAAAAB1QIBAAAAAdYCAQAAAAHXAgEAAAAB2AKAAAAAAdkCgAAAAAHaAoAAAAABD7wCAACNBAAwvQIAAOgCABC-AgAAjQQAML8CAQDiAwAhwAIBAOIDACHCAgEA4gMAIcQCAQDiAwAhywJAAOMDACHvAgEA4gMAIfACCACOBAAh8QJAAOMDACHyAkAA4wMAIfMCAgDlAwAh9AICAOYDACH1AgEA9AMAIQ0TAADoAwAgJgAA6QMAICcAAOkDACBIAADpAwAgSQAA6QMAIM0CCAAAAAHOAggAAAAEzwIIAAAABNACCAAAAAHRAggAAAAB0gIIAAAAAdMCCAAAAAHUAggAjwQAIQ0TAADoAwAgJgAA6QMAICcAAOkDACBIAADpAwAgSQAA6QMAIM0CCAAAAAHOAggAAAAEzwIIAAAABNACCAAAAAHRAggAAAAB0gIIAAAAAdMCCAAAAAHUAggAjwQAIQ28AgAAkAQAML0CAADSAgAQvgIAAJAEADC_AgEA4gMAIcACAQDiAwAhwgIBAOIDACHLAkAA4wMAIe8CAQDiAwAh8AIIAI4EACH2AkAA4wMAIfcCQADzAwAh-AIBAPQDACH5AgEA9AMAIQq8AgAAkQQAML0CAAC8AgAQvgIAAJEEADC_AgEA4gMAIcACAQDiAwAh7AJAAOMDACH6AgEA4gMAIfsCAQDiAwAh_AIAAOQDACD9AiAAhAQAIQa8AgAAkgQAML0CAACmAgAQvgIAAJIEADDAAgEA4gMAIcwCQADjAwAh_gIBAOIDACEHAgAAggQAILwCAACTBAAwvQIAAAsAEL4CAACTBAAwwAIBAPoDACHMAkAA_QMAIf4CAQD6AwAhCLwCAACUBAAwvQIAAI4CABC-AgAAlAQAMMACAQDiAwAhzAJAAOMDACH_AgEA4gMAIYADAQD0AwAhgQMAAOQDACAJAgAAggQAILwCAACVBAAwvQIAAAkAEL4CAACVBAAwwAIBAPoDACHMAkAA_QMAIf8CAQD6AwAhgAMBAP8DACGBAwAA-wMAIAi8AgAAlgQAML0CAAD2AQAQvgIAAJYEADC_AgEA4gMAIcACAQDiAwAh7AJAAOMDACHwAggAjgQAIYIDAQDiAwAhB7wCAACXBAAwvQIAAOABABC-AgAAlwQAMMACAQDiAwAhgwMIAI4EACGEAwgAjgQAIYUDIACEBAAhCAIAAIIEACC8AgAAmAQAML0CAAANABC-AgAAmAQAMMACAQD6AwAhgwMIAJkEACGEAwgAmQQAIYUDIACIBAAhCM0CCAAAAAHOAggAAAAEzwIIAAAABNACCAAAAAHRAggAAAAB0gIIAAAAAdMCCAAAAAHUAggA6QMAIQq8AgAAmgQAML0CAADIAQAQvgIAAJoEADC_AgEA4gMAIcACAQDiAwAh7AJAAOMDACGCAwEA4gMAIYYDAADkAwAghwMBAOIDACGIAyAAhAQAIQ28AgAAmwQAML0CAACyAQAQvgIAAJsEADC_AgEA4gMAIcACAQD0AwAh7AJAAOMDACH8AgAAiwQAIIkDAgDmAwAhigMBAOIDACGLAwEA9AMAIYwDAQD0AwAhjQMBAOIDACGOAwEA4gMAIQu8AgAAnAQAML0CAACaAQAQvgIAAJwEADC_AgEA4gMAIcACAQDiAwAhjwMCAOYDACGQAwEA4gMAIZEDAQDiAwAhkgMBAOIDACGTAwEA4gMAIZQDAQDiAwAhC7wCAACdBAAwvQIAAIQBABC-AgAAnQQAMMACAQDiAwAhywJAAOMDACGQAwEA9AMAIZUDAQDiAwAhlgMCAOYDACGXAwIA5gMAIZgDAACeBAAgmQNAAPMDACEEzQIBAAAABZoDAQAAAAGbAwEAAAAEnAMBAAAABAwCAACCBAAgvAIAAJ8EADC9AgAABwAQvgIAAJ8EADDAAgEA-gMAIcsCQAD9AwAhkAMBAP8DACGVAwEA-gMAIZYDAgD8AwAhlwMCAPwDACGYAwAAngQAIJkDQAD-AwAhDbwCAACgBAAwvQIAAGwAEL4CAACgBAAwvwIBAOIDACHLAkAA4wMAIZADAQD0AwAhkQMBAOIDACGSAwEA4gMAIZMDAQDiAwAhlAMBAOIDACGdAwEA4gMAIZ4DIACEBAAhnwNAAPMDACEcAQAAogQAIAMAAKMEACAEAACkBAAgBQAApQQAIAYAAKYEACAHAACnBAAgCgAAqAQAIAsAAKkEACAMAACqBAAgDQAAqwQAIA4AAKwEACAPAACtBAAgEAAArgQAIBEAAK8EACASAACwBAAgvAIAAKEEADC9AgAAAwAQvgIAAKEEADC_AgEA-gMAIcsCQAD9AwAhkAMBAP8DACGRAwEA-gMAIZIDAQD6AwAhkwMBAPoDACGUAwEA-gMAIZ0DAQD6AwAhngMgAIgEACGfA0AA_gMAIQoCAAC0BAAgvAIAAL8EADC9AgAABQAQvgIAAL8EADDAAgEA-gMAIcsCQAD9AwAhowMBAPoDACGkAwEA-gMAIaYDAAAFACCnAwAABQAgDgIAAIIEACC8AgAAnwQAML0CAAAHABC-AgAAnwQAMMACAQD6AwAhywJAAP0DACGQAwEA_wMAIZUDAQD6AwAhlgMCAPwDACGXAwIA_AMAIZgDAACeBAAgmQNAAP4DACGmAwAABwAgpwMAAAcAIAsCAACCBAAgvAIAAJUEADC9AgAACQAQvgIAAJUEADDAAgEA-gMAIcwCQAD9AwAh_wIBAPoDACGAAwEA_wMAIYEDAAD7AwAgpgMAAAkAIKcDAAAJACAJAgAAggQAILwCAACTBAAwvQIAAAsAEL4CAACTBAAwwAIBAPoDACHMAkAA_QMAIf4CAQD6AwAhpgMAAAsAIKcDAAALACAKAgAAggQAILwCAACYBAAwvQIAAA0AEL4CAACYBAAwwAIBAPoDACGDAwgAmQQAIYQDCACZBAAhhQMgAIgEACGmAwAADQAgpwMAAA0AIAkCAACCBAAgvAIAAIEEADC9AgAADwAQvgIAAIEEADDAAgEA-gMAIcwCQAD9AwAh5AIBAPoDACGmAwAADwAgpwMAAA8AIAOgAwAAEQAgoQMAABEAIKIDAAARACADoAMAABUAIKEDAAAVACCiAwAAFQAgA6ADAAAZACChAwAAGQAgogMAABkAIAOgAwAAHQAgoQMAAB0AIKIDAAAdACADoAMAACEAIKEDAAAhACCiAwAAIQAgA6ADAAAlACChAwAAJQAgogMAACUAIAOgAwAAKQAgoQMAACkAIKIDAAApACADoAMAAC0AIKEDAAAtACCiAwAALQAgA6ADAAAxACChAwAAMQAgogMAADEAIAe8AgAAsQQAML0CAABUABC-AgAAsQQAMMACAQDiAwAhywJAAOMDACGjAwEA4gMAIaQDAQDiAwAhDgIAALQEACC8AgAAsgQAML0CAAAxABC-AgAAsgQAML8CAQD6AwAhwAIBAP8DACHsAkAA_QMAIfwCAACzBAAgiQMCAPwDACGKAwEA-gMAIYsDAQD_AwAhjAMBAP8DACGNAwEA-gMAIY4DAQD6AwAhDM0CgAAAAAHQAoAAAAAB0QKAAAAAAdICgAAAAAHTAoAAAAAB1AKAAAAAAdUCAQAAAAHWAgEAAAAB1wIBAAAAAdgCgAAAAAHZAoAAAAAB2gKAAAAAAR4BAACiBAAgAwAAowQAIAQAAKQEACAFAAClBAAgBgAApgQAIAcAAKcEACAKAACoBAAgCwAAqQQAIAwAAKoEACANAACrBAAgDgAArAQAIA8AAK0EACAQAACuBAAgEQAArwQAIBIAALAEACC8AgAAoQQAML0CAAADABC-AgAAoQQAML8CAQD6AwAhywJAAP0DACGQAwEA_wMAIZEDAQD6AwAhkgMBAPoDACGTAwEA-gMAIZQDAQD6AwAhnQMBAPoDACGeAyAAiAQAIZ8DQAD-AwAhpgMAAAMAIKcDAAADACASAgAAggQAILwCAAC1BAAwvQIAAC0AEL4CAAC1BAAwvwIBAPoDACHAAgEA-gMAIcECAQD6AwAhwgIBAPoDACHDAgEA-gMAIcQCAQD6AwAhxQJAAP0DACHGAgAA-wMAIMcCAgC2BAAhyAICAPwDACHJAgIA_AMAIcoCAgD8AwAhywJAAP0DACHMAkAA_QMAIQjNAgIAAAABzgICAAAABc8CAgAAAAXQAgIAAAAB0QICAAAAAdICAgAAAAHTAgIAAAAB1AICAOsDACENAgAAggQAILwCAAC3BAAwvQIAACkAEL4CAAC3BAAwvwIBAPoDACHAAgEA-gMAIcECAQD6AwAh6QIBAPoDACHqAgEA-gMAIesCAQD6AwAh7AJAAP0DACHtAiAAiAQAIe4CAACzBAAgEAIAAIIEACC8AgAAuAQAML0CAAAlABC-AgAAuAQAML8CAQD6AwAhwAIBAPoDACHCAgEA-gMAIcQCAQD6AwAhywJAAP0DACHvAgEA-gMAIfACCACZBAAh8QJAAP0DACHyAkAA_QMAIfMCAgC2BAAh9AICAPwDACH1AgEA_wMAIQ4CAACCBAAgvAIAALkEADC9AgAAIQAQvgIAALkEADC_AgEA-gMAIcACAQD6AwAhwgIBAPoDACHLAkAA_QMAIe8CAQD6AwAh8AIIAJkEACH2AkAA_QMAIfcCQAD-AwAh-AIBAP8DACH5AgEA_wMAIQsCAACCBAAgvAIAALoEADC9AgAAHQAQvgIAALoEADC_AgEA-gMAIcACAQD6AwAh7AJAAP0DACH6AgEA-gMAIfsCAQD6AwAh_AIAAPsDACD9AiAAiAQAIQkCAACCBAAgvAIAALsEADC9AgAAGQAQvgIAALsEADC_AgEA-gMAIcACAQD6AwAh7AJAAP0DACHwAggAmQQAIYIDAQD6AwAhCwIAAIIEACC8AgAAvAQAML0CAAAVABC-AgAAvAQAML8CAQD6AwAhwAIBAPoDACHsAkAA_QMAIYIDAQD6AwAhhgMAAPsDACCHAwEA-gMAIYgDIACIBAAhAsACAQAAAAGPAwIAAAABDAIAAIIEACC8AgAAvgQAML0CAAARABC-AgAAvgQAML8CAQD6AwAhwAIBAPoDACGPAwIA_AMAIZADAQD6AwAhkQMBAPoDACGSAwEA-gMAIZMDAQD6AwAhlAMBAPoDACEIAgAAtAQAILwCAAC_BAAwvQIAAAUAEL4CAAC_BAAwwAIBAPoDACHLAkAA_QMAIaMDAQD6AwAhpAMBAPoDACEAAAAAAAABqwMBAAAAAQGrA0AAAAABBasDAgAAAAGyAwIAAAABswMCAAAAAbQDAgAAAAG1AwIAAAABBasDAgAAAAGyAwIAAAABswMCAAAAAbQDAgAAAAG1AwIAAAABBSAAALgHACAhAAC7BwAgqAMAALkHACCpAwAAugcAIK4DAABXACADIAAAuAcAIKgDAAC5BwAgrgMAAFcAIAAAAAAAAasDQAAAAAEBqwMBAAAAAQAAAAUgAACzBwAgIQAAtgcAIKgDAAC0BwAgqQMAALUHACCuAwAAVwAgAyAAALMHACCoAwAAtAcAIK4DAABXACARAQAA1QYAIAMAANYGACAEAADXBgAgBQAA2AYAIAYAANkGACAHAADaBgAgCgAA2wYAIAsAANwGACAMAADdBgAgDQAA3gYAIA4AAN8GACAPAADgBgAgEAAA4QYAIBEAAOIGACASAADjBgAgkAMAAMAEACCfAwAAwAQAIAAAAAGrAyAAAAABAAAABSAAAK4HACAhAACxBwAgqAMAAK8HACCpAwAAsAcAIK4DAABXACADIAAArgcAIKgDAACvBwAgrgMAAFcAIAAAAAAABasDCAAAAAGyAwgAAAABswMIAAAAAbQDCAAAAAG1AwgAAAABBSAAAKkHACAhAACsBwAgqAMAAKoHACCpAwAAqwcAIK4DAABXACADIAAAqQcAIKgDAACqBwAgrgMAAFcAIAAAAAAABSAAAKQHACAhAACnBwAgqAMAAKUHACCpAwAApgcAIK4DAABXACADIAAApAcAIKgDAAClBwAgrgMAAFcAIAAAAAUgAACfBwAgIQAAogcAIKgDAACgBwAgqQMAAKEHACCuAwAAVwAgAyAAAJ8HACCoAwAAoAcAIK4DAABXACAAAAAFIAAAmgcAICEAAJ0HACCoAwAAmwcAIKkDAACcBwAgrgMAAFcAIAMgAACaBwAgqAMAAJsHACCuAwAAVwAgAAAABSAAAJUHACAhAACYBwAgqAMAAJYHACCpAwAAlwcAIK4DAABXACADIAAAlQcAIKgDAACWBwAgrgMAAFcAIAAAAAAABSAAAJAHACAhAACTBwAgqAMAAJEHACCpAwAAkgcAIK4DAABXACADIAAAkAcAIKgDAACRBwAgrgMAAFcAIAAAAAAABSAAAIsHACAhAACOBwAgqAMAAIwHACCpAwAAjQcAIK4DAABXACADIAAAiwcAIKgDAACMBwAgrgMAAFcAIAAAAAUgAACGBwAgIQAAiQcAIKgDAACHBwAgqQMAAIgHACCuAwAAVwAgAyAAAIYHACCoAwAAhwcAIK4DAABXACAAAAAAAAcgAACBBwAgIQAAhAcAIKgDAACCBwAgqQMAAIMHACCsAwAAAwAgrQMAAAMAIK4DAABXACADIAAAgQcAIKgDAACCBwAgrgMAAFcAIAAAAAAABSAAAPwGACAhAAD_BgAgqAMAAP0GACCpAwAA_gYAIK4DAABXACADIAAA_AYAIKgDAAD9BgAgrgMAAFcAIAAAAAAAAqsDAQAAAASxAwEAAAAFBSAAAPcGACAhAAD6BgAgqAMAAPgGACCpAwAA-QYAIK4DAABXACABqwMBAAAABAMgAAD3BgAgqAMAAPgGACCuAwAAVwAgAAAAByAAAMEGACAhAADEBgAgqAMAAMIGACCpAwAAwwYAIKwDAAAFACCtAwAABQAgrgMAAAEAIAcgAAC8BgAgIQAAvwYAIKgDAAC9BgAgqQMAAL4GACCsAwAABwAgrQMAAAcAIK4DAABvACAHIAAAtwYAICEAALoGACCoAwAAuAYAIKkDAAC5BgAgrAMAAAkAIK0DAAAJACCuAwAA-QEAIAcgAACyBgAgIQAAtQYAIKgDAACzBgAgqQMAALQGACCsAwAACwAgrQMAAAsAIK4DAACRAgAgByAAAK0GACAhAACwBgAgqAMAAK4GACCpAwAArwYAIKwDAAANACCtAwAADQAgrgMAAMsBACAHIAAAqAYAICEAAKsGACCoAwAAqQYAIKkDAACqBgAgrAMAAA8AIK0DAAAPACCuAwAAmgMAIAsgAACcBgAwIQAAoQYAMKgDAACdBgAwqQMAAJ4GADCqAwAAnwYAIKsDAACgBgAwrAMAAKAGADCtAwAAoAYAMK4DAACgBgAwrwMAAKIGADCwAwAAowYAMAsgAACQBgAwIQAAlQYAMKgDAACRBgAwqQMAAJIGADCqAwAAkwYAIKsDAACUBgAwrAMAAJQGADCtAwAAlAYAMK4DAACUBgAwrwMAAJYGADCwAwAAlwYAMAsgAACEBgAwIQAAiQYAMKgDAACFBgAwqQMAAIYGADCqAwAAhwYAIKsDAACIBgAwrAMAAIgGADCtAwAAiAYAMK4DAACIBgAwrwMAAIoGADCwAwAAiwYAMAsgAAD4BQAwIQAA_QUAMKgDAAD5BQAwqQMAAPoFADCqAwAA-wUAIKsDAAD8BQAwrAMAAPwFADCtAwAA_AUAMK4DAAD8BQAwrwMAAP4FADCwAwAA_wUAMAsgAADsBQAwIQAA8QUAMKgDAADtBQAwqQMAAO4FADCqAwAA7wUAIKsDAADwBQAwrAMAAPAFADCtAwAA8AUAMK4DAADwBQAwrwMAAPIFADCwAwAA8wUAMAsgAADgBQAwIQAA5QUAMKgDAADhBQAwqQMAAOIFADCqAwAA4wUAIKsDAADkBQAwrAMAAOQFADCtAwAA5AUAMK4DAADkBQAwrwMAAOYFADCwAwAA5wUAMAsgAADUBQAwIQAA2QUAMKgDAADVBQAwqQMAANYFADCqAwAA1wUAIKsDAADYBQAwrAMAANgFADCtAwAA2AUAMK4DAADYBQAwrwMAANoFADCwAwAA2wUAMAsgAADIBQAwIQAAzQUAMKgDAADJBQAwqQMAAMoFADCqAwAAywUAIKsDAADMBQAwrAMAAMwFADCtAwAAzAUAMK4DAADMBQAwrwMAAM4FADCwAwAAzwUAMAsgAAC8BQAwIQAAwQUAMKgDAAC9BQAwqQMAAL4FADCqAwAAvwUAIKsDAADABQAwrAMAAMAFADCtAwAAwAUAMK4DAADABQAwrwMAAMIFADCwAwAAwwUAMAm_AgEAAAAB7AJAAAAAAfwCgAAAAAGJAwIAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAECAAAAMwAgIAAAxwUAIAMAAAAzACAgAADHBQAgIQAAxgUAIAEZAAD2BgAwDgIAALQEACC8AgAAsgQAML0CAAAxABC-AgAAsgQAML8CAQAAAAHAAgEA_wMAIewCQAD9AwAh_AIAALMEACCJAwIAAAABigMBAPoDACGLAwEA_wMAIYwDAQD_AwAhjQMBAPoDACGOAwEA-gMAIQIAAAAzACAZAADGBQAgAgAAAMQFACAZAADFBQAgDbwCAADDBQAwvQIAAMQFABC-AgAAwwUAML8CAQD6AwAhwAIBAP8DACHsAkAA_QMAIfwCAACzBAAgiQMCAPwDACGKAwEA-gMAIYsDAQD_AwAhjAMBAP8DACGNAwEA-gMAIY4DAQD6AwAhDbwCAADDBQAwvQIAAMQFABC-AgAAwwUAML8CAQD6AwAhwAIBAP8DACHsAkAA_QMAIfwCAACzBAAgiQMCAPwDACGKAwEA-gMAIYsDAQD_AwAhjAMBAP8DACGNAwEA-gMAIY4DAQD6AwAhCb8CAQDGBAAh7AJAAMcEACH8AoAAAAABiQMCAMkEACGKAwEAxgQAIYsDAQDSBAAhjAMBANIEACGNAwEAxgQAIY4DAQDGBAAhCb8CAQDGBAAh7AJAAMcEACH8AoAAAAABiQMCAMkEACGKAwEAxgQAIYsDAQDSBAAhjAMBANIEACGNAwEAxgQAIY4DAQDGBAAhCb8CAQAAAAHsAkAAAAAB_AKAAAAAAYkDAgAAAAGKAwEAAAABiwMBAAAAAYwDAQAAAAGNAwEAAAABjgMBAAAAAQ2_AgEAAAABwQIBAAAAAcICAQAAAAHDAgEAAAABxAIBAAAAAcUCQAAAAAHGAoAAAAABxwICAAAAAcgCAgAAAAHJAgIAAAABygICAAAAAcsCQAAAAAHMAkAAAAABAgAAAC8AICAAANMFACADAAAALwAgIAAA0wUAICEAANIFACABGQAA9QYAMBICAACCBAAgvAIAALUEADC9AgAALQAQvgIAALUEADC_AgEAAAABwAIBAPoDACHBAgEA-gMAIcICAQD6AwAhwwIBAPoDACHEAgEA-gMAIcUCQAD9AwAhxgIAAPsDACDHAgIAtgQAIcgCAgD8AwAhyQICAPwDACHKAgIA_AMAIcsCQAD9AwAhzAJAAP0DACECAAAALwAgGQAA0gUAIAIAAADQBQAgGQAA0QUAIBG8AgAAzwUAML0CAADQBQAQvgIAAM8FADC_AgEA-gMAIcACAQD6AwAhwQIBAPoDACHCAgEA-gMAIcMCAQD6AwAhxAIBAPoDACHFAkAA_QMAIcYCAAD7AwAgxwICALYEACHIAgIA_AMAIckCAgD8AwAhygICAPwDACHLAkAA_QMAIcwCQAD9AwAhEbwCAADPBQAwvQIAANAFABC-AgAAzwUAML8CAQD6AwAhwAIBAPoDACHBAgEA-gMAIcICAQD6AwAhwwIBAPoDACHEAgEA-gMAIcUCQAD9AwAhxgIAAPsDACDHAgIAtgQAIcgCAgD8AwAhyQICAPwDACHKAgIA_AMAIcsCQAD9AwAhzAJAAP0DACENvwIBAMYEACHBAgEAxgQAIcICAQDGBAAhwwIBAMYEACHEAgEAxgQAIcUCQADHBAAhxgKAAAAAAccCAgDIBAAhyAICAMkEACHJAgIAyQQAIcoCAgDJBAAhywJAAMcEACHMAkAAxwQAIQ2_AgEAxgQAIcECAQDGBAAhwgIBAMYEACHDAgEAxgQAIcQCAQDGBAAhxQJAAMcEACHGAoAAAAABxwICAMgEACHIAgIAyQQAIckCAgDJBAAhygICAMkEACHLAkAAxwQAIcwCQADHBAAhDb8CAQAAAAHBAgEAAAABwgIBAAAAAcMCAQAAAAHEAgEAAAABxQJAAAAAAcYCgAAAAAHHAgIAAAAByAICAAAAAckCAgAAAAHKAgIAAAABywJAAAAAAcwCQAAAAAEIvwIBAAAAAcECAQAAAAHpAgEAAAAB6gIBAAAAAesCAQAAAAHsAkAAAAAB7QIgAAAAAe4CgAAAAAECAAAAKwAgIAAA3wUAIAMAAAArACAgAADfBQAgIQAA3gUAIAEZAAD0BgAwDQIAAIIEACC8AgAAtwQAML0CAAApABC-AgAAtwQAML8CAQAAAAHAAgEA-gMAIcECAQD6AwAh6QIBAPoDACHqAgEA-gMAIesCAQD6AwAh7AJAAP0DACHtAiAAiAQAIe4CAACzBAAgAgAAACsAIBkAAN4FACACAAAA3AUAIBkAAN0FACAMvAIAANsFADC9AgAA3AUAEL4CAADbBQAwvwIBAPoDACHAAgEA-gMAIcECAQD6AwAh6QIBAPoDACHqAgEA-gMAIesCAQD6AwAh7AJAAP0DACHtAiAAiAQAIe4CAACzBAAgDLwCAADbBQAwvQIAANwFABC-AgAA2wUAML8CAQD6AwAhwAIBAPoDACHBAgEA-gMAIekCAQD6AwAh6gIBAPoDACHrAgEA-gMAIewCQAD9AwAh7QIgAIgEACHuAgAAswQAIAi_AgEAxgQAIcECAQDGBAAh6QIBAMYEACHqAgEAxgQAIesCAQDGBAAh7AJAAMcEACHtAiAA3AQAIe4CgAAAAAEIvwIBAMYEACHBAgEAxgQAIekCAQDGBAAh6gIBAMYEACHrAgEAxgQAIewCQADHBAAh7QIgANwEACHuAoAAAAABCL8CAQAAAAHBAgEAAAAB6QIBAAAAAeoCAQAAAAHrAgEAAAAB7AJAAAAAAe0CIAAAAAHuAoAAAAABC78CAQAAAAHCAgEAAAABxAIBAAAAAcsCQAAAAAHvAgEAAAAB8AIIAAAAAfECQAAAAAHyAkAAAAAB8wICAAAAAfQCAgAAAAH1AgEAAAABAgAAACcAICAAAOsFACADAAAAJwAgIAAA6wUAICEAAOoFACABGQAA8wYAMBACAACCBAAgvAIAALgEADC9AgAAJQAQvgIAALgEADC_AgEAAAABwAIBAPoDACHCAgEA-gMAIcQCAQD6AwAhywJAAP0DACHvAgEA-gMAIfACCACZBAAh8QJAAP0DACHyAkAA_QMAIfMCAgC2BAAh9AICAPwDACH1AgEA_wMAIQIAAAAnACAZAADqBQAgAgAAAOgFACAZAADpBQAgD7wCAADnBQAwvQIAAOgFABC-AgAA5wUAML8CAQD6AwAhwAIBAPoDACHCAgEA-gMAIcQCAQD6AwAhywJAAP0DACHvAgEA-gMAIfACCACZBAAh8QJAAP0DACHyAkAA_QMAIfMCAgC2BAAh9AICAPwDACH1AgEA_wMAIQ-8AgAA5wUAML0CAADoBQAQvgIAAOcFADC_AgEA-gMAIcACAQD6AwAhwgIBAPoDACHEAgEA-gMAIcsCQAD9AwAh7wIBAPoDACHwAggAmQQAIfECQAD9AwAh8gJAAP0DACHzAgIAtgQAIfQCAgD8AwAh9QIBAP8DACELvwIBAMYEACHCAgEAxgQAIcQCAQDGBAAhywJAAMcEACHvAgEAxgQAIfACCADnBAAh8QJAAMcEACHyAkAAxwQAIfMCAgDIBAAh9AICAMkEACH1AgEA0gQAIQu_AgEAxgQAIcICAQDGBAAhxAIBAMYEACHLAkAAxwQAIe8CAQDGBAAh8AIIAOcEACHxAkAAxwQAIfICQADHBAAh8wICAMgEACH0AgIAyQQAIfUCAQDSBAAhC78CAQAAAAHCAgEAAAABxAIBAAAAAcsCQAAAAAHvAgEAAAAB8AIIAAAAAfECQAAAAAHyAkAAAAAB8wICAAAAAfQCAgAAAAH1AgEAAAABCb8CAQAAAAHCAgEAAAABywJAAAAAAe8CAQAAAAHwAggAAAAB9gJAAAAAAfcCQAAAAAH4AgEAAAAB-QIBAAAAAQIAAAAjACAgAAD3BQAgAwAAACMAICAAAPcFACAhAAD2BQAgARkAAPIGADAOAgAAggQAILwCAAC5BAAwvQIAACEAEL4CAAC5BAAwvwIBAAAAAcACAQD6AwAhwgIBAPoDACHLAkAA_QMAIe8CAQD6AwAh8AIIAJkEACH2AkAA_QMAIfcCQAD-AwAh-AIBAP8DACH5AgEA_wMAIQIAAAAjACAZAAD2BQAgAgAAAPQFACAZAAD1BQAgDbwCAADzBQAwvQIAAPQFABC-AgAA8wUAML8CAQD6AwAhwAIBAPoDACHCAgEA-gMAIcsCQAD9AwAh7wIBAPoDACHwAggAmQQAIfYCQAD9AwAh9wJAAP4DACH4AgEA_wMAIfkCAQD_AwAhDbwCAADzBQAwvQIAAPQFABC-AgAA8wUAML8CAQD6AwAhwAIBAPoDACHCAgEA-gMAIcsCQAD9AwAh7wIBAPoDACHwAggAmQQAIfYCQAD9AwAh9wJAAP4DACH4AgEA_wMAIfkCAQD_AwAhCb8CAQDGBAAhwgIBAMYEACHLAkAAxwQAIe8CAQDGBAAh8AIIAOcEACH2AkAAxwQAIfcCQADRBAAh-AIBANIEACH5AgEA0gQAIQm_AgEAxgQAIcICAQDGBAAhywJAAMcEACHvAgEAxgQAIfACCADnBAAh9gJAAMcEACH3AkAA0QQAIfgCAQDSBAAh-QIBANIEACEJvwIBAAAAAcICAQAAAAHLAkAAAAAB7wIBAAAAAfACCAAAAAH2AkAAAAAB9wJAAAAAAfgCAQAAAAH5AgEAAAABBr8CAQAAAAHsAkAAAAAB-gIBAAAAAfsCAQAAAAH8AoAAAAAB_QIgAAAAAQIAAAAfACAgAACDBgAgAwAAAB8AICAAAIMGACAhAACCBgAgARkAAPEGADALAgAAggQAILwCAAC6BAAwvQIAAB0AEL4CAAC6BAAwvwIBAAAAAcACAQD6AwAh7AJAAP0DACH6AgEA-gMAIfsCAQD6AwAh_AIAAPsDACD9AiAAiAQAIQIAAAAfACAZAACCBgAgAgAAAIAGACAZAACBBgAgCrwCAAD_BQAwvQIAAIAGABC-AgAA_wUAML8CAQD6AwAhwAIBAPoDACHsAkAA_QMAIfoCAQD6AwAh-wIBAPoDACH8AgAA-wMAIP0CIACIBAAhCrwCAAD_BQAwvQIAAIAGABC-AgAA_wUAML8CAQD6AwAhwAIBAPoDACHsAkAA_QMAIfoCAQD6AwAh-wIBAPoDACH8AgAA-wMAIP0CIACIBAAhBr8CAQDGBAAh7AJAAMcEACH6AgEAxgQAIfsCAQDGBAAh_AKAAAAAAf0CIADcBAAhBr8CAQDGBAAh7AJAAMcEACH6AgEAxgQAIfsCAQDGBAAh_AKAAAAAAf0CIADcBAAhBr8CAQAAAAHsAkAAAAAB-gIBAAAAAfsCAQAAAAH8AoAAAAAB_QIgAAAAAQS_AgEAAAAB7AJAAAAAAfACCAAAAAGCAwEAAAABAgAAABsAICAAAI8GACADAAAAGwAgIAAAjwYAICEAAI4GACABGQAA8AYAMAkCAACCBAAgvAIAALsEADC9AgAAGQAQvgIAALsEADC_AgEAAAABwAIBAPoDACHsAkAA_QMAIfACCACZBAAhggMBAPoDACECAAAAGwAgGQAAjgYAIAIAAACMBgAgGQAAjQYAIAi8AgAAiwYAML0CAACMBgAQvgIAAIsGADC_AgEA-gMAIcACAQD6AwAh7AJAAP0DACHwAggAmQQAIYIDAQD6AwAhCLwCAACLBgAwvQIAAIwGABC-AgAAiwYAML8CAQD6AwAhwAIBAPoDACHsAkAA_QMAIfACCACZBAAhggMBAPoDACEEvwIBAMYEACHsAkAAxwQAIfACCADnBAAhggMBAMYEACEEvwIBAMYEACHsAkAAxwQAIfACCADnBAAhggMBAMYEACEEvwIBAAAAAewCQAAAAAHwAggAAAABggMBAAAAAQa_AgEAAAAB7AJAAAAAAYIDAQAAAAGGA4AAAAABhwMBAAAAAYgDIAAAAAECAAAAFwAgIAAAmwYAIAMAAAAXACAgAACbBgAgIQAAmgYAIAEZAADvBgAwCwIAAIIEACC8AgAAvAQAML0CAAAVABC-AgAAvAQAML8CAQAAAAHAAgEA-gMAIewCQAD9AwAhggMBAPoDACGGAwAA-wMAIIcDAQD6AwAhiAMgAIgEACECAAAAFwAgGQAAmgYAIAIAAACYBgAgGQAAmQYAIAq8AgAAlwYAML0CAACYBgAQvgIAAJcGADC_AgEA-gMAIcACAQD6AwAh7AJAAP0DACGCAwEA-gMAIYYDAAD7AwAghwMBAPoDACGIAyAAiAQAIQq8AgAAlwYAML0CAACYBgAQvgIAAJcGADC_AgEA-gMAIcACAQD6AwAh7AJAAP0DACGCAwEA-gMAIYYDAAD7AwAghwMBAPoDACGIAyAAiAQAIQa_AgEAxgQAIewCQADHBAAhggMBAMYEACGGA4AAAAABhwMBAMYEACGIAyAA3AQAIQa_AgEAxgQAIewCQADHBAAhggMBAMYEACGGA4AAAAABhwMBAMYEACGIAyAA3AQAIQa_AgEAAAAB7AJAAAAAAYIDAQAAAAGGA4AAAAABhwMBAAAAAYgDIAAAAAEHvwIBAAAAAY8DAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAQIAAAATACAgAACnBgAgAwAAABMAICAAAKcGACAhAACmBgAgARkAAO4GADANAgAAggQAILwCAAC-BAAwvQIAABEAEL4CAAC-BAAwvwIBAAAAAcACAQD6AwAhjwMCAPwDACGQAwEA-gMAIZEDAQD6AwAhkgMBAPoDACGTAwEA-gMAIZQDAQD6AwAhpQMAAL0EACACAAAAEwAgGQAApgYAIAIAAACkBgAgGQAApQYAIAu8AgAAowYAML0CAACkBgAQvgIAAKMGADC_AgEA-gMAIcACAQD6AwAhjwMCAPwDACGQAwEA-gMAIZEDAQD6AwAhkgMBAPoDACGTAwEA-gMAIZQDAQD6AwAhC7wCAACjBgAwvQIAAKQGABC-AgAAowYAML8CAQD6AwAhwAIBAPoDACGPAwIA_AMAIZADAQD6AwAhkQMBAPoDACGSAwEA-gMAIZMDAQD6AwAhlAMBAPoDACEHvwIBAMYEACGPAwIAyQQAIZADAQDGBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACEHvwIBAMYEACGPAwIAyQQAIZADAQDGBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACEHvwIBAAAAAY8DAgAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAQLMAkAAAAAB5AIBAAAAAQIAAACaAwAgIAAAqAYAIAMAAAAPACAgAACoBgAgIQAArAYAIAQAAAAPACAZAACsBgAgzAJAAMcEACHkAgEAxgQAIQLMAkAAxwQAIeQCAQDGBAAhA4MDCAAAAAGEAwgAAAABhQMgAAAAAQIAAADLAQAgIAAArQYAIAMAAAANACAgAACtBgAgIQAAsQYAIAUAAAANACAZAACxBgAggwMIAOcEACGEAwgA5wQAIYUDIADcBAAhA4MDCADnBAAhhAMIAOcEACGFAyAA3AQAIQLMAkAAAAAB_gIBAAAAAQIAAACRAgAgIAAAsgYAIAMAAAALACAgAACyBgAgIQAAtgYAIAQAAAALACAZAAC2BgAgzAJAAMcEACH-AgEAxgQAIQLMAkAAxwQAIf4CAQDGBAAhBMwCQAAAAAH_AgEAAAABgAMBAAAAAYEDgAAAAAECAAAA-QEAICAAALcGACADAAAACQAgIAAAtwYAICEAALsGACAGAAAACQAgGQAAuwYAIMwCQADHBAAh_wIBAMYEACGAAwEA0gQAIYEDgAAAAAEEzAJAAMcEACH_AgEAxgQAIYADAQDSBAAhgQOAAAAAAQfLAkAAAAABkAMBAAAAAZUDAQAAAAGWAwIAAAABlwMCAAAAAZgDAACoBQAgmQNAAAAAAQIAAABvACAgAAC8BgAgAwAAAAcAICAAALwGACAhAADABgAgCQAAAAcAIBkAAMAGACDLAkAAxwQAIZADAQDSBAAhlQMBAMYEACGWAwIAyQQAIZcDAgDJBAAhmAMAAKYFACCZA0AA0QQAIQfLAkAAxwQAIZADAQDSBAAhlQMBAMYEACGWAwIAyQQAIZcDAgDJBAAhmAMAAKYFACCZA0AA0QQAIQPLAkAAAAABowMBAAAAAaQDAQAAAAECAAAAAQAgIAAAwQYAIAMAAAAFACAgAADBBgAgIQAAxQYAIAUAAAAFACAZAADFBgAgywJAAMcEACGjAwEAxgQAIaQDAQDGBAAhA8sCQADHBAAhowMBAMYEACGkAwEAxgQAIQMgAADBBgAgqAMAAMIGACCuAwAAAQAgAyAAALwGACCoAwAAvQYAIK4DAABvACADIAAAtwYAIKgDAAC4BgAgrgMAAPkBACADIAAAsgYAIKgDAACzBgAgrgMAAJECACADIAAArQYAIKgDAACuBgAgrgMAAMsBACADIAAAqAYAIKgDAACpBgAgrgMAAJoDACAEIAAAnAYAMKgDAACdBgAwqgMAAJ8GACCuAwAAoAYAMAQgAACQBgAwqAMAAJEGADCqAwAAkwYAIK4DAACUBgAwBCAAAIQGADCoAwAAhQYAMKoDAACHBgAgrgMAAIgGADAEIAAA-AUAMKgDAAD5BQAwqgMAAPsFACCuAwAA_AUAMAQgAADsBQAwqAMAAO0FADCqAwAA7wUAIK4DAADwBQAwBCAAAOAFADCoAwAA4QUAMKoDAADjBQAgrgMAAOQFADAEIAAA1AUAMKgDAADVBQAwqgMAANcFACCuAwAA2AUAMAQgAADIBQAwqAMAAMkFADCqAwAAywUAIK4DAADMBQAwBCAAALwFADCoAwAAvQUAMKoDAAC_BQAgrgMAAMAFADABAgAA2AQAIAMCAADYBAAgkAMAAMAEACCZAwAAwAQAIAICAADYBAAggAMAAMAEACABAgAA2AQAIAECAADYBAAgAQIAANgEACAAAAAAAAAAAAAAAAAHIAAA6QYAICEAAOwGACCoAwAA6gYAIKkDAADrBgAgrAMAAAMAIK0DAAADACCuAwAAVwAgAyAAAOkGACCoAwAA6gYAIK4DAABXACAYAwAAxwYAIAQAAMgGACAFAADJBgAgBgAAygYAIAcAAMsGACAKAADMBgAgCwAAzQYAIAwAAM4GACANAADPBgAgDgAA0AYAIA8AANEGACAQAADSBgAgEQAA0wYAIBIAANQGACC_AgEAAAABywJAAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABnQMBAAAAAZ4DIAAAAAGfA0AAAAABAgAAAFcAICAAAOkGACADAAAAAwAgIAAA6QYAICEAAO0GACAaAAAAAwAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACAZAADtBgAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIQe_AgEAAAABjwMCAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABBr8CAQAAAAHsAkAAAAABggMBAAAAAYYDgAAAAAGHAwEAAAABiAMgAAAAAQS_AgEAAAAB7AJAAAAAAfACCAAAAAGCAwEAAAABBr8CAQAAAAHsAkAAAAAB-gIBAAAAAfsCAQAAAAH8AoAAAAAB_QIgAAAAAQm_AgEAAAABwgIBAAAAAcsCQAAAAAHvAgEAAAAB8AIIAAAAAfYCQAAAAAH3AkAAAAAB-AIBAAAAAfkCAQAAAAELvwIBAAAAAcICAQAAAAHEAgEAAAABywJAAAAAAe8CAQAAAAHwAggAAAAB8QJAAAAAAfICQAAAAAHzAgIAAAAB9AICAAAAAfUCAQAAAAEIvwIBAAAAAcECAQAAAAHpAgEAAAAB6gIBAAAAAesCAQAAAAHsAkAAAAAB7QIgAAAAAe4CgAAAAAENvwIBAAAAAcECAQAAAAHCAgEAAAABwwIBAAAAAcQCAQAAAAHFAkAAAAABxgKAAAAAAccCAgAAAAHIAgIAAAAByQICAAAAAcoCAgAAAAHLAkAAAAABzAJAAAAAAQm_AgEAAAAB7AJAAAAAAfwCgAAAAAGJAwIAAAABigMBAAAAAYsDAQAAAAGMAwEAAAABjQMBAAAAAY4DAQAAAAEYAQAAxgYAIAQAAMgGACAFAADJBgAgBgAAygYAIAcAAMsGACAKAADMBgAgCwAAzQYAIAwAAM4GACANAADPBgAgDgAA0AYAIA8AANEGACAQAADSBgAgEQAA0wYAIBIAANQGACC_AgEAAAABywJAAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABnQMBAAAAAZ4DIAAAAAGfA0AAAAABAgAAAFcAICAAAPcGACADAAAAAwAgIAAA9wYAICEAAPsGACAaAAAAAwAgAQAArQUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACAZAAD7BgAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAArQUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAADGBgAgAwAAxwYAIAQAAMgGACAFAADJBgAgBgAAygYAIAcAAMsGACALAADNBgAgDAAAzgYAIA0AAM8GACAOAADQBgAgDwAA0QYAIBAAANIGACARAADTBgAgEgAA1AYAIL8CAQAAAAHLAkAAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGdAwEAAAABngMgAAAAAZ8DQAAAAAECAAAAVwAgIAAA_AYAIAMAAAADACAgAAD8BgAgIQAAgAcAIBoAAAADACABAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgEgAAuwUAIBkAAIAHACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgEgAAuwUAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAMYGACADAADHBgAgBAAAyAYAIAUAAMkGACAGAADKBgAgBwAAywYAIAoAAMwGACALAADNBgAgDAAAzgYAIA0AAM8GACAOAADQBgAgDwAA0QYAIBAAANIGACARAADTBgAgvwIBAAAAAcsCQAAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZ0DAQAAAAGeAyAAAAABnwNAAAAAAQIAAABXACAgAACBBwAgAwAAAAMAICAAAIEHACAhAACFBwAgGgAAAAMAIAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgGQAAhQcAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAAxgYAIAMAAMcGACAEAADIBgAgBQAAyQYAIAYAAMoGACAHAADLBgAgCgAAzAYAIAwAAM4GACANAADPBgAgDgAA0AYAIA8AANEGACAQAADSBgAgEQAA0wYAIBIAANQGACC_AgEAAAABywJAAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABnQMBAAAAAZ4DIAAAAAGfA0AAAAABAgAAAFcAICAAAIYHACADAAAAAwAgIAAAhgcAICEAAIoHACAaAAAAAwAgAQAArQUAIAMAAK4FACAEAACvBQAgBQAAsAUAIAYAALEFACAHAACyBQAgCgAAswUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACAZAACKBwAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAArQUAIAMAAK4FACAEAACvBQAgBQAAsAUAIAYAALEFACAHAACyBQAgCgAAswUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAADGBgAgAwAAxwYAIAQAAMgGACAFAADJBgAgBwAAywYAIAoAAMwGACALAADNBgAgDAAAzgYAIA0AAM8GACAOAADQBgAgDwAA0QYAIBAAANIGACARAADTBgAgEgAA1AYAIL8CAQAAAAHLAkAAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGdAwEAAAABngMgAAAAAZ8DQAAAAAECAAAAVwAgIAAAiwcAIAMAAAADACAgAACLBwAgIQAAjwcAIBoAAAADACABAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgEgAAuwUAIBkAAI8HACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgEgAAuwUAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAMYGACADAADHBgAgBAAAyAYAIAUAAMkGACAGAADKBgAgBwAAywYAIAoAAMwGACALAADNBgAgDQAAzwYAIA4AANAGACAPAADRBgAgEAAA0gYAIBEAANMGACASAADUBgAgvwIBAAAAAcsCQAAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZ0DAQAAAAGeAyAAAAABnwNAAAAAAQIAAABXACAgAACQBwAgAwAAAAMAICAAAJAHACAhAACUBwAgGgAAAAMAIAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDQAAtgUAIA4AALcFACAPAAC4BQAgEAAAuQUAIBEAALoFACASAAC7BQAgGQAAlAcAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDQAAtgUAIA4AALcFACAPAAC4BQAgEAAAuQUAIBEAALoFACASAAC7BQAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAAxgYAIAMAAMcGACAFAADJBgAgBgAAygYAIAcAAMsGACAKAADMBgAgCwAAzQYAIAwAAM4GACANAADPBgAgDgAA0AYAIA8AANEGACAQAADSBgAgEQAA0wYAIBIAANQGACC_AgEAAAABywJAAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABnQMBAAAAAZ4DIAAAAAGfA0AAAAABAgAAAFcAICAAAJUHACADAAAAAwAgIAAAlQcAICEAAJkHACAaAAAAAwAgAQAArQUAIAMAAK4FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACAZAACZBwAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAArQUAIAMAAK4FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAADGBgAgAwAAxwYAIAQAAMgGACAGAADKBgAgBwAAywYAIAoAAMwGACALAADNBgAgDAAAzgYAIA0AAM8GACAOAADQBgAgDwAA0QYAIBAAANIGACARAADTBgAgEgAA1AYAIL8CAQAAAAHLAkAAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGdAwEAAAABngMgAAAAAZ8DQAAAAAECAAAAVwAgIAAAmgcAIAMAAAADACAgAACaBwAgIQAAngcAIBoAAAADACABAACtBQAgAwAArgUAIAQAAK8FACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgEgAAuwUAIBkAAJ4HACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAACtBQAgAwAArgUAIAQAAK8FACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBAAALkFACARAAC6BQAgEgAAuwUAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAMYGACADAADHBgAgBAAAyAYAIAUAAMkGACAGAADKBgAgBwAAywYAIAoAAMwGACALAADNBgAgDAAAzgYAIA4AANAGACAPAADRBgAgEAAA0gYAIBEAANMGACASAADUBgAgvwIBAAAAAcsCQAAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZ0DAQAAAAGeAyAAAAABnwNAAAAAAQIAAABXACAgAACfBwAgAwAAAAMAICAAAJ8HACAhAACjBwAgGgAAAAMAIAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA4AALcFACAPAAC4BQAgEAAAuQUAIBEAALoFACASAAC7BQAgGQAAowcAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA4AALcFACAPAAC4BQAgEAAAuQUAIBEAALoFACASAAC7BQAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAAxgYAIAMAAMcGACAEAADIBgAgBQAAyQYAIAYAAMoGACAHAADLBgAgCgAAzAYAIAsAAM0GACAMAADOBgAgDQAAzwYAIA8AANEGACAQAADSBgAgEQAA0wYAIBIAANQGACC_AgEAAAABywJAAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABnQMBAAAAAZ4DIAAAAAGfA0AAAAABAgAAAFcAICAAAKQHACADAAAAAwAgIAAApAcAICEAAKgHACAaAAAAAwAgAQAArQUAIAMAAK4FACAEAACvBQAgBQAAsAUAIAYAALEFACAHAACyBQAgCgAAswUAIAsAALQFACAMAAC1BQAgDQAAtgUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACAZAACoBwAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAArQUAIAMAAK4FACAEAACvBQAgBQAAsAUAIAYAALEFACAHAACyBQAgCgAAswUAIAsAALQFACAMAAC1BQAgDQAAtgUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAADGBgAgAwAAxwYAIAQAAMgGACAFAADJBgAgBgAAygYAIAcAAMsGACAKAADMBgAgCwAAzQYAIAwAAM4GACANAADPBgAgDgAA0AYAIBAAANIGACARAADTBgAgEgAA1AYAIL8CAQAAAAHLAkAAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGdAwEAAAABngMgAAAAAZ8DQAAAAAECAAAAVwAgIAAAqQcAIAMAAAADACAgAACpBwAgIQAArQcAIBoAAAADACABAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIBAAALkFACARAAC6BQAgEgAAuwUAIBkAAK0HACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIBAAALkFACARAAC6BQAgEgAAuwUAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAMYGACADAADHBgAgBAAAyAYAIAUAAMkGACAGAADKBgAgBwAAywYAIAoAAMwGACALAADNBgAgDAAAzgYAIA0AAM8GACAOAADQBgAgDwAA0QYAIBEAANMGACASAADUBgAgvwIBAAAAAcsCQAAAAAGQAwEAAAABkQMBAAAAAZIDAQAAAAGTAwEAAAABlAMBAAAAAZ0DAQAAAAGeAyAAAAABnwNAAAAAAQIAAABXACAgAACuBwAgAwAAAAMAICAAAK4HACAhAACyBwAgGgAAAAMAIAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBEAALoFACASAAC7BQAgGQAAsgcAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhGAEAAK0FACADAACuBQAgBAAArwUAIAUAALAFACAGAACxBQAgBwAAsgUAIAoAALMFACALAAC0BQAgDAAAtQUAIA0AALYFACAOAAC3BQAgDwAAuAUAIBEAALoFACASAAC7BQAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAAxgYAIAMAAMcGACAEAADIBgAgBQAAyQYAIAYAAMoGACAKAADMBgAgCwAAzQYAIAwAAM4GACANAADPBgAgDgAA0AYAIA8AANEGACAQAADSBgAgEQAA0wYAIBIAANQGACC_AgEAAAABywJAAAAAAZADAQAAAAGRAwEAAAABkgMBAAAAAZMDAQAAAAGUAwEAAAABnQMBAAAAAZ4DIAAAAAGfA0AAAAABAgAAAFcAICAAALMHACADAAAAAwAgIAAAswcAICEAALcHACAaAAAAAwAgAQAArQUAIAMAAK4FACAEAACvBQAgBQAAsAUAIAYAALEFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACAZAAC3BwAgvwIBAMYEACHLAkAAxwQAIZADAQDSBAAhkQMBAMYEACGSAwEAxgQAIZMDAQDGBAAhlAMBAMYEACGdAwEAxgQAIZ4DIADcBAAhnwNAANEEACEYAQAArQUAIAMAAK4FACAEAACvBQAgBQAAsAUAIAYAALEFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEQAAugUAIBIAALsFACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAADGBgAgAwAAxwYAIAQAAMgGACAFAADJBgAgBgAAygYAIAcAAMsGACAKAADMBgAgCwAAzQYAIAwAAM4GACANAADPBgAgDgAA0AYAIA8AANEGACAQAADSBgAgEgAA1AYAIL8CAQAAAAHLAkAAAAABkAMBAAAAAZEDAQAAAAGSAwEAAAABkwMBAAAAAZQDAQAAAAGdAwEAAAABngMgAAAAAZ8DQAAAAAECAAAAVwAgIAAAuAcAIAMAAAADACAgAAC4BwAgIQAAvAcAIBoAAAADACABAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEgAAuwUAIBkAALwHACC_AgEAxgQAIcsCQADHBAAhkAMBANIEACGRAwEAxgQAIZIDAQDGBAAhkwMBAMYEACGUAwEAxgQAIZ0DAQDGBAAhngMgANwEACGfA0AA0QQAIRgBAACtBQAgAwAArgUAIAQAAK8FACAFAACwBQAgBgAAsQUAIAcAALIFACAKAACzBQAgCwAAtAUAIAwAALUFACANAAC2BQAgDgAAtwUAIA8AALgFACAQAAC5BQAgEgAAuwUAIL8CAQDGBAAhywJAAMcEACGQAwEA0gQAIZEDAQDGBAAhkgMBAMYEACGTAwEAxgQAIZQDAQDGBAAhnQMBAMYEACGeAyAA3AQAIZ8DQADRBAAhAQIEAhABBgEDCAMECgQFDAUGDgYHEAcKFAgLGAkMHAoNIAsOJAwPKA0QLA4RMA8SNBATABEBAgACAQIAAgECAAIBAgACAQIAAgECAAIBAgACAQIAAgECAAIBAgACAQIAAgECAAIBAgACAQI1AgkKNgALNwAMOAANOQAOOgAPOwAQPAARPQASPgAAAQJJAgECTwIDEwAWJgAXJwAYAAAAAxMAFiYAFycAGAAAAxMAHSYAHicAHwAAAAMTAB0mAB4nAB8BAgACAQIAAgUTACQmACcnAChIACVJACYAAAAAAAUTACQmACcnAChIACVJACYBAgACAQIAAgUTAC0mADAnADFIAC5JAC8AAAAAAAUTAC0mADAnADFIAC5JAC8BAqcBAgECrQECBRMANiYAOScAOkgAN0kAOAAAAAAABRMANiYAOScAOkgAN0kAOAECAAIBAgACAxMAPyYAQCcAQQAAAAMTAD8mAEAnAEEBAgACAQIAAgUTAEYmAEknAEpIAEdJAEgAAAAAAAUTAEYmAEknAEpIAEdJAEgBAgACAQIAAgUTAE8mAFInAFNIAFBJAFEAAAAAAAUTAE8mAFInAFNIAFBJAFEBAgACAQIAAgMTAFgmAFknAFoAAAADEwBYJgBZJwBaAQIAAgECAAIDEwBfJgBgJwBhAAAAAxMAXyYAYCcAYQECAAIBAgACAxMAZiYAZycAaAAAAAMTAGYmAGcnAGgBAgACAQIAAgUTAG0mAHAnAHFIAG5JAG8AAAAAAAUTAG0mAHAnAHFIAG5JAG8BAgACAQIAAgUTAHYmAHknAHpIAHdJAHgAAAAAAAUTAHYmAHknAHpIAHdJAHgBAgACAQIAAgMTAH8mAIABJwCBAQAAAAMTAH8mAIABJwCBAQAAAAMTAIcBJgCIAScAiQEAAAADEwCHASYAiAEnAIkBAQIAAgECAAIDEwCOASYAjwEnAJABAAAAAxMAjgEmAI8BJwCQAQAAAAUTAJYBJgCZAScAmgFIAJcBSQCYAQAAAAAABRMAlgEmAJkBJwCaAUgAlwFJAJgBAQIAAgECAAIFEwCfASYAogEnAKMBSACgAUkAoQEAAAAAAAUTAJ8BJgCiAScAowFIAKABSQChARQCARU_ARZBARdCARhDARpFARtHEhxIEx1LAR5NEh9OFCJQASNRASRSEihVFSlWGSpYAitZAixbAi1cAi5dAi9fAjBhEjFiGjJkAjNmEjRnGzVoAjZpAjdqEjhtHDluIDpwAztxAzxzAz10Az51Az93A0B5EkF6IUJ8A0N-EkR_IkWAAQNGgQEDR4IBEkqFASNLhgEpTIcBCE2IAQhOiQEIT4oBCFCLAQhRjQEIUo8BElOQASpUkgEIVZQBElaVAStXlgEIWJcBCFmYARJamwEsW5wBMlydARBdngEQXp8BEF-gARBgoQEQYaMBEGKlARJjpgEzZKkBEGWrARJmrAE0Z64BEGivARBpsAESarMBNWu0ATtstQEJbbYBCW63AQlvuAEJcLkBCXG7AQlyvQESc74BPHTAAQl1wgESdsMBPXfEAQl4xQEJecYBEnrJAT57ygFCfMwBBn3NAQZ-zwEGf9ABBoAB0QEGgQHTAQaCAdUBEoMB1gFDhAHYAQaFAdoBEoYB2wFEhwHcAQaIAd0BBokB3gESigHhAUWLAeIBS4wB4wEKjQHkAQqOAeUBCo8B5gEKkAHnAQqRAekBCpIB6wESkwHsAUyUAe4BCpUB8AESlgHxAU2XAfIBCpgB8wEKmQH0ARKaAfcBTpsB-AFUnAH6AQSdAfsBBJ4B_QEEnwH-AQSgAf8BBKEBgQIEogGDAhKjAYQCVaQBhgIEpQGIAhKmAYkCVqcBigIEqAGLAgSpAYwCEqoBjwJXqwGQAlusAZICBa0BkwIFrgGVAgWvAZYCBbABlwIFsQGZAgWyAZsCErMBnAJctAGeAgW1AaACErYBoQJdtwGiAgW4AaMCBbkBpAISugGnAl67AagCYrwBqQILvQGqAgu-AasCC78BrAILwAGtAgvBAa8CC8IBsQISwwGyAmPEAbQCC8UBtgISxgG3AmTHAbgCC8gBuQILyQG6AhLKAb0CZcsBvgJpzAG_AgzNAcACDM4BwQIMzwHCAgzQAcMCDNEBxQIM0gHHAhLTAcgCatQBygIM1QHMAhLWAc0Ca9cBzgIM2AHPAgzZAdACEtoB0wJs2wHUAnLcAdUCDd0B1gIN3gHXAg3fAdgCDeAB2QIN4QHbAg3iAd0CEuMB3gJz5AHgAg3lAeICEuYB4wJ05wHkAg3oAeUCDekB5gIS6gHpAnXrAeoCe-wB6wIO7QHsAg7uAe0CDu8B7gIO8AHvAg7xAfECDvIB8wIS8wH0Anz0AfYCDvUB-AIS9gH5An33AfoCDvgB-wIO-QH8AhL6Af8CfvsBgAOCAfwBggODAf0BgwODAf4BhgODAf8BhwODAYACiAODAYECigODAYICjAMSgwKNA4QBhAKPA4MBhQKRAxKGApIDhQGHApMDgwGIApQDgwGJApUDEooCmAOGAYsCmQOKAYwCmwMHjQKcAweOAp4DB48CnwMHkAKgAweRAqIDB5ICpAMSkwKlA4sBlAKnAweVAqkDEpYCqgOMAZcCqwMHmAKsAweZAq0DEpoCsAONAZsCsQORAZwCswOSAZ0CtAOSAZ4CtwOSAZ8CuAOSAaACuQOSAaECuwOSAaICvQMSowK-A5MBpALAA5IBpQLCAxKmAsMDlAGnAsQDkgGoAsUDkgGpAsYDEqoCyQOVAasCygObAawCywMPrQLMAw-uAs0DD68CzgMPsALPAw-xAtEDD7IC0wMSswLUA5wBtALWAw-1AtgDErYC2QOdAbcC2gMPuALbAw-5AtwDEroC3wOeAbsC4AOkAQ\"\n}\n\nasync function decodeBase64AsWasm(wasmBase64: string): Promise<WebAssembly.Module> {\n const { Buffer } = await import('node:buffer')\n const wasmArray = Buffer.from(wasmBase64, 'base64')\n return new WebAssembly.Module(wasmArray)\n}\n\nconfig.compilerWasm = {\n getRuntime: async () => await import(\"@prisma/client/runtime/query_compiler_fast_bg.postgresql.mjs\"),\n\n getQueryCompilerWasmModule: async () => {\n const { wasm } = await import(\"@prisma/client/runtime/query_compiler_fast_bg.postgresql.wasm-base64.mjs\")\n return await decodeBase64AsWasm(wasm)\n },\n\n importName: \"./query_compiler_fast_bg.js\"\n}\n\n\n\nexport type LogOptions<ClientOptions extends Prisma.PrismaClientOptions> =\n 'log' extends keyof ClientOptions ? ClientOptions['log'] extends Array<Prisma.LogLevel | Prisma.LogDefinition> ? Prisma.GetEvents<ClientOptions['log']> : never : never\n\nexport interface PrismaClientConstructor {\n /**\n * ## Prisma Client\n * \n * Type-safe database client for TypeScript\n * @example\n * ```\n * const prisma = new PrismaClient({\n * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL })\n * })\n * // Fetch zero or more UserWallets\n * const userWallets = await prisma.userWallet.findMany()\n * ```\n * \n * Read more in our [docs](https://pris.ly/d/client).\n */\n\n new <\n Options extends Prisma.PrismaClientOptions = Prisma.PrismaClientOptions,\n LogOpts extends LogOptions<Options> = LogOptions<Options>,\n OmitOpts extends Prisma.PrismaClientOptions['omit'] = Options extends { omit: infer U } ? U : Prisma.PrismaClientOptions['omit'],\n ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs\n >(options: Prisma.Subset<Options, Prisma.PrismaClientOptions> ): PrismaClient<LogOpts, OmitOpts, ExtArgs>\n}\n\n/**\n * ## Prisma Client\n * \n * Type-safe database client for TypeScript\n * @example\n * ```\n * const prisma = new PrismaClient({\n * adapter: new PrismaPg({ connectionString: process.env.DATABASE_URL })\n * })\n * // Fetch zero or more UserWallets\n * const userWallets = await prisma.userWallet.findMany()\n * ```\n * \n * Read more in our [docs](https://pris.ly/d/client).\n */\n\nexport interface PrismaClient<\n in LogOpts extends Prisma.LogLevel = never,\n in out OmitOpts extends Prisma.PrismaClientOptions['omit'] = undefined,\n in out ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs\n> {\n [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['other'] }\n\n $on<V extends LogOpts>(eventType: V, callback: (event: V extends 'query' ? Prisma.QueryEvent : Prisma.LogEvent) => void): PrismaClient;\n\n /**\n * Connect with the database\n */\n $connect(): runtime.Types.Utils.JsPromise<void>;\n\n /**\n * Disconnect from the database\n */\n $disconnect(): runtime.Types.Utils.JsPromise<void>;\n\n/**\n * Executes a prepared raw query and returns the number of affected rows.\n * @example\n * ```\n * const result = await prisma.$executeRaw`UPDATE User SET cool = ${true} WHERE email = ${'user@email.com'};`\n * ```\n *\n * Read more in our [docs](https://pris.ly/d/raw-queries).\n */\n $executeRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<number>;\n\n /**\n * Executes a raw query and returns the number of affected rows.\n * Susceptible to SQL injections, see documentation.\n * @example\n * ```\n * const result = await prisma.$executeRawUnsafe('UPDATE User SET cool = $1 WHERE email = $2 ;', true, 'user@email.com')\n * ```\n *\n * Read more in our [docs](https://pris.ly/d/raw-queries).\n */\n $executeRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<number>;\n\n /**\n * Performs a prepared raw query and returns the `SELECT` data.\n * @example\n * ```\n * const result = await prisma.$queryRaw`SELECT * FROM User WHERE id = ${1} OR email = ${'user@email.com'};`\n * ```\n *\n * Read more in our [docs](https://pris.ly/d/raw-queries).\n */\n $queryRaw<T = unknown>(query: TemplateStringsArray | Prisma.Sql, ...values: any[]): Prisma.PrismaPromise<T>;\n\n /**\n * Performs a raw query and returns the `SELECT` data.\n * Susceptible to SQL injections, see documentation.\n * @example\n * ```\n * const result = await prisma.$queryRawUnsafe('SELECT * FROM User WHERE id = $1 OR email = $2;', 1, 'user@email.com')\n * ```\n *\n * Read more in our [docs](https://pris.ly/d/raw-queries).\n */\n $queryRawUnsafe<T = unknown>(query: string, ...values: any[]): Prisma.PrismaPromise<T>;\n\n\n /**\n * Allows the running of a sequence of read/write operations that are guaranteed to either succeed or fail as a whole.\n * @example\n * ```\n * const [george, bob, alice] = await prisma.$transaction([\n * prisma.user.create({ data: { name: 'George' } }),\n * prisma.user.create({ data: { name: 'Bob' } }),\n * prisma.user.create({ data: { name: 'Alice' } }),\n * ])\n * ```\n * \n * Read more in our [docs](https://www.prisma.io/docs/orm/prisma-client/queries/transactions).\n */\n $transaction<P extends Prisma.PrismaPromise<any>[]>(arg: [...P], options?: { isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<runtime.Types.Utils.UnwrapTuple<P>>\n\n $transaction<R>(fn: (prisma: Omit<PrismaClient, runtime.ITXClientDenyList>) => runtime.Types.Utils.JsPromise<R>, options?: { maxWait?: number, timeout?: number, isolationLevel?: Prisma.TransactionIsolationLevel }): runtime.Types.Utils.JsPromise<R>\n\n $extends: runtime.Types.Extensions.ExtendsHook<\"extends\", Prisma.TypeMapCb<OmitOpts>, ExtArgs, runtime.Types.Utils.Call<Prisma.TypeMapCb<OmitOpts>, {\n extArgs: ExtArgs\n }>>\n\n /**\n * `prisma.userWallet`: Exposes CRUD operations for the **UserWallet** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more UserWallets\n * const userWallets = await prisma.userWallet.findMany()\n * ```\n */\n get userWallet(): Prisma.UserWalletDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.wallet`: Exposes CRUD operations for the **Wallet** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more Wallets\n * const wallets = await prisma.wallet.findMany()\n * ```\n */\n get wallet(): Prisma.WalletDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.frostMeta`: Exposes CRUD operations for the **FrostMeta** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more FrostMetas\n * const frostMetas = await prisma.frostMeta.findMany()\n * ```\n */\n get frostMeta(): Prisma.FrostMetaDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.frostShare`: Exposes CRUD operations for the **FrostShare** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more FrostShares\n * const frostShares = await prisma.frostShare.findMany()\n * ```\n */\n get frostShare(): Prisma.FrostShareDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.auditLog`: Exposes CRUD operations for the **AuditLog** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more AuditLogs\n * const auditLogs = await prisma.auditLog.findMany()\n * ```\n */\n get auditLog(): Prisma.AuditLogDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.txLog`: Exposes CRUD operations for the **TxLog** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more TxLogs\n * const txLogs = await prisma.txLog.findMany()\n * ```\n */\n get txLog(): Prisma.TxLogDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.spendingLimits`: Exposes CRUD operations for the **SpendingLimits** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more SpendingLimits\n * const spendingLimits = await prisma.spendingLimits.findMany()\n * ```\n */\n get spendingLimits(): Prisma.SpendingLimitsDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.spendingRecord`: Exposes CRUD operations for the **SpendingRecord** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more SpendingRecords\n * const spendingRecords = await prisma.spendingRecord.findMany()\n * ```\n */\n get spendingRecord(): Prisma.SpendingRecordDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.agentLifecycle`: Exposes CRUD operations for the **AgentLifecycle** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more AgentLifecycles\n * const agentLifecycles = await prisma.agentLifecycle.findMany()\n * ```\n */\n get agentLifecycle(): Prisma.AgentLifecycleDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.agentStrategyConfig`: Exposes CRUD operations for the **AgentStrategyConfig** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more AgentStrategyConfigs\n * const agentStrategyConfigs = await prisma.agentStrategyConfig.findMany()\n * ```\n */\n get agentStrategyConfig(): Prisma.AgentStrategyConfigDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.fraudAlert`: Exposes CRUD operations for the **FraudAlert** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more FraudAlerts\n * const fraudAlerts = await prisma.fraudAlert.findMany()\n * ```\n */\n get fraudAlert(): Prisma.FraudAlertDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.scheduledPayment`: Exposes CRUD operations for the **ScheduledPayment** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more ScheduledPayments\n * const scheduledPayments = await prisma.scheduledPayment.findMany()\n * ```\n */\n get scheduledPayment(): Prisma.ScheduledPaymentDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.subscription`: Exposes CRUD operations for the **Subscription** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more Subscriptions\n * const subscriptions = await prisma.subscription.findMany()\n * ```\n */\n get subscription(): Prisma.SubscriptionDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.notification`: Exposes CRUD operations for the **Notification** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more Notifications\n * const notifications = await prisma.notification.findMany()\n * ```\n */\n get notification(): Prisma.NotificationDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.chatBinding`: Exposes CRUD operations for the **ChatBinding** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more ChatBindings\n * const chatBindings = await prisma.chatBinding.findMany()\n * ```\n */\n get chatBinding(): Prisma.ChatBindingDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.walletPersona`: Exposes CRUD operations for the **WalletPersona** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more WalletPersonas\n * const walletPersonas = await prisma.walletPersona.findMany()\n * ```\n */\n get walletPersona(): Prisma.WalletPersonaDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.battle`: Exposes CRUD operations for the **Battle** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more Battles\n * const battles = await prisma.battle.findMany()\n * ```\n */\n get battle(): Prisma.BattleDelegate<ExtArgs, { omit: OmitOpts }>;\n\n /**\n * `prisma.strategy`: Exposes CRUD operations for the **Strategy** model.\n * Example usage:\n * ```ts\n * // Fetch zero or more Strategies\n * const strategies = await prisma.strategy.findMany()\n * ```\n */\n get strategy(): Prisma.StrategyDelegate<ExtArgs, { omit: OmitOpts }>;\n}\n\nexport function getPrismaClientClass(): PrismaClientConstructor {\n return runtime.getPrismaClient(config) as unknown as PrismaClientConstructor\n}\n","\n/* !!! This is code generated by Prisma. Do not edit directly. !!! */\n/* eslint-disable */\n// biome-ignore-all lint: generated file\n// @ts-nocheck \n/*\n * WARNING: This is an internal file that is subject to change!\n *\n * 🛑 Under no circumstances should you import this file directly! 🛑\n *\n * All exports from this file are wrapped under a `Prisma` namespace object in the client.ts file.\n * While this enables partial backward compatibility, it is not part of the stable public API.\n *\n * If you are looking for your Models, Enums, and Input Types, please import them from the respective\n * model files in the `model` directory!\n */\n\nimport * as runtime from \"@prisma/client/runtime/client\"\nimport type * as Prisma from \"../models\"\nimport { type PrismaClient } from \"./class\"\n\nexport type * from '../models'\n\nexport type DMMF = typeof runtime.DMMF\n\nexport type PrismaPromise<T> = runtime.Types.Public.PrismaPromise<T>\n\n/**\n * Prisma Errors\n */\n\nexport const PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError\nexport type PrismaClientKnownRequestError = runtime.PrismaClientKnownRequestError\n\nexport const PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError\nexport type PrismaClientUnknownRequestError = runtime.PrismaClientUnknownRequestError\n\nexport const PrismaClientRustPanicError = runtime.PrismaClientRustPanicError\nexport type PrismaClientRustPanicError = runtime.PrismaClientRustPanicError\n\nexport const PrismaClientInitializationError = runtime.PrismaClientInitializationError\nexport type PrismaClientInitializationError = runtime.PrismaClientInitializationError\n\nexport const PrismaClientValidationError = runtime.PrismaClientValidationError\nexport type PrismaClientValidationError = runtime.PrismaClientValidationError\n\n/**\n * Re-export of sql-template-tag\n */\nexport const sql = runtime.sqltag\nexport const empty = runtime.empty\nexport const join = runtime.join\nexport const raw = runtime.raw\nexport const Sql = runtime.Sql\nexport type Sql = runtime.Sql\n\n\n\n/**\n * Decimal.js\n */\nexport const Decimal = runtime.Decimal\nexport type Decimal = runtime.Decimal\n\nexport type DecimalJsLike = runtime.DecimalJsLike\n\n/**\n* Extensions\n*/\nexport type Extension = runtime.Types.Extensions.UserArgs\nexport const getExtensionContext = runtime.Extensions.getExtensionContext\nexport type Args<T, F extends runtime.Operation> = runtime.Types.Public.Args<T, F>\nexport type Payload<T, F extends runtime.Operation = never> = runtime.Types.Public.Payload<T, F>\nexport type Result<T, A, F extends runtime.Operation> = runtime.Types.Public.Result<T, A, F>\nexport type Exact<A, W> = runtime.Types.Public.Exact<A, W>\n\nexport type PrismaVersion = {\n client: string\n engine: string\n}\n\n/**\n * Prisma Client JS version: 7.4.2\n * Query Engine version: 94a226be1cf2967af2541cca5529f0f7ba866919\n */\nexport const prismaVersion: PrismaVersion = {\n client: \"7.4.2\",\n engine: \"94a226be1cf2967af2541cca5529f0f7ba866919\"\n}\n\n/**\n * Utility Types\n */\n\nexport type Bytes = runtime.Bytes\nexport type JsonObject = runtime.JsonObject\nexport type JsonArray = runtime.JsonArray\nexport type JsonValue = runtime.JsonValue\nexport type InputJsonObject = runtime.InputJsonObject\nexport type InputJsonArray = runtime.InputJsonArray\nexport type InputJsonValue = runtime.InputJsonValue\n\n\nexport const NullTypes = {\n DbNull: runtime.NullTypes.DbNull as (new (secret: never) => typeof runtime.DbNull),\n JsonNull: runtime.NullTypes.JsonNull as (new (secret: never) => typeof runtime.JsonNull),\n AnyNull: runtime.NullTypes.AnyNull as (new (secret: never) => typeof runtime.AnyNull),\n}\n/**\n * Helper for filtering JSON entries that have `null` on the database (empty on the db)\n *\n * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field\n */\nexport const DbNull = runtime.DbNull\n\n/**\n * Helper for filtering JSON entries that have JSON `null` values (not empty on the db)\n *\n * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field\n */\nexport const JsonNull = runtime.JsonNull\n\n/**\n * Helper for filtering JSON entries that are `Prisma.DbNull` or `Prisma.JsonNull`\n *\n * @see https://www.prisma.io/docs/concepts/components/prisma-client/working-with-fields/working-with-json-fields#filtering-on-a-json-field\n */\nexport const AnyNull = runtime.AnyNull\n\n\ntype SelectAndInclude = {\n select: any\n include: any\n}\n\ntype SelectAndOmit = {\n select: any\n omit: any\n}\n\n/**\n * From T, pick a set of properties whose keys are in the union K\n */\ntype Prisma__Pick<T, K extends keyof T> = {\n [P in K]: T[P];\n};\n\nexport type Enumerable<T> = T | Array<T>;\n\n/**\n * Subset\n * @desc From `T` pick properties that exist in `U`. Simple version of Intersection\n */\nexport type Subset<T, U> = {\n [key in keyof T]: key extends keyof U ? T[key] : never;\n};\n\n/**\n * SelectSubset\n * @desc From `T` pick properties that exist in `U`. Simple version of Intersection.\n * Additionally, it validates, if both select and include are present. If the case, it errors.\n */\nexport type SelectSubset<T, U> = {\n [key in keyof T]: key extends keyof U ? T[key] : never\n} &\n (T extends SelectAndInclude\n ? 'Please either choose `select` or `include`.'\n : T extends SelectAndOmit\n ? 'Please either choose `select` or `omit`.'\n : {})\n\n/**\n * Subset + Intersection\n * @desc From `T` pick properties that exist in `U` and intersect `K`\n */\nexport type SubsetIntersection<T, U, K> = {\n [key in keyof T]: key extends keyof U ? T[key] : never\n} &\n K\n\ntype Without<T, U> = { [P in Exclude<keyof T, keyof U>]?: never };\n\n/**\n * XOR is needed to have a real mutually exclusive union type\n * https://stackoverflow.com/questions/42123407/does-typescript-support-mutually-exclusive-types\n */\nexport type XOR<T, U> =\n T extends object ?\n U extends object ?\n (Without<T, U> & U) | (Without<U, T> & T)\n : U : T\n\n\n/**\n * Is T a Record?\n */\ntype IsObject<T extends any> = T extends Array<any>\n? False\n: T extends Date\n? False\n: T extends Uint8Array\n? False\n: T extends BigInt\n? False\n: T extends object\n? True\n: False\n\n\n/**\n * If it's T[], return T\n */\nexport type UnEnumerate<T extends unknown> = T extends Array<infer U> ? U : T\n\n/**\n * From ts-toolbelt\n */\n\ntype __Either<O extends object, K extends Key> = Omit<O, K> &\n {\n // Merge all but K\n [P in K]: Prisma__Pick<O, P & keyof O> // With K possibilities\n }[K]\n\ntype EitherStrict<O extends object, K extends Key> = Strict<__Either<O, K>>\n\ntype EitherLoose<O extends object, K extends Key> = ComputeRaw<__Either<O, K>>\n\ntype _Either<\n O extends object,\n K extends Key,\n strict extends Boolean\n> = {\n 1: EitherStrict<O, K>\n 0: EitherLoose<O, K>\n}[strict]\n\nexport type Either<\n O extends object,\n K extends Key,\n strict extends Boolean = 1\n> = O extends unknown ? _Either<O, K, strict> : never\n\nexport type Union = any\n\nexport type PatchUndefined<O extends object, O1 extends object> = {\n [K in keyof O]: O[K] extends undefined ? At<O1, K> : O[K]\n} & {}\n\n/** Helper Types for \"Merge\" **/\nexport type IntersectOf<U extends Union> = (\n U extends unknown ? (k: U) => void : never\n) extends (k: infer I) => void\n ? I\n : never\n\nexport type Overwrite<O extends object, O1 extends object> = {\n [K in keyof O]: K extends keyof O1 ? O1[K] : O[K];\n} & {};\n\ntype _Merge<U extends object> = IntersectOf<Overwrite<U, {\n [K in keyof U]-?: At<U, K>;\n}>>;\n\ntype Key = string | number | symbol;\ntype AtStrict<O extends object, K extends Key> = O[K & keyof O];\ntype AtLoose<O extends object, K extends Key> = O extends unknown ? AtStrict<O, K> : never;\nexport type At<O extends object, K extends Key, strict extends Boolean = 1> = {\n 1: AtStrict<O, K>;\n 0: AtLoose<O, K>;\n}[strict];\n\nexport type ComputeRaw<A extends any> = A extends Function ? A : {\n [K in keyof A]: A[K];\n} & {};\n\nexport type OptionalFlat<O> = {\n [K in keyof O]?: O[K];\n} & {};\n\ntype _Record<K extends keyof any, T> = {\n [P in K]: T;\n};\n\n// cause typescript not to expand types and preserve names\ntype NoExpand<T> = T extends unknown ? T : never;\n\n// this type assumes the passed object is entirely optional\nexport type AtLeast<O extends object, K extends string> = NoExpand<\n O extends unknown\n ? | (K extends keyof O ? { [P in K]: O[P] } & O : O)\n | {[P in keyof O as P extends K ? P : never]-?: O[P]} & O\n : never>;\n\ntype _Strict<U, _U = U> = U extends unknown ? U & OptionalFlat<_Record<Exclude<Keys<_U>, keyof U>, never>> : never;\n\nexport type Strict<U extends object> = ComputeRaw<_Strict<U>>;\n/** End Helper Types for \"Merge\" **/\n\nexport type Merge<U extends object> = ComputeRaw<_Merge<Strict<U>>>;\n\nexport type Boolean = True | False\n\nexport type True = 1\n\nexport type False = 0\n\nexport type Not<B extends Boolean> = {\n 0: 1\n 1: 0\n}[B]\n\nexport type Extends<A1 extends any, A2 extends any> = [A1] extends [never]\n ? 0 // anything `never` is false\n : A1 extends A2\n ? 1\n : 0\n\nexport type Has<U extends Union, U1 extends Union> = Not<\n Extends<Exclude<U1, U>, U1>\n>\n\nexport type Or<B1 extends Boolean, B2 extends Boolean> = {\n 0: {\n 0: 0\n 1: 1\n }\n 1: {\n 0: 1\n 1: 1\n }\n}[B1][B2]\n\nexport type Keys<U extends Union> = U extends unknown ? keyof U : never\n\nexport type GetScalarType<T, O> = O extends object ? {\n [P in keyof T]: P extends keyof O\n ? O[P]\n : never\n} : never\n\ntype FieldPaths<\n T,\n U = Omit<T, '_avg' | '_sum' | '_count' | '_min' | '_max'>\n> = IsObject<T> extends True ? U : T\n\nexport type GetHavingFields<T> = {\n [K in keyof T]: Or<\n Or<Extends<'OR', K>, Extends<'AND', K>>,\n Extends<'NOT', K>\n > extends True\n ? // infer is only needed to not hit TS limit\n // based on the brilliant idea of Pierre-Antoine Mills\n // https://github.com/microsoft/TypeScript/issues/30188#issuecomment-478938437\n T[K] extends infer TK\n ? GetHavingFields<UnEnumerate<TK> extends object ? Merge<UnEnumerate<TK>> : never>\n : never\n : {} extends FieldPaths<T[K]>\n ? never\n : K\n}[keyof T]\n\n/**\n * Convert tuple to union\n */\ntype _TupleToUnion<T> = T extends (infer E)[] ? E : never\ntype TupleToUnion<K extends readonly any[]> = _TupleToUnion<K>\nexport type MaybeTupleToUnion<T> = T extends any[] ? TupleToUnion<T> : T\n\n/**\n * Like `Pick`, but additionally can also accept an array of keys\n */\nexport type PickEnumerable<T, K extends Enumerable<keyof T> | keyof T> = Prisma__Pick<T, MaybeTupleToUnion<K>>\n\n/**\n * Exclude all keys with underscores\n */\nexport type ExcludeUnderscoreKeys<T extends string> = T extends `_${string}` ? never : T\n\n\nexport type FieldRef<Model, FieldType> = runtime.FieldRef<Model, FieldType>\n\ntype FieldRefInputType<Model, FieldType> = Model extends never ? never : FieldRef<Model, FieldType>\n\n\nexport const ModelName = {\n UserWallet: 'UserWallet',\n Wallet: 'Wallet',\n FrostMeta: 'FrostMeta',\n FrostShare: 'FrostShare',\n AuditLog: 'AuditLog',\n TxLog: 'TxLog',\n SpendingLimits: 'SpendingLimits',\n SpendingRecord: 'SpendingRecord',\n AgentLifecycle: 'AgentLifecycle',\n AgentStrategyConfig: 'AgentStrategyConfig',\n FraudAlert: 'FraudAlert',\n ScheduledPayment: 'ScheduledPayment',\n Subscription: 'Subscription',\n Notification: 'Notification',\n ChatBinding: 'ChatBinding',\n WalletPersona: 'WalletPersona',\n Battle: 'Battle',\n Strategy: 'Strategy'\n} as const\n\nexport type ModelName = (typeof ModelName)[keyof typeof ModelName]\n\n\n\nexport interface TypeMapCb<GlobalOmitOptions = {}> extends runtime.Types.Utils.Fn<{extArgs: runtime.Types.Extensions.InternalArgs }, runtime.Types.Utils.Record<string, any>> {\n returns: TypeMap<this['params']['extArgs'], GlobalOmitOptions>\n}\n\nexport type TypeMap<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> = {\n globalOmitOptions: {\n omit: GlobalOmitOptions\n }\n meta: {\n modelProps: \"userWallet\" | \"wallet\" | \"frostMeta\" | \"frostShare\" | \"auditLog\" | \"txLog\" | \"spendingLimits\" | \"spendingRecord\" | \"agentLifecycle\" | \"agentStrategyConfig\" | \"fraudAlert\" | \"scheduledPayment\" | \"subscription\" | \"notification\" | \"chatBinding\" | \"walletPersona\" | \"battle\" | \"strategy\"\n txIsolationLevel: TransactionIsolationLevel\n }\n model: {\n UserWallet: {\n payload: Prisma.$UserWalletPayload<ExtArgs>\n fields: Prisma.UserWalletFieldRefs\n operations: {\n findUnique: {\n args: Prisma.UserWalletFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.UserWalletFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>\n }\n findFirst: {\n args: Prisma.UserWalletFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.UserWalletFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>\n }\n findMany: {\n args: Prisma.UserWalletFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>[]\n }\n create: {\n args: Prisma.UserWalletCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>\n }\n createMany: {\n args: Prisma.UserWalletCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.UserWalletCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>[]\n }\n delete: {\n args: Prisma.UserWalletDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>\n }\n update: {\n args: Prisma.UserWalletUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>\n }\n deleteMany: {\n args: Prisma.UserWalletDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.UserWalletUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.UserWalletUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>[]\n }\n upsert: {\n args: Prisma.UserWalletUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$UserWalletPayload>\n }\n aggregate: {\n args: Prisma.UserWalletAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateUserWallet>\n }\n groupBy: {\n args: Prisma.UserWalletGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.UserWalletGroupByOutputType>[]\n }\n count: {\n args: Prisma.UserWalletCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.UserWalletCountAggregateOutputType> | number\n }\n }\n }\n Wallet: {\n payload: Prisma.$WalletPayload<ExtArgs>\n fields: Prisma.WalletFieldRefs\n operations: {\n findUnique: {\n args: Prisma.WalletFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.WalletFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>\n }\n findFirst: {\n args: Prisma.WalletFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.WalletFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>\n }\n findMany: {\n args: Prisma.WalletFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>[]\n }\n create: {\n args: Prisma.WalletCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>\n }\n createMany: {\n args: Prisma.WalletCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.WalletCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>[]\n }\n delete: {\n args: Prisma.WalletDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>\n }\n update: {\n args: Prisma.WalletUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>\n }\n deleteMany: {\n args: Prisma.WalletDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.WalletUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.WalletUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>[]\n }\n upsert: {\n args: Prisma.WalletUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPayload>\n }\n aggregate: {\n args: Prisma.WalletAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateWallet>\n }\n groupBy: {\n args: Prisma.WalletGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.WalletGroupByOutputType>[]\n }\n count: {\n args: Prisma.WalletCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.WalletCountAggregateOutputType> | number\n }\n }\n }\n FrostMeta: {\n payload: Prisma.$FrostMetaPayload<ExtArgs>\n fields: Prisma.FrostMetaFieldRefs\n operations: {\n findUnique: {\n args: Prisma.FrostMetaFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.FrostMetaFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>\n }\n findFirst: {\n args: Prisma.FrostMetaFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.FrostMetaFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>\n }\n findMany: {\n args: Prisma.FrostMetaFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>[]\n }\n create: {\n args: Prisma.FrostMetaCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>\n }\n createMany: {\n args: Prisma.FrostMetaCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.FrostMetaCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>[]\n }\n delete: {\n args: Prisma.FrostMetaDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>\n }\n update: {\n args: Prisma.FrostMetaUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>\n }\n deleteMany: {\n args: Prisma.FrostMetaDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.FrostMetaUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.FrostMetaUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>[]\n }\n upsert: {\n args: Prisma.FrostMetaUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostMetaPayload>\n }\n aggregate: {\n args: Prisma.FrostMetaAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateFrostMeta>\n }\n groupBy: {\n args: Prisma.FrostMetaGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.FrostMetaGroupByOutputType>[]\n }\n count: {\n args: Prisma.FrostMetaCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.FrostMetaCountAggregateOutputType> | number\n }\n }\n }\n FrostShare: {\n payload: Prisma.$FrostSharePayload<ExtArgs>\n fields: Prisma.FrostShareFieldRefs\n operations: {\n findUnique: {\n args: Prisma.FrostShareFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.FrostShareFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>\n }\n findFirst: {\n args: Prisma.FrostShareFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.FrostShareFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>\n }\n findMany: {\n args: Prisma.FrostShareFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>[]\n }\n create: {\n args: Prisma.FrostShareCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>\n }\n createMany: {\n args: Prisma.FrostShareCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.FrostShareCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>[]\n }\n delete: {\n args: Prisma.FrostShareDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>\n }\n update: {\n args: Prisma.FrostShareUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>\n }\n deleteMany: {\n args: Prisma.FrostShareDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.FrostShareUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.FrostShareUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>[]\n }\n upsert: {\n args: Prisma.FrostShareUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FrostSharePayload>\n }\n aggregate: {\n args: Prisma.FrostShareAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateFrostShare>\n }\n groupBy: {\n args: Prisma.FrostShareGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.FrostShareGroupByOutputType>[]\n }\n count: {\n args: Prisma.FrostShareCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.FrostShareCountAggregateOutputType> | number\n }\n }\n }\n AuditLog: {\n payload: Prisma.$AuditLogPayload<ExtArgs>\n fields: Prisma.AuditLogFieldRefs\n operations: {\n findUnique: {\n args: Prisma.AuditLogFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.AuditLogFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>\n }\n findFirst: {\n args: Prisma.AuditLogFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.AuditLogFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>\n }\n findMany: {\n args: Prisma.AuditLogFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>[]\n }\n create: {\n args: Prisma.AuditLogCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>\n }\n createMany: {\n args: Prisma.AuditLogCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.AuditLogCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>[]\n }\n delete: {\n args: Prisma.AuditLogDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>\n }\n update: {\n args: Prisma.AuditLogUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>\n }\n deleteMany: {\n args: Prisma.AuditLogDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.AuditLogUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.AuditLogUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>[]\n }\n upsert: {\n args: Prisma.AuditLogUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AuditLogPayload>\n }\n aggregate: {\n args: Prisma.AuditLogAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateAuditLog>\n }\n groupBy: {\n args: Prisma.AuditLogGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AuditLogGroupByOutputType>[]\n }\n count: {\n args: Prisma.AuditLogCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AuditLogCountAggregateOutputType> | number\n }\n }\n }\n TxLog: {\n payload: Prisma.$TxLogPayload<ExtArgs>\n fields: Prisma.TxLogFieldRefs\n operations: {\n findUnique: {\n args: Prisma.TxLogFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.TxLogFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>\n }\n findFirst: {\n args: Prisma.TxLogFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.TxLogFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>\n }\n findMany: {\n args: Prisma.TxLogFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>[]\n }\n create: {\n args: Prisma.TxLogCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>\n }\n createMany: {\n args: Prisma.TxLogCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.TxLogCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>[]\n }\n delete: {\n args: Prisma.TxLogDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>\n }\n update: {\n args: Prisma.TxLogUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>\n }\n deleteMany: {\n args: Prisma.TxLogDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.TxLogUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.TxLogUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>[]\n }\n upsert: {\n args: Prisma.TxLogUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$TxLogPayload>\n }\n aggregate: {\n args: Prisma.TxLogAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateTxLog>\n }\n groupBy: {\n args: Prisma.TxLogGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.TxLogGroupByOutputType>[]\n }\n count: {\n args: Prisma.TxLogCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.TxLogCountAggregateOutputType> | number\n }\n }\n }\n SpendingLimits: {\n payload: Prisma.$SpendingLimitsPayload<ExtArgs>\n fields: Prisma.SpendingLimitsFieldRefs\n operations: {\n findUnique: {\n args: Prisma.SpendingLimitsFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.SpendingLimitsFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>\n }\n findFirst: {\n args: Prisma.SpendingLimitsFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.SpendingLimitsFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>\n }\n findMany: {\n args: Prisma.SpendingLimitsFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>[]\n }\n create: {\n args: Prisma.SpendingLimitsCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>\n }\n createMany: {\n args: Prisma.SpendingLimitsCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.SpendingLimitsCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>[]\n }\n delete: {\n args: Prisma.SpendingLimitsDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>\n }\n update: {\n args: Prisma.SpendingLimitsUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>\n }\n deleteMany: {\n args: Prisma.SpendingLimitsDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.SpendingLimitsUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.SpendingLimitsUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>[]\n }\n upsert: {\n args: Prisma.SpendingLimitsUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingLimitsPayload>\n }\n aggregate: {\n args: Prisma.SpendingLimitsAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateSpendingLimits>\n }\n groupBy: {\n args: Prisma.SpendingLimitsGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.SpendingLimitsGroupByOutputType>[]\n }\n count: {\n args: Prisma.SpendingLimitsCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.SpendingLimitsCountAggregateOutputType> | number\n }\n }\n }\n SpendingRecord: {\n payload: Prisma.$SpendingRecordPayload<ExtArgs>\n fields: Prisma.SpendingRecordFieldRefs\n operations: {\n findUnique: {\n args: Prisma.SpendingRecordFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.SpendingRecordFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>\n }\n findFirst: {\n args: Prisma.SpendingRecordFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.SpendingRecordFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>\n }\n findMany: {\n args: Prisma.SpendingRecordFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>[]\n }\n create: {\n args: Prisma.SpendingRecordCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>\n }\n createMany: {\n args: Prisma.SpendingRecordCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.SpendingRecordCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>[]\n }\n delete: {\n args: Prisma.SpendingRecordDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>\n }\n update: {\n args: Prisma.SpendingRecordUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>\n }\n deleteMany: {\n args: Prisma.SpendingRecordDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.SpendingRecordUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.SpendingRecordUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>[]\n }\n upsert: {\n args: Prisma.SpendingRecordUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SpendingRecordPayload>\n }\n aggregate: {\n args: Prisma.SpendingRecordAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateSpendingRecord>\n }\n groupBy: {\n args: Prisma.SpendingRecordGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.SpendingRecordGroupByOutputType>[]\n }\n count: {\n args: Prisma.SpendingRecordCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.SpendingRecordCountAggregateOutputType> | number\n }\n }\n }\n AgentLifecycle: {\n payload: Prisma.$AgentLifecyclePayload<ExtArgs>\n fields: Prisma.AgentLifecycleFieldRefs\n operations: {\n findUnique: {\n args: Prisma.AgentLifecycleFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.AgentLifecycleFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>\n }\n findFirst: {\n args: Prisma.AgentLifecycleFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.AgentLifecycleFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>\n }\n findMany: {\n args: Prisma.AgentLifecycleFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>[]\n }\n create: {\n args: Prisma.AgentLifecycleCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>\n }\n createMany: {\n args: Prisma.AgentLifecycleCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.AgentLifecycleCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>[]\n }\n delete: {\n args: Prisma.AgentLifecycleDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>\n }\n update: {\n args: Prisma.AgentLifecycleUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>\n }\n deleteMany: {\n args: Prisma.AgentLifecycleDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.AgentLifecycleUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.AgentLifecycleUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>[]\n }\n upsert: {\n args: Prisma.AgentLifecycleUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentLifecyclePayload>\n }\n aggregate: {\n args: Prisma.AgentLifecycleAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateAgentLifecycle>\n }\n groupBy: {\n args: Prisma.AgentLifecycleGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AgentLifecycleGroupByOutputType>[]\n }\n count: {\n args: Prisma.AgentLifecycleCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AgentLifecycleCountAggregateOutputType> | number\n }\n }\n }\n AgentStrategyConfig: {\n payload: Prisma.$AgentStrategyConfigPayload<ExtArgs>\n fields: Prisma.AgentStrategyConfigFieldRefs\n operations: {\n findUnique: {\n args: Prisma.AgentStrategyConfigFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.AgentStrategyConfigFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>\n }\n findFirst: {\n args: Prisma.AgentStrategyConfigFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.AgentStrategyConfigFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>\n }\n findMany: {\n args: Prisma.AgentStrategyConfigFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>[]\n }\n create: {\n args: Prisma.AgentStrategyConfigCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>\n }\n createMany: {\n args: Prisma.AgentStrategyConfigCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.AgentStrategyConfigCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>[]\n }\n delete: {\n args: Prisma.AgentStrategyConfigDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>\n }\n update: {\n args: Prisma.AgentStrategyConfigUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>\n }\n deleteMany: {\n args: Prisma.AgentStrategyConfigDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.AgentStrategyConfigUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.AgentStrategyConfigUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>[]\n }\n upsert: {\n args: Prisma.AgentStrategyConfigUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$AgentStrategyConfigPayload>\n }\n aggregate: {\n args: Prisma.AgentStrategyConfigAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateAgentStrategyConfig>\n }\n groupBy: {\n args: Prisma.AgentStrategyConfigGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AgentStrategyConfigGroupByOutputType>[]\n }\n count: {\n args: Prisma.AgentStrategyConfigCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AgentStrategyConfigCountAggregateOutputType> | number\n }\n }\n }\n FraudAlert: {\n payload: Prisma.$FraudAlertPayload<ExtArgs>\n fields: Prisma.FraudAlertFieldRefs\n operations: {\n findUnique: {\n args: Prisma.FraudAlertFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.FraudAlertFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>\n }\n findFirst: {\n args: Prisma.FraudAlertFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.FraudAlertFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>\n }\n findMany: {\n args: Prisma.FraudAlertFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>[]\n }\n create: {\n args: Prisma.FraudAlertCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>\n }\n createMany: {\n args: Prisma.FraudAlertCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.FraudAlertCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>[]\n }\n delete: {\n args: Prisma.FraudAlertDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>\n }\n update: {\n args: Prisma.FraudAlertUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>\n }\n deleteMany: {\n args: Prisma.FraudAlertDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.FraudAlertUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.FraudAlertUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>[]\n }\n upsert: {\n args: Prisma.FraudAlertUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$FraudAlertPayload>\n }\n aggregate: {\n args: Prisma.FraudAlertAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateFraudAlert>\n }\n groupBy: {\n args: Prisma.FraudAlertGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.FraudAlertGroupByOutputType>[]\n }\n count: {\n args: Prisma.FraudAlertCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.FraudAlertCountAggregateOutputType> | number\n }\n }\n }\n ScheduledPayment: {\n payload: Prisma.$ScheduledPaymentPayload<ExtArgs>\n fields: Prisma.ScheduledPaymentFieldRefs\n operations: {\n findUnique: {\n args: Prisma.ScheduledPaymentFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.ScheduledPaymentFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>\n }\n findFirst: {\n args: Prisma.ScheduledPaymentFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.ScheduledPaymentFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>\n }\n findMany: {\n args: Prisma.ScheduledPaymentFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>[]\n }\n create: {\n args: Prisma.ScheduledPaymentCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>\n }\n createMany: {\n args: Prisma.ScheduledPaymentCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.ScheduledPaymentCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>[]\n }\n delete: {\n args: Prisma.ScheduledPaymentDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>\n }\n update: {\n args: Prisma.ScheduledPaymentUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>\n }\n deleteMany: {\n args: Prisma.ScheduledPaymentDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.ScheduledPaymentUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.ScheduledPaymentUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>[]\n }\n upsert: {\n args: Prisma.ScheduledPaymentUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ScheduledPaymentPayload>\n }\n aggregate: {\n args: Prisma.ScheduledPaymentAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateScheduledPayment>\n }\n groupBy: {\n args: Prisma.ScheduledPaymentGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.ScheduledPaymentGroupByOutputType>[]\n }\n count: {\n args: Prisma.ScheduledPaymentCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.ScheduledPaymentCountAggregateOutputType> | number\n }\n }\n }\n Subscription: {\n payload: Prisma.$SubscriptionPayload<ExtArgs>\n fields: Prisma.SubscriptionFieldRefs\n operations: {\n findUnique: {\n args: Prisma.SubscriptionFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.SubscriptionFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>\n }\n findFirst: {\n args: Prisma.SubscriptionFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.SubscriptionFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>\n }\n findMany: {\n args: Prisma.SubscriptionFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>[]\n }\n create: {\n args: Prisma.SubscriptionCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>\n }\n createMany: {\n args: Prisma.SubscriptionCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.SubscriptionCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>[]\n }\n delete: {\n args: Prisma.SubscriptionDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>\n }\n update: {\n args: Prisma.SubscriptionUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>\n }\n deleteMany: {\n args: Prisma.SubscriptionDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.SubscriptionUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.SubscriptionUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>[]\n }\n upsert: {\n args: Prisma.SubscriptionUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$SubscriptionPayload>\n }\n aggregate: {\n args: Prisma.SubscriptionAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateSubscription>\n }\n groupBy: {\n args: Prisma.SubscriptionGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.SubscriptionGroupByOutputType>[]\n }\n count: {\n args: Prisma.SubscriptionCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.SubscriptionCountAggregateOutputType> | number\n }\n }\n }\n Notification: {\n payload: Prisma.$NotificationPayload<ExtArgs>\n fields: Prisma.NotificationFieldRefs\n operations: {\n findUnique: {\n args: Prisma.NotificationFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.NotificationFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>\n }\n findFirst: {\n args: Prisma.NotificationFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.NotificationFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>\n }\n findMany: {\n args: Prisma.NotificationFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>[]\n }\n create: {\n args: Prisma.NotificationCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>\n }\n createMany: {\n args: Prisma.NotificationCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.NotificationCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>[]\n }\n delete: {\n args: Prisma.NotificationDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>\n }\n update: {\n args: Prisma.NotificationUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>\n }\n deleteMany: {\n args: Prisma.NotificationDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.NotificationUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.NotificationUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>[]\n }\n upsert: {\n args: Prisma.NotificationUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$NotificationPayload>\n }\n aggregate: {\n args: Prisma.NotificationAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateNotification>\n }\n groupBy: {\n args: Prisma.NotificationGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.NotificationGroupByOutputType>[]\n }\n count: {\n args: Prisma.NotificationCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.NotificationCountAggregateOutputType> | number\n }\n }\n }\n ChatBinding: {\n payload: Prisma.$ChatBindingPayload<ExtArgs>\n fields: Prisma.ChatBindingFieldRefs\n operations: {\n findUnique: {\n args: Prisma.ChatBindingFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.ChatBindingFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>\n }\n findFirst: {\n args: Prisma.ChatBindingFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.ChatBindingFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>\n }\n findMany: {\n args: Prisma.ChatBindingFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>[]\n }\n create: {\n args: Prisma.ChatBindingCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>\n }\n createMany: {\n args: Prisma.ChatBindingCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.ChatBindingCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>[]\n }\n delete: {\n args: Prisma.ChatBindingDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>\n }\n update: {\n args: Prisma.ChatBindingUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>\n }\n deleteMany: {\n args: Prisma.ChatBindingDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.ChatBindingUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.ChatBindingUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>[]\n }\n upsert: {\n args: Prisma.ChatBindingUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$ChatBindingPayload>\n }\n aggregate: {\n args: Prisma.ChatBindingAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateChatBinding>\n }\n groupBy: {\n args: Prisma.ChatBindingGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.ChatBindingGroupByOutputType>[]\n }\n count: {\n args: Prisma.ChatBindingCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.ChatBindingCountAggregateOutputType> | number\n }\n }\n }\n WalletPersona: {\n payload: Prisma.$WalletPersonaPayload<ExtArgs>\n fields: Prisma.WalletPersonaFieldRefs\n operations: {\n findUnique: {\n args: Prisma.WalletPersonaFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.WalletPersonaFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>\n }\n findFirst: {\n args: Prisma.WalletPersonaFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.WalletPersonaFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>\n }\n findMany: {\n args: Prisma.WalletPersonaFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>[]\n }\n create: {\n args: Prisma.WalletPersonaCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>\n }\n createMany: {\n args: Prisma.WalletPersonaCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.WalletPersonaCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>[]\n }\n delete: {\n args: Prisma.WalletPersonaDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>\n }\n update: {\n args: Prisma.WalletPersonaUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>\n }\n deleteMany: {\n args: Prisma.WalletPersonaDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.WalletPersonaUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.WalletPersonaUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>[]\n }\n upsert: {\n args: Prisma.WalletPersonaUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$WalletPersonaPayload>\n }\n aggregate: {\n args: Prisma.WalletPersonaAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateWalletPersona>\n }\n groupBy: {\n args: Prisma.WalletPersonaGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.WalletPersonaGroupByOutputType>[]\n }\n count: {\n args: Prisma.WalletPersonaCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.WalletPersonaCountAggregateOutputType> | number\n }\n }\n }\n Battle: {\n payload: Prisma.$BattlePayload<ExtArgs>\n fields: Prisma.BattleFieldRefs\n operations: {\n findUnique: {\n args: Prisma.BattleFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.BattleFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>\n }\n findFirst: {\n args: Prisma.BattleFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.BattleFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>\n }\n findMany: {\n args: Prisma.BattleFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>[]\n }\n create: {\n args: Prisma.BattleCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>\n }\n createMany: {\n args: Prisma.BattleCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.BattleCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>[]\n }\n delete: {\n args: Prisma.BattleDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>\n }\n update: {\n args: Prisma.BattleUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>\n }\n deleteMany: {\n args: Prisma.BattleDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.BattleUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.BattleUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>[]\n }\n upsert: {\n args: Prisma.BattleUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$BattlePayload>\n }\n aggregate: {\n args: Prisma.BattleAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateBattle>\n }\n groupBy: {\n args: Prisma.BattleGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.BattleGroupByOutputType>[]\n }\n count: {\n args: Prisma.BattleCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.BattleCountAggregateOutputType> | number\n }\n }\n }\n Strategy: {\n payload: Prisma.$StrategyPayload<ExtArgs>\n fields: Prisma.StrategyFieldRefs\n operations: {\n findUnique: {\n args: Prisma.StrategyFindUniqueArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload> | null\n }\n findUniqueOrThrow: {\n args: Prisma.StrategyFindUniqueOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>\n }\n findFirst: {\n args: Prisma.StrategyFindFirstArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload> | null\n }\n findFirstOrThrow: {\n args: Prisma.StrategyFindFirstOrThrowArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>\n }\n findMany: {\n args: Prisma.StrategyFindManyArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>[]\n }\n create: {\n args: Prisma.StrategyCreateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>\n }\n createMany: {\n args: Prisma.StrategyCreateManyArgs<ExtArgs>\n result: BatchPayload\n }\n createManyAndReturn: {\n args: Prisma.StrategyCreateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>[]\n }\n delete: {\n args: Prisma.StrategyDeleteArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>\n }\n update: {\n args: Prisma.StrategyUpdateArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>\n }\n deleteMany: {\n args: Prisma.StrategyDeleteManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateMany: {\n args: Prisma.StrategyUpdateManyArgs<ExtArgs>\n result: BatchPayload\n }\n updateManyAndReturn: {\n args: Prisma.StrategyUpdateManyAndReturnArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>[]\n }\n upsert: {\n args: Prisma.StrategyUpsertArgs<ExtArgs>\n result: runtime.Types.Utils.PayloadToResult<Prisma.$StrategyPayload>\n }\n aggregate: {\n args: Prisma.StrategyAggregateArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.AggregateStrategy>\n }\n groupBy: {\n args: Prisma.StrategyGroupByArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.StrategyGroupByOutputType>[]\n }\n count: {\n args: Prisma.StrategyCountArgs<ExtArgs>\n result: runtime.Types.Utils.Optional<Prisma.StrategyCountAggregateOutputType> | number\n }\n }\n }\n }\n} & {\n other: {\n payload: any\n operations: {\n $executeRaw: {\n args: [query: TemplateStringsArray | Sql, ...values: any[]],\n result: any\n }\n $executeRawUnsafe: {\n args: [query: string, ...values: any[]],\n result: any\n }\n $queryRaw: {\n args: [query: TemplateStringsArray | Sql, ...values: any[]],\n result: any\n }\n $queryRawUnsafe: {\n args: [query: string, ...values: any[]],\n result: any\n }\n }\n }\n}\n\n/**\n * Enums\n */\n\nexport const TransactionIsolationLevel = runtime.makeStrictEnum({\n ReadUncommitted: 'ReadUncommitted',\n ReadCommitted: 'ReadCommitted',\n RepeatableRead: 'RepeatableRead',\n Serializable: 'Serializable'\n} as const)\n\nexport type TransactionIsolationLevel = (typeof TransactionIsolationLevel)[keyof typeof TransactionIsolationLevel]\n\n\nexport const UserWalletScalarFieldEnum = {\n googleSub: 'googleSub',\n walletId: 'walletId',\n frostPublicKey: 'frostPublicKey',\n createdAt: 'createdAt'\n} as const\n\nexport type UserWalletScalarFieldEnum = (typeof UserWalletScalarFieldEnum)[keyof typeof UserWalletScalarFieldEnum]\n\n\nexport const WalletScalarFieldEnum = {\n id: 'id',\n publicKey: 'publicKey',\n label: 'label',\n isAgent: 'isAgent',\n createdAt: 'createdAt',\n rekeyedAt: 'rekeyedAt',\n encIv: 'encIv',\n encSalt: 'encSalt',\n encTag: 'encTag',\n encData: 'encData'\n} as const\n\nexport type WalletScalarFieldEnum = (typeof WalletScalarFieldEnum)[keyof typeof WalletScalarFieldEnum]\n\n\nexport const FrostMetaScalarFieldEnum = {\n walletId: 'walletId',\n groupPublicKey: 'groupPublicKey',\n threshold: 'threshold',\n totalShares: 'totalShares',\n shareLabels: 'shareLabels',\n label: 'label',\n createdAt: 'createdAt',\n lastRefreshAt: 'lastRefreshAt'\n} as const\n\nexport type FrostMetaScalarFieldEnum = (typeof FrostMetaScalarFieldEnum)[keyof typeof FrostMetaScalarFieldEnum]\n\n\nexport const FrostShareScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n participantId: 'participantId',\n label: 'label',\n encIv: 'encIv',\n encSalt: 'encSalt',\n encTag: 'encTag',\n encData: 'encData'\n} as const\n\nexport type FrostShareScalarFieldEnum = (typeof FrostShareScalarFieldEnum)[keyof typeof FrostShareScalarFieldEnum]\n\n\nexport const AuditLogScalarFieldEnum = {\n id: 'id',\n seq: 'seq',\n timestamp: 'timestamp',\n action: 'action',\n walletId: 'walletId',\n agentId: 'agentId',\n ip: 'ip',\n outcome: 'outcome',\n details: 'details',\n integrity: 'integrity'\n} as const\n\nexport type AuditLogScalarFieldEnum = (typeof AuditLogScalarFieldEnum)[keyof typeof AuditLogScalarFieldEnum]\n\n\nexport const TxLogScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n timestamp: 'timestamp',\n toolName: 'toolName',\n args: 'args',\n result: 'result',\n success: 'success'\n} as const\n\nexport type TxLogScalarFieldEnum = (typeof TxLogScalarFieldEnum)[keyof typeof TxLogScalarFieldEnum]\n\n\nexport const SpendingLimitsScalarFieldEnum = {\n walletId: 'walletId',\n maxPerTx: 'maxPerTx',\n maxPerDay: 'maxPerDay',\n enabled: 'enabled'\n} as const\n\nexport type SpendingLimitsScalarFieldEnum = (typeof SpendingLimitsScalarFieldEnum)[keyof typeof SpendingLimitsScalarFieldEnum]\n\n\nexport const SpendingRecordScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n timestamp: 'timestamp',\n amount: 'amount',\n toolName: 'toolName'\n} as const\n\nexport type SpendingRecordScalarFieldEnum = (typeof SpendingRecordScalarFieldEnum)[keyof typeof SpendingRecordScalarFieldEnum]\n\n\nexport const AgentLifecycleScalarFieldEnum = {\n walletId: 'walletId',\n state: 'state',\n updatedAt: 'updatedAt',\n reason: 'reason',\n transitions: 'transitions'\n} as const\n\nexport type AgentLifecycleScalarFieldEnum = (typeof AgentLifecycleScalarFieldEnum)[keyof typeof AgentLifecycleScalarFieldEnum]\n\n\nexport const AgentStrategyConfigScalarFieldEnum = {\n walletId: 'walletId',\n strategyId: 'strategyId',\n updatedAt: 'updatedAt'\n} as const\n\nexport type AgentStrategyConfigScalarFieldEnum = (typeof AgentStrategyConfigScalarFieldEnum)[keyof typeof AgentStrategyConfigScalarFieldEnum]\n\n\nexport const FraudAlertScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n rule: 'rule',\n severity: 'severity',\n timestamp: 'timestamp',\n details: 'details',\n acknowledged: 'acknowledged'\n} as const\n\nexport type FraudAlertScalarFieldEnum = (typeof FraudAlertScalarFieldEnum)[keyof typeof FraudAlertScalarFieldEnum]\n\n\nexport const ScheduledPaymentScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n recipient: 'recipient',\n amount: 'amount',\n executeAfter: 'executeAfter',\n status: 'status',\n createdAt: 'createdAt',\n executedAt: 'executedAt',\n txSignature: 'txSignature',\n failureReason: 'failureReason'\n} as const\n\nexport type ScheduledPaymentScalarFieldEnum = (typeof ScheduledPaymentScalarFieldEnum)[keyof typeof ScheduledPaymentScalarFieldEnum]\n\n\nexport const SubscriptionScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n recipient: 'recipient',\n amount: 'amount',\n interval: 'interval',\n startDate: 'startDate',\n nextDue: 'nextDue',\n status: 'status',\n maxPayments: 'maxPayments',\n paymentsMade: 'paymentsMade',\n createdAt: 'createdAt',\n lastPaymentId: 'lastPaymentId'\n} as const\n\nexport type SubscriptionScalarFieldEnum = (typeof SubscriptionScalarFieldEnum)[keyof typeof SubscriptionScalarFieldEnum]\n\n\nexport const NotificationScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n type: 'type',\n priority: 'priority',\n title: 'title',\n message: 'message',\n timestamp: 'timestamp',\n read: 'read',\n metadata: 'metadata'\n} as const\n\nexport type NotificationScalarFieldEnum = (typeof NotificationScalarFieldEnum)[keyof typeof NotificationScalarFieldEnum]\n\n\nexport const ChatBindingScalarFieldEnum = {\n platform: 'platform',\n chatId: 'chatId',\n walletId: 'walletId',\n muted: 'muted',\n createdAt: 'createdAt'\n} as const\n\nexport type ChatBindingScalarFieldEnum = (typeof ChatBindingScalarFieldEnum)[keyof typeof ChatBindingScalarFieldEnum]\n\n\nexport const WalletPersonaScalarFieldEnum = {\n walletId: 'walletId',\n personaId: 'personaId',\n updatedAt: 'updatedAt'\n} as const\n\nexport type WalletPersonaScalarFieldEnum = (typeof WalletPersonaScalarFieldEnum)[keyof typeof WalletPersonaScalarFieldEnum]\n\n\nexport const BattleScalarFieldEnum = {\n id: 'id',\n agents: 'agents',\n roundDuration: 'roundDuration',\n totalRounds: 'totalRounds',\n currentRound: 'currentRound',\n status: 'status',\n createdAt: 'createdAt',\n updatedAt: 'updatedAt',\n completedAt: 'completedAt',\n winnerId: 'winnerId'\n} as const\n\nexport type BattleScalarFieldEnum = (typeof BattleScalarFieldEnum)[keyof typeof BattleScalarFieldEnum]\n\n\nexport const StrategyScalarFieldEnum = {\n id: 'id',\n walletId: 'walletId',\n type: 'type',\n status: 'status',\n name: 'name',\n interval: 'interval',\n nextRun: 'nextRun',\n params: 'params',\n maxExecutions: 'maxExecutions',\n executionCount: 'executionCount',\n consecutiveFailures: 'consecutiveFailures',\n maxConsecutiveFailures: 'maxConsecutiveFailures',\n createdAt: 'createdAt',\n updatedAt: 'updatedAt'\n} as const\n\nexport type StrategyScalarFieldEnum = (typeof StrategyScalarFieldEnum)[keyof typeof StrategyScalarFieldEnum]\n\n\nexport const SortOrder = {\n asc: 'asc',\n desc: 'desc'\n} as const\n\nexport type SortOrder = (typeof SortOrder)[keyof typeof SortOrder]\n\n\nexport const NullableJsonNullValueInput = {\n DbNull: DbNull,\n JsonNull: JsonNull\n} as const\n\nexport type NullableJsonNullValueInput = (typeof NullableJsonNullValueInput)[keyof typeof NullableJsonNullValueInput]\n\n\nexport const JsonNullValueInput = {\n JsonNull: JsonNull\n} as const\n\nexport type JsonNullValueInput = (typeof JsonNullValueInput)[keyof typeof JsonNullValueInput]\n\n\nexport const QueryMode = {\n default: 'default',\n insensitive: 'insensitive'\n} as const\n\nexport type QueryMode = (typeof QueryMode)[keyof typeof QueryMode]\n\n\nexport const NullsOrder = {\n first: 'first',\n last: 'last'\n} as const\n\nexport type NullsOrder = (typeof NullsOrder)[keyof typeof NullsOrder]\n\n\nexport const JsonNullValueFilter = {\n DbNull: DbNull,\n JsonNull: JsonNull,\n AnyNull: AnyNull\n} as const\n\nexport type JsonNullValueFilter = (typeof JsonNullValueFilter)[keyof typeof JsonNullValueFilter]\n\n\n\n/**\n * Field references\n */\n\n\n/**\n * Reference to a field of type 'String'\n */\nexport type StringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String'>\n \n\n\n/**\n * Reference to a field of type 'String[]'\n */\nexport type ListStringFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'String[]'>\n \n\n\n/**\n * Reference to a field of type 'DateTime'\n */\nexport type DateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime'>\n \n\n\n/**\n * Reference to a field of type 'DateTime[]'\n */\nexport type ListDateTimeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'DateTime[]'>\n \n\n\n/**\n * Reference to a field of type 'Boolean'\n */\nexport type BooleanFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Boolean'>\n \n\n\n/**\n * Reference to a field of type 'Int'\n */\nexport type IntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int'>\n \n\n\n/**\n * Reference to a field of type 'Int[]'\n */\nexport type ListIntFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Int[]'>\n \n\n\n/**\n * Reference to a field of type 'Json'\n */\nexport type JsonFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Json'>\n \n\n\n/**\n * Reference to a field of type 'QueryMode'\n */\nexport type EnumQueryModeFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'QueryMode'>\n \n\n\n/**\n * Reference to a field of type 'Float'\n */\nexport type FloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float'>\n \n\n\n/**\n * Reference to a field of type 'Float[]'\n */\nexport type ListFloatFieldRefInput<$PrismaModel> = FieldRefInputType<$PrismaModel, 'Float[]'>\n \n\n/**\n * Batch Payload for updateMany & deleteMany & createMany\n */\nexport type BatchPayload = {\n count: number\n}\n\nexport const defineExtension = runtime.Extensions.defineExtension as unknown as runtime.Types.Extensions.ExtendsHook<\"define\", TypeMapCb, runtime.Types.Extensions.DefaultArgs>\nexport type DefaultPrismaClient = PrismaClient\nexport type ErrorFormat = 'pretty' | 'colorless' | 'minimal'\nexport type PrismaClientOptions = ({\n /**\n * Instance of a Driver Adapter, e.g., like one provided by `@prisma/adapter-pg`.\n */\n adapter: runtime.SqlDriverAdapterFactory\n accelerateUrl?: never\n} | {\n /**\n * Prisma Accelerate URL allowing the client to connect through Accelerate instead of a direct database.\n */\n accelerateUrl: string\n adapter?: never\n}) & {\n /**\n * @default \"colorless\"\n */\n errorFormat?: ErrorFormat\n /**\n * @example\n * ```\n * // Shorthand for `emit: 'stdout'`\n * log: ['query', 'info', 'warn', 'error']\n * \n * // Emit as events only\n * log: [\n * { emit: 'event', level: 'query' },\n * { emit: 'event', level: 'info' },\n * { emit: 'event', level: 'warn' }\n * { emit: 'event', level: 'error' }\n * ]\n * \n * / Emit as events and log to stdout\n * og: [\n * { emit: 'stdout', level: 'query' },\n * { emit: 'stdout', level: 'info' },\n * { emit: 'stdout', level: 'warn' }\n * { emit: 'stdout', level: 'error' }\n * \n * ```\n * Read more in our [docs](https://pris.ly/d/logging).\n */\n log?: (LogLevel | LogDefinition)[]\n /**\n * The default values for transactionOptions\n * maxWait ?= 2000\n * timeout ?= 5000\n */\n transactionOptions?: {\n maxWait?: number\n timeout?: number\n isolationLevel?: TransactionIsolationLevel\n }\n /**\n * Global configuration for omitting model fields by default.\n * \n * @example\n * ```\n * const prisma = new PrismaClient({\n * omit: {\n * user: {\n * password: true\n * }\n * }\n * })\n * ```\n */\n omit?: GlobalOmitConfig\n /**\n * SQL commenter plugins that add metadata to SQL queries as comments.\n * Comments follow the sqlcommenter format: https://google.github.io/sqlcommenter/\n * \n * @example\n * ```\n * const prisma = new PrismaClient({\n * adapter,\n * comments: [\n * traceContext(),\n * queryInsights(),\n * ],\n * })\n * ```\n */\n comments?: runtime.SqlCommenterPlugin[]\n}\nexport type GlobalOmitConfig = {\n userWallet?: Prisma.UserWalletOmit\n wallet?: Prisma.WalletOmit\n frostMeta?: Prisma.FrostMetaOmit\n frostShare?: Prisma.FrostShareOmit\n auditLog?: Prisma.AuditLogOmit\n txLog?: Prisma.TxLogOmit\n spendingLimits?: Prisma.SpendingLimitsOmit\n spendingRecord?: Prisma.SpendingRecordOmit\n agentLifecycle?: Prisma.AgentLifecycleOmit\n agentStrategyConfig?: Prisma.AgentStrategyConfigOmit\n fraudAlert?: Prisma.FraudAlertOmit\n scheduledPayment?: Prisma.ScheduledPaymentOmit\n subscription?: Prisma.SubscriptionOmit\n notification?: Prisma.NotificationOmit\n chatBinding?: Prisma.ChatBindingOmit\n walletPersona?: Prisma.WalletPersonaOmit\n battle?: Prisma.BattleOmit\n strategy?: Prisma.StrategyOmit\n}\n\n/* Types for Logging */\nexport type LogLevel = 'info' | 'query' | 'warn' | 'error'\nexport type LogDefinition = {\n level: LogLevel\n emit: 'stdout' | 'event'\n}\n\nexport type CheckIsLogLevel<T> = T extends LogLevel ? T : never;\n\nexport type GetLogType<T> = CheckIsLogLevel<\n T extends LogDefinition ? T['level'] : T\n>;\n\nexport type GetEvents<T extends any[]> = T extends Array<LogLevel | LogDefinition>\n ? GetLogType<T[number]>\n : never;\n\nexport type QueryEvent = {\n timestamp: Date\n query: string\n params: string\n duration: number\n target: string\n}\n\nexport type LogEvent = {\n timestamp: Date\n message: string\n target: string\n}\n/* End Types for Logging */\n\n\nexport type PrismaAction =\n | 'findUnique'\n | 'findUniqueOrThrow'\n | 'findMany'\n | 'findFirst'\n | 'findFirstOrThrow'\n | 'create'\n | 'createMany'\n | 'createManyAndReturn'\n | 'update'\n | 'updateMany'\n | 'updateManyAndReturn'\n | 'upsert'\n | 'delete'\n | 'deleteMany'\n | 'executeRaw'\n | 'queryRaw'\n | 'aggregate'\n | 'count'\n | 'runCommandRaw'\n | 'findRaw'\n | 'groupBy'\n\n/**\n * `PrismaClient` proxy available in interactive transactions.\n */\nexport type TransactionClient = Omit<DefaultPrismaClient, runtime.ITXClientDenyList>\n\n","/**\n * Prisma client singleton — shared across the entire Next.js app.\n *\n * In development Next.js hot-reloads modules, which would create many Prisma\n * clients. Stashing on `globalThis` prevents that.\n *\n * Prisma v7 requires an explicit driver adapter.\n */\n\nimport { PrismaClient } from \"@/generated/prisma/client\";\nimport { PrismaPg } from \"@prisma/adapter-pg\";\n\nfunction createPrismaClient(): PrismaClient {\n const adapter = new PrismaPg({ connectionString: process.env.DATABASE_URL });\n return new PrismaClient({ adapter });\n}\n\nconst globalForPrisma = globalThis as unknown as { prisma?: PrismaClient };\n\nexport const prisma = globalForPrisma.prisma ?? createPrismaClient();\n\nif (process.env.NODE_ENV !== \"production\") {\n globalForPrisma.prisma = prisma;\n}\n","/**\n * FROST Key Manager — key generation, share encryption/storage, and loading.\n *\n * Generates FROST wallets via trusted dealer (Shamir secret sharing),\n * encrypts each participant's KeyPackage with AES-256-GCM + scrypt,\n * and stores them in PostgreSQL via Prisma.\n */\n\nimport crypto from \"node:crypto\";\nimport bs58 from \"bs58\";\nimport {\n generateKeys,\n createFrostConfig,\n split,\n recover,\n verifyKeyPackage,\n type FrostConfig,\n type Signers,\n type KeyPackage,\n} from \"@substrate-system/frost\";\n\n/** Ed25519 group element (compressed point). Compatible with library's internal GroupElement. */\nexport interface GroupElement {\n readonly point: Uint8Array;\n}\nimport type {\n FrostWalletMeta,\n SerializedKeyPackage,\n StoredShare,\n EncryptedPayload,\n} from \"./types.js\";\n\nimport { prisma } from \"@/lib/db\";\n\nconst ALGORITHM = \"aes-256-gcm\";\nconst IV_LENGTH = 12;\nconst SALT_LENGTH = 16;\n\nfunction deriveKey(encryptionKey: string, salt: Buffer): Buffer {\n return crypto.scryptSync(encryptionKey, salt, 32);\n}\n\nfunction encrypt(plaintext: Buffer, encryptionKey: string): EncryptedPayload {\n const salt = crypto.randomBytes(SALT_LENGTH);\n const key = deriveKey(encryptionKey, salt);\n const iv = crypto.randomBytes(IV_LENGTH);\n const cipher = crypto.createCipheriv(ALGORITHM, key, iv);\n const encrypted = Buffer.concat([cipher.update(plaintext), cipher.final()]);\n const tag = cipher.getAuthTag();\n return {\n iv: iv.toString(\"hex\"),\n salt: salt.toString(\"hex\"),\n tag: tag.toString(\"hex\"),\n data: encrypted.toString(\"hex\"),\n };\n}\n\nfunction decrypt(payload: EncryptedPayload, encryptionKey: string): Buffer {\n const salt = Buffer.from(payload.salt, \"hex\");\n const key = deriveKey(encryptionKey, salt);\n const iv = Buffer.from(payload.iv, \"hex\");\n const tag = Buffer.from(payload.tag, \"hex\");\n const data = Buffer.from(payload.data, \"hex\");\n const decipher = crypto.createDecipheriv(ALGORITHM, key, iv);\n decipher.setAuthTag(tag);\n return Buffer.concat([decipher.update(data), decipher.final()]);\n}\n\n// --- Serialization: KeyPackage ↔ JSON ---\n\nfunction serializeKeyPackage(kp: KeyPackage): SerializedKeyPackage {\n return {\n participantId: kp.participantId.id,\n keyShare: {\n participantId: kp.keyShare.participantId.id,\n privateShare: Buffer.from(kp.keyShare.privateShare.value).toString(\"hex\"),\n publicShare: Buffer.from(kp.keyShare.publicShare.point).toString(\"hex\"),\n },\n verificationKey: Buffer.from(kp.verificationKey.point).toString(\"hex\"),\n };\n}\n\nfunction deserializeKeyPackage(s: SerializedKeyPackage): KeyPackage {\n return {\n participantId: { id: s.participantId },\n keyShare: {\n participantId: { id: s.keyShare.participantId },\n privateShare: {\n value: new Uint8Array(Buffer.from(s.keyShare.privateShare, \"hex\")),\n },\n publicShare: {\n point: new Uint8Array(Buffer.from(s.keyShare.publicShare, \"hex\")),\n },\n },\n verificationKey: {\n point: new Uint8Array(Buffer.from(s.verificationKey, \"hex\")),\n },\n // Signing commitments are generated fresh each ceremony, not stored\n signingCommitments: [],\n };\n}\n\nexport interface GenerateWalletOptions {\n threshold?: number;\n totalShares?: number;\n labels?: string[];\n label?: string;\n /** Pre-generated wallet ID (must already exist in Wallet table when FrostMeta has a FK). */\n walletId?: string;\n}\n\nexport class FrostKeyManager {\n private encryptionKey: string;\n\n constructor(encryptionKey: string) {\n this.encryptionKey = encryptionKey;\n }\n\n /**\n * Generate a new FROST wallet with m-of-n threshold.\n * Uses trusted dealer key generation (Shamir secret sharing).\n */\n async generateWallet(options: GenerateWalletOptions = {}): Promise<FrostWalletMeta> {\n const threshold = options.threshold ?? 2;\n const totalShares = options.totalShares ?? 3;\n const labels =\n options.labels ?? this.defaultLabels(totalShares);\n\n if (threshold < 2) {\n throw new Error(\"Threshold must be at least 2\");\n }\n if (threshold > totalShares) {\n throw new Error(\"Threshold cannot exceed total shares\");\n }\n if (labels.length !== totalShares) {\n throw new Error(\n `Labels length (${labels.length}) must match totalShares (${totalShares})`,\n );\n }\n\n const config = createFrostConfig(threshold, totalShares);\n const { groupPublicKey, keyPackages } = generateKeys(config);\n\n const walletId = crypto.randomUUID().slice(0, 8);\n const groupPKBytes = groupPublicKey.point;\n const groupPKBase58 = bs58.encode(groupPKBytes);\n\n const now = new Date();\n\n // Save metadata\n await prisma.frostMeta.create({\n data: {\n walletId,\n groupPublicKey: groupPKBase58,\n threshold,\n totalShares,\n shareLabels: labels,\n label: options.label,\n createdAt: now,\n },\n });\n\n // Encrypt and save each share\n for (let i = 0; i < keyPackages.length; i++) {\n const serialized = serializeKeyPackage(keyPackages[i]);\n const plaintext = Buffer.from(JSON.stringify(serialized));\n const encrypted = encrypt(plaintext, this.encryptionKey);\n\n await prisma.frostShare.create({\n data: {\n walletId,\n participantId: keyPackages[i].participantId.id,\n label: labels[i],\n encIv: encrypted.iv,\n encSalt: encrypted.salt,\n encTag: encrypted.tag,\n encData: encrypted.data,\n },\n });\n }\n\n const meta: FrostWalletMeta = {\n id: walletId,\n type: \"frost\",\n groupPublicKey: groupPKBase58,\n threshold,\n totalShares,\n shareLabels: labels,\n createdAt: now.toISOString(),\n label: options.label,\n };\n\n return meta;\n }\n\n /**\n * Split an existing Ed25519 secret key into FROST shares.\n * The group public key will match the original key's public key.\n */\n async splitExistingKey(\n secretKey: Uint8Array,\n options: GenerateWalletOptions = {},\n ): Promise<FrostWalletMeta> {\n const threshold = options.threshold ?? 2;\n const totalShares = options.totalShares ?? 3;\n const labels =\n options.labels ?? this.defaultLabels(totalShares);\n\n if (threshold < 2) {\n throw new Error(\"Threshold must be at least 2\");\n }\n if (threshold > totalShares) {\n throw new Error(\"Threshold cannot exceed total shares\");\n }\n if (labels.length !== totalShares) {\n throw new Error(\n `Labels length (${labels.length}) must match totalShares (${totalShares})`,\n );\n }\n\n const config = createFrostConfig(threshold, totalShares);\n\n // For Solana keypairs, the secret key is 64 bytes (seed || public).\n // The library's split() handles 32-byte raw scalars directly.\n const seed =\n secretKey.length === 64 ? secretKey.slice(0, 32) : secretKey;\n\n const { groupPublicKey, keyPackages } = await split(seed, config);\n\n const walletId = options.walletId ?? crypto.randomUUID().slice(0, 8);\n const groupPKBase58 = bs58.encode(groupPublicKey.point);\n\n const now = new Date();\n\n // Save metadata\n await prisma.frostMeta.create({\n data: {\n walletId,\n groupPublicKey: groupPKBase58,\n threshold,\n totalShares,\n shareLabels: labels,\n label: options.label,\n createdAt: now,\n },\n });\n\n // Encrypt and save each share\n for (let i = 0; i < keyPackages.length; i++) {\n const serialized = serializeKeyPackage(keyPackages[i]);\n const plaintext = Buffer.from(JSON.stringify(serialized));\n const encrypted = encrypt(plaintext, this.encryptionKey);\n\n await prisma.frostShare.create({\n data: {\n walletId,\n participantId: keyPackages[i].participantId.id,\n label: labels[i],\n encIv: encrypted.iv,\n encSalt: encrypted.salt,\n encTag: encrypted.tag,\n encData: encrypted.data,\n },\n });\n }\n\n const meta: FrostWalletMeta = {\n id: walletId,\n type: \"frost\",\n groupPublicKey: groupPKBase58,\n threshold,\n totalShares,\n shareLabels: labels,\n createdAt: now.toISOString(),\n label: options.label,\n };\n\n return meta;\n }\n\n /**\n * Load a participant's KeyPackage (decrypted) for ceremony participation.\n */\n async loadShare(walletId: string, participantId: number): Promise<KeyPackage> {\n const record = await prisma.frostShare.findUnique({\n where: { walletId_participantId: { walletId, participantId } },\n });\n\n if (!record) {\n throw new Error(\n `Share not found: wallet=${walletId}, participant=${participantId}`,\n );\n }\n\n const encrypted: EncryptedPayload = {\n iv: record.encIv,\n salt: record.encSalt,\n tag: record.encTag,\n data: record.encData,\n };\n\n const plaintext = decrypt(encrypted, this.encryptionKey);\n const serialized: SerializedKeyPackage = JSON.parse(plaintext.toString());\n return deserializeKeyPackage(serialized);\n }\n\n /**\n * Load all shares for a wallet (for recovery or refresh).\n */\n async loadAllShares(walletId: string): Promise<KeyPackage[]> {\n const meta = await this.getWallet(walletId);\n const packages: KeyPackage[] = [];\n for (let i = 1; i <= meta.totalShares; i++) {\n packages.push(await this.loadShare(walletId, i));\n }\n return packages;\n }\n\n /**\n * Load the FrostConfig for a wallet.\n */\n async loadConfig(walletId: string): Promise<FrostConfig> {\n const meta = await this.getWallet(walletId);\n return createFrostConfig(meta.threshold, meta.totalShares);\n }\n\n /**\n * Load the group public key as a GroupElement.\n */\n async loadGroupPublicKey(walletId: string): Promise<GroupElement> {\n const meta = await this.getWallet(walletId);\n const bytes = bs58.decode(meta.groupPublicKey);\n return { point: new Uint8Array(bytes) };\n }\n\n /**\n * Get wallet metadata (no secrets).\n */\n async getWallet(walletId: string): Promise<FrostWalletMeta> {\n const record = await prisma.frostMeta.findUnique({\n where: { walletId },\n });\n\n if (!record) {\n throw new Error(`FROST wallet not found: ${walletId}`);\n }\n\n return {\n id: record.walletId,\n type: \"frost\",\n groupPublicKey: record.groupPublicKey,\n threshold: record.threshold,\n totalShares: record.totalShares,\n shareLabels: record.shareLabels,\n createdAt: record.createdAt.toISOString(),\n label: record.label ?? undefined,\n lastRefreshAt: record.lastRefreshAt?.toISOString(),\n };\n }\n\n /**\n * List all FROST wallets.\n */\n async listWallets(): Promise<FrostWalletMeta[]> {\n const records = await prisma.frostMeta.findMany();\n\n return records.map((record) => ({\n id: record.walletId,\n type: \"frost\" as const,\n groupPublicKey: record.groupPublicKey,\n threshold: record.threshold,\n totalShares: record.totalShares,\n shareLabels: record.shareLabels,\n createdAt: record.createdAt.toISOString(),\n label: record.label ?? undefined,\n lastRefreshAt: record.lastRefreshAt?.toISOString(),\n }));\n }\n\n /**\n * Delete a FROST wallet and all its shares.\n */\n async deleteWallet(walletId: string): Promise<boolean> {\n const record = await prisma.frostMeta.findUnique({\n where: { walletId },\n });\n\n if (!record) return false;\n\n // Delete all share records for this wallet\n await prisma.frostShare.deleteMany({\n where: { walletId },\n });\n\n // Delete metadata\n await prisma.frostMeta.delete({\n where: { walletId },\n });\n\n return true;\n }\n\n /**\n * Verify all shares for a wallet are valid.\n */\n async verifyShares(walletId: string): Promise<boolean> {\n const config = await this.loadConfig(walletId);\n const shares = await this.loadAllShares(walletId);\n return shares.every((kp) => verifyKeyPackage(kp, config));\n }\n\n /**\n * Recover the group secret from threshold shares and re-split\n * with fresh randomness. The group public key does NOT change.\n */\n async refreshShares(walletId: string): Promise<FrostWalletMeta> {\n const meta = await this.getWallet(walletId);\n const config = await this.loadConfig(walletId);\n const allShares = await this.loadAllShares(walletId);\n\n // Recover the secret from threshold shares\n const recoveredKey = recover(\n allShares.slice(0, meta.threshold),\n config,\n );\n\n // Re-split with fresh randomness\n const { groupPublicKey, keyPackages } = await split(recoveredKey, config);\n\n // Verify group public key is unchanged\n const newPKBase58 = bs58.encode(groupPublicKey.point);\n if (newPKBase58 !== meta.groupPublicKey) {\n throw new Error(\n \"Group public key changed during refresh — this should not happen\",\n );\n }\n\n // Update share records with new encrypted shares\n for (let i = 0; i < keyPackages.length; i++) {\n const serialized = serializeKeyPackage(keyPackages[i]);\n const plaintext = Buffer.from(JSON.stringify(serialized));\n const encrypted = encrypt(plaintext, this.encryptionKey);\n\n await prisma.frostShare.update({\n where: {\n walletId_participantId: {\n walletId,\n participantId: keyPackages[i].participantId.id,\n },\n },\n data: {\n encIv: encrypted.iv,\n encSalt: encrypted.salt,\n encTag: encrypted.tag,\n encData: encrypted.data,\n },\n });\n }\n\n // Update metadata\n const now = new Date();\n await prisma.frostMeta.update({\n where: { walletId },\n data: { lastRefreshAt: now },\n });\n\n const updatedMeta: FrostWalletMeta = {\n ...meta,\n lastRefreshAt: now.toISOString(),\n };\n\n return updatedMeta;\n }\n\n private defaultLabels(count: number): string[] {\n if (count === 3) return [\"agent\", \"policy\", \"backup\"];\n return Array.from({ length: count }, (_, i) => `participant-${i + 1}`);\n }\n}\n\n// Re-export for convenience\nexport { createFrostConfig, recover, verifyKeyPackage };\nexport type { FrostConfig, KeyPackage, Signers };\n","/**\n * FROST Signing Ceremony — orchestrates the full threshold signing process.\n *\n * 1. Load shares for participating signers\n * 2. (Optional) Run policy checks via PolicyParticipant\n * 3. Round 1: Each participant generates nonce commitments\n * 4. Coordinator creates signing package from commitments\n * 5. Round 2: Each participant generates their signature share\n * 6. Coordinator aggregates shares into a final Ed25519 signature\n * 7. Verify the signature before returning\n */\n\nimport {\n FrostSigner,\n FrostCoordinator,\n} from \"@substrate-system/frost\";\nimport { FrostKeyManager } from \"./key-manager.js\";\nimport type {\n SignCeremonyRequest,\n SignCeremonyResult,\n PolicyCheckResult,\n} from \"./types.js\";\n\n/** Optional policy checker — if provided, participantId 2 requires policy approval. */\nexport interface PolicyChecker {\n check(\n txMessage: Uint8Array,\n intent?: SignCeremonyRequest[\"intent\"],\n walletId?: string,\n ): PolicyCheckResult;\n}\n\n/** Default timeout for FROST signing ceremony rounds (ms). */\nconst CEREMONY_TIMEOUT_MS = 60_000;\n\nexport class FrostCeremony {\n private keyManager: FrostKeyManager;\n private policyChecker?: PolicyChecker;\n private timeoutMs: number;\n\n constructor(\n keyManager: FrostKeyManager,\n policyChecker?: PolicyChecker,\n timeoutMs = CEREMONY_TIMEOUT_MS,\n ) {\n this.keyManager = keyManager;\n this.policyChecker = policyChecker;\n this.timeoutMs = timeoutMs;\n }\n\n /**\n * Execute a complete FROST signing ceremony.\n *\n * Returns a standard 64-byte Ed25519 signature that Solana validators\n * verify identically to any single-signer signature.\n */\n async sign(request: SignCeremonyRequest): Promise<SignCeremonyResult> {\n const start = performance.now();\n\n const { walletId, message, participantIds, intent } = request;\n\n const config = await this.keyManager.loadConfig(walletId);\n const groupPK = await this.keyManager.loadGroupPublicKey(walletId);\n const meta = await this.keyManager.getWallet(walletId);\n\n // Validate participant count meets threshold\n if (participantIds.length < meta.threshold) {\n throw new Error(\n `Insufficient participants: need ${meta.threshold}, got ${participantIds.length}`,\n );\n }\n\n // Validate participant IDs are valid\n for (const pid of participantIds) {\n if (pid < 1 || pid > meta.totalShares) {\n throw new Error(\n `Invalid participant ID ${pid}: must be 1–${meta.totalShares}`,\n );\n }\n }\n\n // Policy check (if policy checker is configured and policy participant is involved)\n let policyCheck: PolicyCheckResult | undefined;\n if (this.policyChecker) {\n policyCheck = this.policyChecker.check(message, intent, walletId);\n if (!policyCheck.approved) {\n throw new FrostCeremonyAbortedError(\n `Policy check failed: ${policyCheck.reason ?? \"unknown reason\"}`,\n policyCheck,\n );\n }\n }\n\n // Load participating shares\n const keyPackages = await Promise.all(\n participantIds.map((pid) => this.keyManager.loadShare(walletId, pid)),\n );\n\n // Create signers and coordinator\n const signers = keyPackages.map((kp) => new FrostSigner(kp, config));\n const coordinator = new FrostCoordinator(config);\n\n // Round 1: Generate nonce commitments\n const round1Outputs = signers.map((s) => s.sign_round1());\n const commitmentShares = round1Outputs.map((out, i) => ({\n participantId: keyPackages[i].participantId,\n commitment: out.commitment,\n }));\n\n // Coordinator creates signing package\n const signingPackage = await coordinator.createSigningPackage(\n message,\n commitmentShares,\n keyPackages.map((kp) => kp.participantId),\n groupPK,\n );\n\n // Round 2: Generate signature shares (with timeout)\n const round2Promise = Promise.all(\n signers.map((signer, i) =>\n signer.sign_round2(signingPackage, round1Outputs[i].nonces, groupPK),\n ),\n );\n const round2Outputs = await Promise.race([\n round2Promise,\n new Promise<never>((_, reject) =>\n setTimeout(\n () => reject(new FrostCeremonyTimeoutError(this.timeoutMs)),\n this.timeoutMs,\n ),\n ),\n ]);\n const signatureShares = round2Outputs.map((out) => out.signatureShare);\n\n // Aggregate into final Ed25519 signature\n const signature = coordinator.aggregateSignatures(\n signingPackage,\n signatureShares,\n );\n\n // Verify the signature before returning\n const valid = await coordinator.verify(signature, message, groupPK);\n if (!valid) {\n throw new Error(\n \"FROST signature verification failed after aggregation\",\n );\n }\n\n const ceremonyDurationMs = Math.round(performance.now() - start);\n\n return {\n signature,\n groupPublicKey: new Uint8Array(groupPK.point),\n ceremonyDurationMs,\n policyCheck,\n };\n }\n}\n\n/**\n * Error thrown when a FROST ceremony is aborted due to policy failure.\n */\nexport class FrostCeremonyAbortedError extends Error {\n public readonly policyCheck: PolicyCheckResult;\n\n constructor(message: string, policyCheck: PolicyCheckResult) {\n super(message);\n this.name = \"FrostCeremonyAbortedError\";\n this.policyCheck = policyCheck;\n }\n}\n\n/**\n * Error thrown when a FROST ceremony exceeds the timeout duration.\n */\nexport class FrostCeremonyTimeoutError extends Error {\n public readonly timeoutMs: number;\n\n constructor(timeoutMs: number) {\n super(`FROST signing ceremony timed out after ${timeoutMs}ms`);\n this.name = \"FrostCeremonyTimeoutError\";\n this.timeoutMs = timeoutMs;\n }\n}\n","/**\n * FROST Solana Signer — adapts FROST threshold signing to Solana transactions.\n *\n * From Solana's perspective, this produces a normal Ed25519 signature.\n * Internally, it runs a full FROST ceremony (round1 → round2 → aggregate)\n * to produce each signature.\n */\n\nimport { PublicKey, Transaction } from \"@solana/web3.js\";\nimport { FrostCeremony } from \"./ceremony.js\";\nimport type { TransactionIntent } from \"./types.js\";\n\nexport class FrostSolanaSigner {\n public readonly publicKey: PublicKey;\n\n constructor(\n private ceremony: FrostCeremony,\n private walletId: string,\n private participantIds: number[],\n groupPublicKeyBytes: Uint8Array,\n ) {\n this.publicKey = new PublicKey(groupPublicKeyBytes);\n }\n\n /**\n * Sign a Solana transaction using a FROST ceremony.\n *\n * 1. Serialize the transaction message\n * 2. Run FROST ceremony on the message bytes\n * 3. Inject the 64-byte signature into the transaction\n */\n async signTransaction(\n tx: Transaction,\n intent?: TransactionIntent,\n ): Promise<Transaction> {\n const message = tx.serializeMessage();\n const { signature } = await this.ceremony.sign({\n walletId: this.walletId,\n message,\n participantIds: this.participantIds,\n intent,\n });\n tx.addSignature(this.publicKey, Buffer.from(signature));\n return tx;\n }\n\n /**\n * Sign raw message bytes (for non-transaction use cases).\n */\n async sign(message: Uint8Array): Promise<Uint8Array> {\n const { signature } = await this.ceremony.sign({\n walletId: this.walletId,\n message,\n participantIds: this.participantIds,\n });\n return signature;\n }\n}\n"],"mappings":"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","names":["PublicKey","bs58","crypto","Buffer","runtime","NullTypes","crypto","ALGORITHM","IV_LENGTH","SALT_LENGTH","deriveKey","crypto","encrypt","decrypt","config","config","crypto","bs58","PublicKey"]}