@elizaos/plugin-sql 2.0.0-alpha.8 → 2.0.0-beta.1

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.
Files changed (93) hide show
  1. package/README.md +24 -20
  2. package/package.json +79 -74
  3. package/src/dist/base.d.ts +1152 -0
  4. package/src/dist/browser/index.browser.d.ts +2 -0
  5. package/{dist → src/dist}/browser/index.browser.js +7492 -5015
  6. package/src/dist/browser/index.browser.js.map +72 -0
  7. package/src/dist/browser/index.d.ts +2 -0
  8. package/src/dist/cjs/index.d.ts +2 -0
  9. package/src/dist/cjs/index.node.cjs +9154 -0
  10. package/src/dist/cjs/index.node.cjs.map +70 -0
  11. package/src/dist/cjs/index.node.d.cts +2 -0
  12. package/src/dist/connector-credential-store.d.ts +48 -0
  13. package/src/dist/drizzle/index.d.ts +1 -0
  14. package/src/dist/drizzle/index.js +1 -0
  15. package/src/dist/index.d.ts +4 -0
  16. package/src/dist/index.js +2 -0
  17. package/src/dist/index.node.d.ts +20 -0
  18. package/src/dist/migration-service.d.ts +17 -0
  19. package/src/dist/migrations.d.ts +15 -0
  20. package/src/dist/node/index.d.ts +2 -0
  21. package/src/dist/node/index.node.d.ts +2 -0
  22. package/src/dist/node/index.node.js +9175 -0
  23. package/src/dist/node/index.node.js.map +70 -0
  24. package/src/dist/pg/adapter.d.ts +42 -0
  25. package/src/dist/pg/manager.d.ts +17 -0
  26. package/src/dist/pglite/adapter.d.ts +24 -0
  27. package/src/dist/pglite/errors.d.ts +20 -0
  28. package/src/dist/pglite/manager.d.ts +32 -0
  29. package/src/dist/rls.d.ts +13 -0
  30. package/src/dist/runtime-migrator/crypto-utils.d.ts +25 -0
  31. package/src/dist/runtime-migrator/drizzle-adapters/database-introspector.d.ts +58 -0
  32. package/src/dist/runtime-migrator/drizzle-adapters/diff-calculator.d.ts +77 -0
  33. package/src/dist/runtime-migrator/drizzle-adapters/snapshot-generator.d.ts +21 -0
  34. package/src/dist/runtime-migrator/drizzle-adapters/sql-generator.d.ts +38 -0
  35. package/src/dist/runtime-migrator/extension-manager.d.ts +6 -0
  36. package/src/dist/runtime-migrator/index.d.ts +8 -0
  37. package/src/dist/runtime-migrator/runtime-migrator.d.ts +95 -0
  38. package/src/dist/runtime-migrator/schema-transformer.d.ts +18 -0
  39. package/src/dist/runtime-migrator/storage/journal-storage.d.ts +10 -0
  40. package/src/dist/runtime-migrator/storage/migration-tracker.d.ts +13 -0
  41. package/src/dist/runtime-migrator/storage/snapshot-storage.d.ts +9 -0
  42. package/src/dist/runtime-migrator/types.d.ts +157 -0
  43. package/src/dist/schema/agent.d.ts +344 -0
  44. package/src/dist/schema/approvalRequests.d.ts +277 -0
  45. package/src/dist/schema/authAuditEvent.d.ts +153 -0
  46. package/src/dist/schema/authBootstrapJti.d.ts +49 -0
  47. package/src/dist/schema/authIdentity.d.ts +121 -0
  48. package/src/dist/schema/authOwnerBinding.d.ts +168 -0
  49. package/src/dist/schema/authOwnerLoginToken.d.ts +122 -0
  50. package/src/dist/schema/authSession.d.ts +225 -0
  51. package/src/dist/schema/cache.d.ts +97 -0
  52. package/src/dist/schema/channel.d.ts +177 -0
  53. package/src/dist/schema/channelParticipant.d.ts +41 -0
  54. package/src/dist/schema/component.d.ts +163 -0
  55. package/src/dist/schema/connectorAccounts.d.ts +981 -0
  56. package/src/dist/schema/embedding.d.ts +204 -0
  57. package/src/dist/schema/entity.d.ts +125 -0
  58. package/src/dist/schema/entityIdentity.d.ts +577 -0
  59. package/src/dist/schema/index.d.ts +35 -0
  60. package/src/dist/schema/index.js +1 -0
  61. package/src/dist/schema/log.d.ts +114 -0
  62. package/src/dist/schema/longTermMemories.d.ts +254 -0
  63. package/src/dist/schema/memory.d.ts +185 -0
  64. package/src/dist/schema/memoryAccessLogs.d.ts +109 -0
  65. package/src/dist/schema/message.d.ts +194 -0
  66. package/src/dist/schema/messageServer.d.ts +126 -0
  67. package/src/dist/schema/messageServerAgent.d.ts +41 -0
  68. package/src/dist/schema/pairingAllowlist.d.ts +113 -0
  69. package/src/dist/schema/pairingRequest.d.ts +147 -0
  70. package/src/dist/schema/participant.d.ts +114 -0
  71. package/src/dist/schema/relationship.d.ts +156 -0
  72. package/src/dist/schema/room.d.ts +195 -0
  73. package/src/dist/schema/server.d.ts +64 -0
  74. package/src/dist/schema/sessionSummaries.d.ts +273 -0
  75. package/src/dist/schema/tasks.d.ts +225 -0
  76. package/src/dist/schema/types.d.ts +68 -0
  77. package/src/dist/schema/world.d.ts +114 -0
  78. package/src/dist/services/advanced-memory-storage.d.ts +36 -0
  79. package/src/dist/stores/connectorAccount.store.d.ts +64 -0
  80. package/src/dist/stores/types.d.ts +25 -0
  81. package/src/dist/types.d.ts +13 -0
  82. package/src/dist/utils/string-to-uuid.d.ts +2 -0
  83. package/src/dist/utils.d.ts +4 -0
  84. package/src/dist/utils.node.d.ts +4 -0
  85. package/LICENSE +0 -21
  86. package/dist/browser/index.browser.js.map +0 -69
  87. package/dist/browser/index.d.ts +0 -2
  88. package/dist/browser/tsconfig.build.tsbuildinfo +0 -1
  89. package/dist/index.d.ts +0 -2
  90. package/dist/node/index.d.ts +0 -2
  91. package/dist/node/index.node.js +0 -21203
  92. package/dist/node/index.node.js.map +0 -187
  93. package/dist/node/tsconfig.build.node.tsbuildinfo +0 -1
@@ -1,69 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/schema/agent.ts", "../../src/schema/server.ts", "../../src/types.ts", "../../src/runtime-migrator/storage/migration-tracker.ts", "../../src/runtime-migrator/storage/journal-storage.ts", "../../src/runtime-migrator/storage/snapshot-storage.ts", "../../src/runtime-migrator/extension-manager.ts", "node:buffer", "node:util", "node:events", "node:stream", "node:crypto", "../../src/runtime-migrator/drizzle-adapters/snapshot-generator.ts", "../../src/runtime-migrator/drizzle-adapters/diff-calculator.ts", "../../src/runtime-migrator/drizzle-adapters/sql-generator.ts", "../../src/runtime-migrator/schema-transformer.ts", "../../src/runtime-migrator/drizzle-adapters/database-introspector.ts", "../../src/runtime-migrator/runtime-migrator.ts", "../../src/runtime-migrator/index.ts", "../../src/migrations.ts", "../../src/rls.ts", "../../src/migration-service.ts", "../../src/index.browser.ts", "../../src/pglite/adapter.ts", "../../src/base.ts", "../../src/schema/embedding.ts", "../../src/schema/memory.ts", "../../src/schema/entity.ts", "../../src/schema/room.ts", "../../src/schema/index.ts", "../../src/schema/cache.ts", "../../src/schema/component.ts", "../../src/schema/world.ts", "../../src/schema/log.ts", "../../src/schema/participant.ts", "../../src/schema/relationship.ts", "../../src/schema/tasks.ts", "../../src/schema/messageServer.ts", "../../src/schema/channel.ts", "../../src/schema/message.ts", "../../src/schema/channelParticipant.ts", "../../src/schema/messageServerAgent.ts", "../../src/utils.ts", "../../src/stores/agent.store.ts", "../../src/stores/memory.store.ts", "../../../../node_modules/uuid/dist/stringify.js", "../../../../node_modules/uuid/dist/rng.js", "../../../../node_modules/uuid/dist/native.js", "../../../../node_modules/uuid/dist/v4.js", "../../src/stores/room.store.ts", "../../src/stores/participant.store.ts", "../../src/stores/entity.store.ts", "../../src/stores/component.store.ts", "../../src/stores/relationship.store.ts", "../../src/stores/cache.store.ts", "../../src/stores/world.store.ts", "../../src/stores/task.store.ts", "../../src/stores/log.store.ts", "../../src/stores/messaging.store.ts", "../../src/pglite/manager.ts"],
4
- "sourcesContent": [
5
- "import type { MessageExample } from '@elizaos/core';\nimport { sql } from 'drizzle-orm';\nimport { boolean, jsonb, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';\n\n/**\n * Represents a table for storing agent data.\n *\n * @type {Table}\n */\nexport const agentTable = pgTable('agents', {\n id: uuid('id').primaryKey().defaultRandom(),\n enabled: boolean('enabled').default(true).notNull(),\n server_id: uuid('server_id'),\n createdAt: timestamp('created_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n\n updatedAt: timestamp('updated_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n\n // Character\n name: text('name').notNull(),\n username: text('username'),\n system: text('system').default(''),\n bio: jsonb('bio')\n .$type<string | string[]>()\n .default(sql`'[]'::jsonb`),\n messageExamples: jsonb('message_examples')\n .$type<MessageExample[][]>()\n .default(sql`'[]'::jsonb`)\n .notNull(),\n postExamples: jsonb('post_examples')\n .$type<string[]>()\n .default(sql`'[]'::jsonb`)\n .notNull(),\n topics: jsonb('topics')\n .$type<string[]>()\n .default(sql`'[]'::jsonb`)\n .notNull(),\n adjectives: jsonb('adjectives')\n .$type<string[]>()\n .default(sql`'[]'::jsonb`)\n .notNull(),\n knowledge: jsonb('knowledge')\n .$type<(string | { path: string; shared?: boolean })[]>()\n .default(sql`'[]'::jsonb`)\n .notNull(),\n plugins: jsonb('plugins')\n .$type<string[]>()\n .default(sql`'[]'::jsonb`)\n .notNull(),\n settings: jsonb('settings')\n .$type<{\n secrets?: { [key: string]: string | boolean | number };\n [key: string]: unknown;\n }>()\n .default(sql`'{}'::jsonb`)\n .notNull(),\n style: jsonb('style')\n .$type<{\n all?: string[];\n chat?: string[];\n post?: string[];\n }>()\n .default(sql`'{}'::jsonb`)\n .notNull(),\n});\n",
6
- "import { sql } from 'drizzle-orm';\nimport { pgTable, timestamp, uuid } from 'drizzle-orm/pg-core';\n\n/**\n * Represents a table for storing server data for RLS multi-tenant isolation.\n * Each server represents one ElizaOS instance in a multi-tenant deployment.\n *\n * @type {Table}\n */\nexport const serverTable = pgTable('servers', {\n id: uuid('id').primaryKey(),\n createdAt: timestamp('created_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n updatedAt: timestamp('updated_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n});\n",
7
- "import type { IDatabaseAdapter } from '@elizaos/core';\nimport type { NodePgDatabase } from 'drizzle-orm/node-postgres';\nimport type { PgliteDatabase } from 'drizzle-orm/pglite';\n\n/**\n * Represents a type that can be either a NodePgDatabase or a PgliteDatabase.\n */\nexport type DrizzleDatabase = NodePgDatabase | PgliteDatabase;\n\n/**\n * Interface for managing a database client.\n * @template T - The type of the database connection object.\n */\nexport interface IDatabaseClientManager<T> {\n initialize(): Promise<void>;\n getConnection(): T;\n close(): Promise<void>;\n}\n\n/**\n * Extract typed Drizzle database from adapter.\n * Use this instead of casting `adapter.db` everywhere.\n */\nexport function getDb(adapter: IDatabaseAdapter): DrizzleDatabase {\n return adapter.db as DrizzleDatabase;\n}\n\n/**\n * Type-safe row extraction from query results.\n * Avoids verbose `as unknown as T` casts.\n */\nexport function getRow<T>(result: { rows: unknown[] }, index = 0): T | undefined {\n return result.rows[index] as T | undefined;\n}\n",
8
- "import { sql } from 'drizzle-orm';\nimport type { DrizzleDB } from '../types';\nimport { getRow } from '../../types';\n\nexport class MigrationTracker {\n constructor(private db: DrizzleDB) {}\n\n async ensureSchema(): Promise<void> {\n await this.db.execute(sql`CREATE SCHEMA IF NOT EXISTS migrations`);\n }\n\n async ensureTables(): Promise<void> {\n // Ensure schema exists\n await this.ensureSchema();\n\n // Create migrations table (like Drizzle's __drizzle_migrations)\n await this.db.execute(sql`\n CREATE TABLE IF NOT EXISTS migrations._migrations (\n id SERIAL PRIMARY KEY,\n plugin_name TEXT NOT NULL,\n hash TEXT NOT NULL,\n created_at BIGINT NOT NULL\n )\n `);\n\n // Create journal table (replaces _journal.json)\n await this.db.execute(sql`\n CREATE TABLE IF NOT EXISTS migrations._journal (\n plugin_name TEXT PRIMARY KEY,\n version TEXT NOT NULL,\n dialect TEXT NOT NULL DEFAULT 'postgresql',\n entries JSONB NOT NULL DEFAULT '[]'\n )\n `);\n\n // Create snapshots table (replaces snapshot JSON files)\n await this.db.execute(sql`\n CREATE TABLE IF NOT EXISTS migrations._snapshots (\n id SERIAL PRIMARY KEY,\n plugin_name TEXT NOT NULL,\n idx INTEGER NOT NULL,\n snapshot JSONB NOT NULL,\n created_at TIMESTAMP DEFAULT NOW(),\n UNIQUE(plugin_name, idx)\n )\n `);\n }\n\n async getLastMigration(pluginName: string): Promise<{\n id: number;\n hash: string;\n created_at: string;\n } | null> {\n const result = await this.db.execute(\n sql`SELECT id, hash, created_at\n FROM migrations._migrations\n WHERE plugin_name = ${pluginName}\n ORDER BY created_at DESC\n LIMIT 1`\n );\n interface MigrationRow {\n id: number;\n hash: string;\n created_at: string;\n }\n return getRow<MigrationRow>(result) || null;\n }\n\n async recordMigration(pluginName: string, hash: string, createdAt: number): Promise<void> {\n await this.db.execute(\n sql`INSERT INTO migrations._migrations (plugin_name, hash, created_at) \n VALUES (${pluginName}, ${hash}, ${createdAt})`\n );\n }\n}\n",
9
- "import { sql } from 'drizzle-orm';\nimport type { DrizzleDB, Journal, JournalEntry } from '../types';\nimport { getRow } from '../../types';\n\nexport class JournalStorage {\n constructor(private db: DrizzleDB) {}\n\n async loadJournal(pluginName: string): Promise<Journal | null> {\n const result = await this.db.execute(\n sql`SELECT version, dialect, entries \n FROM migrations._journal \n WHERE plugin_name = ${pluginName}`\n );\n\n if (result.rows.length === 0) {\n return null;\n }\n\n interface JournalRow {\n version: string;\n dialect: string;\n entries: JournalEntry[];\n }\n const row = getRow<JournalRow>(result)!;\n return {\n version: row.version,\n dialect: row.dialect,\n entries: row.entries as JournalEntry[],\n };\n }\n\n async saveJournal(pluginName: string, journal: Journal): Promise<void> {\n await this.db.execute(\n sql`INSERT INTO migrations._journal (plugin_name, version, dialect, entries)\n VALUES (${pluginName}, ${journal.version}, ${journal.dialect}, ${JSON.stringify(journal.entries)}::jsonb)\n ON CONFLICT (plugin_name) \n DO UPDATE SET \n version = EXCLUDED.version,\n dialect = EXCLUDED.dialect,\n entries = EXCLUDED.entries`\n );\n }\n\n async addEntry(pluginName: string, entry: JournalEntry): Promise<void> {\n // First, get the current journal\n let journal = await this.loadJournal(pluginName);\n\n // If no journal exists, create a new one\n if (!journal) {\n journal = {\n version: '7', // Latest Drizzle version\n dialect: 'postgresql',\n entries: [],\n };\n }\n\n // Add the new entry\n journal.entries.push(entry);\n\n // Save the updated journal\n await this.saveJournal(pluginName, journal);\n }\n\n async getNextIdx(pluginName: string): Promise<number> {\n const journal = await this.loadJournal(pluginName);\n\n if (!journal || journal.entries.length === 0) {\n return 0;\n }\n\n const lastEntry = journal.entries[journal.entries.length - 1];\n return lastEntry.idx + 1;\n }\n\n async updateJournal(\n pluginName: string,\n idx: number,\n tag: string,\n breakpoints: boolean = true\n ): Promise<void> {\n const entry: JournalEntry = {\n idx,\n version: '7',\n when: Date.now(),\n tag,\n breakpoints,\n };\n\n await this.addEntry(pluginName, entry);\n }\n}\n",
10
- "import { sql } from 'drizzle-orm';\nimport type { DrizzleDB, SchemaSnapshot } from '../types';\n\nexport class SnapshotStorage {\n constructor(private db: DrizzleDB) {}\n\n async saveSnapshot(pluginName: string, idx: number, snapshot: SchemaSnapshot): Promise<void> {\n await this.db.execute(\n sql`INSERT INTO migrations._snapshots (plugin_name, idx, snapshot)\n VALUES (${pluginName}, ${idx}, ${JSON.stringify(snapshot)}::jsonb)\n ON CONFLICT (plugin_name, idx) \n DO UPDATE SET \n snapshot = EXCLUDED.snapshot,\n created_at = NOW()`\n );\n }\n\n async loadSnapshot(pluginName: string, idx: number): Promise<SchemaSnapshot | null> {\n const result = await this.db.execute(\n sql`SELECT snapshot \n FROM migrations._snapshots \n WHERE plugin_name = ${pluginName} AND idx = ${idx}`\n );\n\n if (result.rows.length === 0) {\n return null;\n }\n\n return result.rows[0].snapshot as SchemaSnapshot;\n }\n\n async getLatestSnapshot(pluginName: string): Promise<SchemaSnapshot | null> {\n const result = await this.db.execute(\n sql`SELECT snapshot \n FROM migrations._snapshots \n WHERE plugin_name = ${pluginName}\n ORDER BY idx DESC\n LIMIT 1`\n );\n\n if (result.rows.length === 0) {\n return null;\n }\n\n return result.rows[0].snapshot as SchemaSnapshot;\n }\n\n async getAllSnapshots(pluginName: string): Promise<SchemaSnapshot[]> {\n const result = await this.db.execute(\n sql`SELECT snapshot \n FROM migrations._snapshots \n WHERE plugin_name = ${pluginName}\n ORDER BY idx ASC`\n );\n\n return result.rows.map((row) => row.snapshot as SchemaSnapshot);\n }\n}\n",
11
- "import { sql } from 'drizzle-orm';\nimport { logger } from '@elizaos/core';\nimport type { DrizzleDB } from './types';\n\nexport class ExtensionManager {\n constructor(private db: DrizzleDB) {}\n\n async installRequiredExtensions(extensions: string[]): Promise<void> {\n for (const extension of extensions) {\n try {\n // Validate extension name to prevent SQL injection\n // Extension names should only contain alphanumeric characters, underscores, and hyphens\n if (!/^[a-zA-Z0-9_-]+$/.test(extension)) {\n logger.warn(\n { src: 'plugin:sql', extension },\n 'Invalid extension name - contains invalid characters'\n );\n continue;\n }\n\n // Use sql.identifier for safe escaping of SQL identifiers\n await this.db.execute(sql`CREATE EXTENSION IF NOT EXISTS ${sql.identifier(extension)}`);\n logger.debug({ src: 'plugin:sql', extension }, 'Extension installed');\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : String(error);\n logger.warn(\n { src: 'plugin:sql', extension, error: errorMessage },\n 'Could not install extension'\n );\n // Some extensions might not be available or already installed\n // This shouldn't stop the migration process\n }\n }\n }\n}\n",
12
- "var lookup=[],revLookup=[],code=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/\";for(i=0,len=code.length;i<len;++i)lookup[i]=code[i],revLookup[code.charCodeAt(i)]=i;var i,len;revLookup[45]=62;revLookup[95]=63;function getLens(b64){var len2=b64.length;if(len2%4>0)throw Error(\"Invalid string. Length must be a multiple of 4\");var validLen=b64.indexOf(\"=\");if(validLen===-1)validLen=len2;var placeHoldersLen=validLen===len2?0:4-validLen%4;return[validLen,placeHoldersLen]}function _byteLength(validLen,placeHoldersLen){return(validLen+placeHoldersLen)*3/4-placeHoldersLen}function toByteArray(b64){var tmp,lens=getLens(b64),validLen=lens[0],placeHoldersLen=lens[1],arr=new Uint8Array(_byteLength(validLen,placeHoldersLen)),curByte=0,len2=placeHoldersLen>0?validLen-4:validLen,i2;for(i2=0;i2<len2;i2+=4)tmp=revLookup[b64.charCodeAt(i2)]<<18|revLookup[b64.charCodeAt(i2+1)]<<12|revLookup[b64.charCodeAt(i2+2)]<<6|revLookup[b64.charCodeAt(i2+3)],arr[curByte++]=tmp>>16&255,arr[curByte++]=tmp>>8&255,arr[curByte++]=tmp&255;if(placeHoldersLen===2)tmp=revLookup[b64.charCodeAt(i2)]<<2|revLookup[b64.charCodeAt(i2+1)]>>4,arr[curByte++]=tmp&255;if(placeHoldersLen===1)tmp=revLookup[b64.charCodeAt(i2)]<<10|revLookup[b64.charCodeAt(i2+1)]<<4|revLookup[b64.charCodeAt(i2+2)]>>2,arr[curByte++]=tmp>>8&255,arr[curByte++]=tmp&255;return arr}function tripletToBase64(num){return lookup[num>>18&63]+lookup[num>>12&63]+lookup[num>>6&63]+lookup[num&63]}function encodeChunk(uint8,start,end){var tmp,output=[];for(var i2=start;i2<end;i2+=3)tmp=(uint8[i2]<<16&16711680)+(uint8[i2+1]<<8&65280)+(uint8[i2+2]&255),output.push(tripletToBase64(tmp));return output.join(\"\")}function fromByteArray(uint8){var tmp,len2=uint8.length,extraBytes=len2%3,parts=[],maxChunkLength=16383;for(var i2=0,len22=len2-extraBytes;i2<len22;i2+=maxChunkLength)parts.push(encodeChunk(uint8,i2,i2+maxChunkLength>len22?len22:i2+maxChunkLength));if(extraBytes===1)tmp=uint8[len2-1],parts.push(lookup[tmp>>2]+lookup[tmp<<4&63]+\"==\");else if(extraBytes===2)tmp=(uint8[len2-2]<<8)+uint8[len2-1],parts.push(lookup[tmp>>10]+lookup[tmp>>4&63]+lookup[tmp<<2&63]+\"=\");return parts.join(\"\")}function read(buffer,offset,isLE,mLen,nBytes){var e,m,eLen=nBytes*8-mLen-1,eMax=(1<<eLen)-1,eBias=eMax>>1,nBits=-7,i2=isLE?nBytes-1:0,d=isLE?-1:1,s=buffer[offset+i2];i2+=d,e=s&(1<<-nBits)-1,s>>=-nBits,nBits+=eLen;for(;nBits>0;e=e*256+buffer[offset+i2],i2+=d,nBits-=8);m=e&(1<<-nBits)-1,e>>=-nBits,nBits+=mLen;for(;nBits>0;m=m*256+buffer[offset+i2],i2+=d,nBits-=8);if(e===0)e=1-eBias;else if(e===eMax)return m?NaN:(s?-1:1)*(1/0);else m=m+Math.pow(2,mLen),e=e-eBias;return(s?-1:1)*m*Math.pow(2,e-mLen)}function write(buffer,value,offset,isLE,mLen,nBytes){var e,m,c,eLen=nBytes*8-mLen-1,eMax=(1<<eLen)-1,eBias=eMax>>1,rt=mLen===23?Math.pow(2,-24)-Math.pow(2,-77):0,i2=isLE?0:nBytes-1,d=isLE?1:-1,s=value<0||value===0&&1/value<0?1:0;if(value=Math.abs(value),isNaN(value)||value===1/0)m=isNaN(value)?1:0,e=eMax;else{if(e=Math.floor(Math.log(value)/Math.LN2),value*(c=Math.pow(2,-e))<1)e--,c*=2;if(e+eBias>=1)value+=rt/c;else value+=rt*Math.pow(2,1-eBias);if(value*c>=2)e++,c/=2;if(e+eBias>=eMax)m=0,e=eMax;else if(e+eBias>=1)m=(value*c-1)*Math.pow(2,mLen),e=e+eBias;else m=value*Math.pow(2,eBias-1)*Math.pow(2,mLen),e=0}for(;mLen>=8;buffer[offset+i2]=m&255,i2+=d,m/=256,mLen-=8);e=e<<mLen|m,eLen+=mLen;for(;eLen>0;buffer[offset+i2]=e&255,i2+=d,e/=256,eLen-=8);buffer[offset+i2-d]|=s*128}var customInspectSymbol=typeof Symbol===\"function\"&&typeof Symbol.for===\"function\"?Symbol.for(\"nodejs.util.inspect.custom\"):null,INSPECT_MAX_BYTES=50,kMaxLength=2147483647,kStringMaxLength=536870888,btoa=globalThis.btoa,atob=globalThis.atob,File=globalThis.File,Blob=globalThis.Blob,constants={MAX_LENGTH:kMaxLength,MAX_STRING_LENGTH:kStringMaxLength};function createBuffer(length){if(length>kMaxLength)throw RangeError('The value \"'+length+'\" is invalid for option \"size\"');let buf=new Uint8Array(length);return Object.setPrototypeOf(buf,Buffer.prototype),buf}function E(sym,getMessage,Base){return class extends Base{constructor(){super();Object.defineProperty(this,\"message\",{value:getMessage.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${sym}]`,this.stack,delete this.name}get code(){return sym}set code(value){Object.defineProperty(this,\"code\",{configurable:!0,enumerable:!0,value,writable:!0})}toString(){return`${this.name} [${sym}]: ${this.message}`}}}var ERR_BUFFER_OUT_OF_BOUNDS=E(\"ERR_BUFFER_OUT_OF_BOUNDS\",function(name){if(name)return`${name} is outside of buffer bounds`;return\"Attempt to access memory outside buffer bounds\"},RangeError),ERR_INVALID_ARG_TYPE=E(\"ERR_INVALID_ARG_TYPE\",function(name,actual){return`The \"${name}\" argument must be of type number. Received type ${typeof actual}`},TypeError),ERR_OUT_OF_RANGE=E(\"ERR_OUT_OF_RANGE\",function(str,range,input){let msg=`The value of \"${str}\" is out of range.`,received=input;if(Number.isInteger(input)&&Math.abs(input)>4294967296)received=addNumericalSeparator(String(input));else if(typeof input===\"bigint\"){if(received=String(input),input>BigInt(2)**BigInt(32)||input<-(BigInt(2)**BigInt(32)))received=addNumericalSeparator(received);received+=\"n\"}return msg+=` It must be ${range}. Received ${received}`,msg},RangeError);function Buffer(arg,encodingOrOffset,length){if(typeof arg===\"number\"){if(typeof encodingOrOffset===\"string\")throw TypeError('The \"string\" argument must be of type string. Received type number');return allocUnsafe(arg)}return from(arg,encodingOrOffset,length)}Object.defineProperty(Buffer.prototype,\"parent\",{enumerable:!0,get:function(){if(!Buffer.isBuffer(this))return;return this.buffer}});Object.defineProperty(Buffer.prototype,\"offset\",{enumerable:!0,get:function(){if(!Buffer.isBuffer(this))return;return this.byteOffset}});Buffer.poolSize=8192;function from(value,encodingOrOffset,length){if(typeof value===\"string\")return fromString(value,encodingOrOffset);if(ArrayBuffer.isView(value))return fromArrayView(value);if(value==null)throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof value);if(isInstance(value,ArrayBuffer)||value&&isInstance(value.buffer,ArrayBuffer))return fromArrayBuffer(value,encodingOrOffset,length);if(typeof SharedArrayBuffer<\"u\"&&(isInstance(value,SharedArrayBuffer)||value&&isInstance(value.buffer,SharedArrayBuffer)))return fromArrayBuffer(value,encodingOrOffset,length);if(typeof value===\"number\")throw TypeError('The \"value\" argument must not be of type number. Received type number');let valueOf=value.valueOf&&value.valueOf();if(valueOf!=null&&valueOf!==value)return Buffer.from(valueOf,encodingOrOffset,length);let b=fromObject(value);if(b)return b;if(typeof Symbol<\"u\"&&Symbol.toPrimitive!=null&&typeof value[Symbol.toPrimitive]===\"function\")return Buffer.from(value[Symbol.toPrimitive](\"string\"),encodingOrOffset,length);throw TypeError(\"The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type \"+typeof value)}Buffer.from=function(value,encodingOrOffset,length){return from(value,encodingOrOffset,length)};Object.setPrototypeOf(Buffer.prototype,Uint8Array.prototype);Object.setPrototypeOf(Buffer,Uint8Array);function assertSize(size){if(typeof size!==\"number\")throw TypeError('\"size\" argument must be of type number');else if(size<0)throw RangeError('The value \"'+size+'\" is invalid for option \"size\"')}function alloc(size,fill,encoding){if(assertSize(size),size<=0)return createBuffer(size);if(fill!==void 0)return typeof encoding===\"string\"?createBuffer(size).fill(fill,encoding):createBuffer(size).fill(fill);return createBuffer(size)}Buffer.alloc=function(size,fill,encoding){return alloc(size,fill,encoding)};function allocUnsafe(size){return assertSize(size),createBuffer(size<0?0:checked(size)|0)}Buffer.allocUnsafe=function(size){return allocUnsafe(size)};Buffer.allocUnsafeSlow=function(size){return allocUnsafe(size)};function fromString(string,encoding){if(typeof encoding!==\"string\"||encoding===\"\")encoding=\"utf8\";if(!Buffer.isEncoding(encoding))throw TypeError(\"Unknown encoding: \"+encoding);let length=byteLength(string,encoding)|0,buf=createBuffer(length),actual=buf.write(string,encoding);if(actual!==length)buf=buf.slice(0,actual);return buf}function fromArrayLike(array){let length=array.length<0?0:checked(array.length)|0,buf=createBuffer(length);for(let i2=0;i2<length;i2+=1)buf[i2]=array[i2]&255;return buf}function fromArrayView(arrayView){if(isInstance(arrayView,Uint8Array)){let copy=new Uint8Array(arrayView);return fromArrayBuffer(copy.buffer,copy.byteOffset,copy.byteLength)}return fromArrayLike(arrayView)}function fromArrayBuffer(array,byteOffset,length){if(byteOffset<0||array.byteLength<byteOffset)throw RangeError('\"offset\" is outside of buffer bounds');if(array.byteLength<byteOffset+(length||0))throw RangeError('\"length\" is outside of buffer bounds');let buf;if(byteOffset===void 0&&length===void 0)buf=new Uint8Array(array);else if(length===void 0)buf=new Uint8Array(array,byteOffset);else buf=new Uint8Array(array,byteOffset,length);return Object.setPrototypeOf(buf,Buffer.prototype),buf}function fromObject(obj){if(Buffer.isBuffer(obj)){let len2=checked(obj.length)|0,buf=createBuffer(len2);if(buf.length===0)return buf;return obj.copy(buf,0,0,len2),buf}if(obj.length!==void 0){if(typeof obj.length!==\"number\"||Number.isNaN(obj.length))return createBuffer(0);return fromArrayLike(obj)}if(obj.type===\"Buffer\"&&Array.isArray(obj.data))return fromArrayLike(obj.data)}function checked(length){if(length>=kMaxLength)throw RangeError(\"Attempt to allocate Buffer larger than maximum size: 0x\"+kMaxLength.toString(16)+\" bytes\");return length|0}Buffer.isBuffer=function(b){return b!=null&&b._isBuffer===!0&&b!==Buffer.prototype};Buffer.compare=function(a,b){if(isInstance(a,Uint8Array))a=Buffer.from(a,a.offset,a.byteLength);if(isInstance(b,Uint8Array))b=Buffer.from(b,b.offset,b.byteLength);if(!Buffer.isBuffer(a)||!Buffer.isBuffer(b))throw TypeError('The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array');if(a===b)return 0;let x=a.length,y=b.length;for(let i2=0,len2=Math.min(x,y);i2<len2;++i2)if(a[i2]!==b[i2]){x=a[i2],y=b[i2];break}if(x<y)return-1;if(y<x)return 1;return 0};Buffer.isEncoding=function(encoding){switch(String(encoding).toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"latin1\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return!0;default:return!1}};Buffer.concat=function(list,length){if(!Array.isArray(list))throw TypeError('\"list\" argument must be an Array of Buffers');if(list.length===0)return Buffer.alloc(0);let i2;if(length===void 0){length=0;for(i2=0;i2<list.length;++i2)length+=list[i2].length}let buffer=Buffer.allocUnsafe(length),pos=0;for(i2=0;i2<list.length;++i2){let buf=list[i2];if(isInstance(buf,Uint8Array))if(pos+buf.length>buffer.length){if(!Buffer.isBuffer(buf))buf=Buffer.from(buf);buf.copy(buffer,pos)}else Uint8Array.prototype.set.call(buffer,buf,pos);else if(!Buffer.isBuffer(buf))throw TypeError('\"list\" argument must be an Array of Buffers');else buf.copy(buffer,pos);pos+=buf.length}return buffer};function byteLength(string,encoding){if(Buffer.isBuffer(string))return string.length;if(ArrayBuffer.isView(string)||isInstance(string,ArrayBuffer))return string.byteLength;if(typeof string!==\"string\")throw TypeError('The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof string);let len2=string.length,mustMatch=arguments.length>2&&arguments[2]===!0;if(!mustMatch&&len2===0)return 0;let loweredCase=!1;for(;;)switch(encoding){case\"ascii\":case\"latin1\":case\"binary\":return len2;case\"utf8\":case\"utf-8\":return utf8ToBytes(string).length;case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return len2*2;case\"hex\":return len2>>>1;case\"base64\":return base64ToBytes(string).length;default:if(loweredCase)return mustMatch?-1:utf8ToBytes(string).length;encoding=(\"\"+encoding).toLowerCase(),loweredCase=!0}}Buffer.byteLength=byteLength;function slowToString(encoding,start,end){let loweredCase=!1;if(start===void 0||start<0)start=0;if(start>this.length)return\"\";if(end===void 0||end>this.length)end=this.length;if(end<=0)return\"\";if(end>>>=0,start>>>=0,end<=start)return\"\";if(!encoding)encoding=\"utf8\";while(!0)switch(encoding){case\"hex\":return hexSlice(this,start,end);case\"utf8\":case\"utf-8\":return utf8Slice(this,start,end);case\"ascii\":return asciiSlice(this,start,end);case\"latin1\":case\"binary\":return latin1Slice(this,start,end);case\"base64\":return base64Slice(this,start,end);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return utf16leSlice(this,start,end);default:if(loweredCase)throw TypeError(\"Unknown encoding: \"+encoding);encoding=(encoding+\"\").toLowerCase(),loweredCase=!0}}Buffer.prototype._isBuffer=!0;function swap(b,n,m){let i2=b[n];b[n]=b[m],b[m]=i2}Buffer.prototype.swap16=function(){let len2=this.length;if(len2%2!==0)throw RangeError(\"Buffer size must be a multiple of 16-bits\");for(let i2=0;i2<len2;i2+=2)swap(this,i2,i2+1);return this};Buffer.prototype.swap32=function(){let len2=this.length;if(len2%4!==0)throw RangeError(\"Buffer size must be a multiple of 32-bits\");for(let i2=0;i2<len2;i2+=4)swap(this,i2,i2+3),swap(this,i2+1,i2+2);return this};Buffer.prototype.swap64=function(){let len2=this.length;if(len2%8!==0)throw RangeError(\"Buffer size must be a multiple of 64-bits\");for(let i2=0;i2<len2;i2+=8)swap(this,i2,i2+7),swap(this,i2+1,i2+6),swap(this,i2+2,i2+5),swap(this,i2+3,i2+4);return this};Buffer.prototype.toString=function(){let length=this.length;if(length===0)return\"\";if(arguments.length===0)return utf8Slice(this,0,length);return slowToString.apply(this,arguments)};Buffer.prototype.toLocaleString=Buffer.prototype.toString;Buffer.prototype.equals=function(b){if(!Buffer.isBuffer(b))throw TypeError(\"Argument must be a Buffer\");if(this===b)return!0;return Buffer.compare(this,b)===0};Buffer.prototype.inspect=function(){let str=\"\",max=INSPECT_MAX_BYTES;if(str=this.toString(\"hex\",0,max).replace(/(.{2})/g,\"$1 \").trim(),this.length>max)str+=\" ... \";return\"<Buffer \"+str+\">\"};if(customInspectSymbol)Buffer.prototype[customInspectSymbol]=Buffer.prototype.inspect;Buffer.prototype.compare=function(target,start,end,thisStart,thisEnd){if(isInstance(target,Uint8Array))target=Buffer.from(target,target.offset,target.byteLength);if(!Buffer.isBuffer(target))throw TypeError('The \"target\" argument must be one of type Buffer or Uint8Array. Received type '+typeof target);if(start===void 0)start=0;if(end===void 0)end=target?target.length:0;if(thisStart===void 0)thisStart=0;if(thisEnd===void 0)thisEnd=this.length;if(start<0||end>target.length||thisStart<0||thisEnd>this.length)throw RangeError(\"out of range index\");if(thisStart>=thisEnd&&start>=end)return 0;if(thisStart>=thisEnd)return-1;if(start>=end)return 1;if(start>>>=0,end>>>=0,thisStart>>>=0,thisEnd>>>=0,this===target)return 0;let x=thisEnd-thisStart,y=end-start,len2=Math.min(x,y),thisCopy=this.slice(thisStart,thisEnd),targetCopy=target.slice(start,end);for(let i2=0;i2<len2;++i2)if(thisCopy[i2]!==targetCopy[i2]){x=thisCopy[i2],y=targetCopy[i2];break}if(x<y)return-1;if(y<x)return 1;return 0};function bidirectionalIndexOf(buffer,val,byteOffset,encoding,dir){if(buffer.length===0)return-1;if(typeof byteOffset===\"string\")encoding=byteOffset,byteOffset=0;else if(byteOffset>2147483647)byteOffset=2147483647;else if(byteOffset<-2147483648)byteOffset=-2147483648;if(byteOffset=+byteOffset,Number.isNaN(byteOffset))byteOffset=dir?0:buffer.length-1;if(byteOffset<0)byteOffset=buffer.length+byteOffset;if(byteOffset>=buffer.length)if(dir)return-1;else byteOffset=buffer.length-1;else if(byteOffset<0)if(dir)byteOffset=0;else return-1;if(typeof val===\"string\")val=Buffer.from(val,encoding);if(Buffer.isBuffer(val)){if(val.length===0)return-1;return arrayIndexOf(buffer,val,byteOffset,encoding,dir)}else if(typeof val===\"number\"){if(val=val&255,typeof Uint8Array.prototype.indexOf===\"function\")if(dir)return Uint8Array.prototype.indexOf.call(buffer,val,byteOffset);else return Uint8Array.prototype.lastIndexOf.call(buffer,val,byteOffset);return arrayIndexOf(buffer,[val],byteOffset,encoding,dir)}throw TypeError(\"val must be string, number or Buffer\")}function arrayIndexOf(arr,val,byteOffset,encoding,dir){let indexSize=1,arrLength=arr.length,valLength=val.length;if(encoding!==void 0){if(encoding=String(encoding).toLowerCase(),encoding===\"ucs2\"||encoding===\"ucs-2\"||encoding===\"utf16le\"||encoding===\"utf-16le\"){if(arr.length<2||val.length<2)return-1;indexSize=2,arrLength/=2,valLength/=2,byteOffset/=2}}function read2(buf,i3){if(indexSize===1)return buf[i3];else return buf.readUInt16BE(i3*indexSize)}let i2;if(dir){let foundIndex=-1;for(i2=byteOffset;i2<arrLength;i2++)if(read2(arr,i2)===read2(val,foundIndex===-1?0:i2-foundIndex)){if(foundIndex===-1)foundIndex=i2;if(i2-foundIndex+1===valLength)return foundIndex*indexSize}else{if(foundIndex!==-1)i2-=i2-foundIndex;foundIndex=-1}}else{if(byteOffset+valLength>arrLength)byteOffset=arrLength-valLength;for(i2=byteOffset;i2>=0;i2--){let found=!0;for(let j=0;j<valLength;j++)if(read2(arr,i2+j)!==read2(val,j)){found=!1;break}if(found)return i2}}return-1}Buffer.prototype.includes=function(val,byteOffset,encoding){return this.indexOf(val,byteOffset,encoding)!==-1};Buffer.prototype.indexOf=function(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,!0)};Buffer.prototype.lastIndexOf=function(val,byteOffset,encoding){return bidirectionalIndexOf(this,val,byteOffset,encoding,!1)};function hexWrite(buf,string,offset,length){offset=Number(offset)||0;let remaining=buf.length-offset;if(!length)length=remaining;else if(length=Number(length),length>remaining)length=remaining;let strLen=string.length;if(length>strLen/2)length=strLen/2;let i2;for(i2=0;i2<length;++i2){let parsed=parseInt(string.substr(i2*2,2),16);if(Number.isNaN(parsed))return i2;buf[offset+i2]=parsed}return i2}function utf8Write(buf,string,offset,length){return blitBuffer(utf8ToBytes(string,buf.length-offset),buf,offset,length)}function asciiWrite(buf,string,offset,length){return blitBuffer(asciiToBytes(string),buf,offset,length)}function base64Write(buf,string,offset,length){return blitBuffer(base64ToBytes(string),buf,offset,length)}function ucs2Write(buf,string,offset,length){return blitBuffer(utf16leToBytes(string,buf.length-offset),buf,offset,length)}Buffer.prototype.write=function(string,offset,length,encoding){if(offset===void 0)encoding=\"utf8\",length=this.length,offset=0;else if(length===void 0&&typeof offset===\"string\")encoding=offset,length=this.length,offset=0;else if(isFinite(offset))if(offset=offset>>>0,isFinite(length)){if(length=length>>>0,encoding===void 0)encoding=\"utf8\"}else encoding=length,length=void 0;else throw Error(\"Buffer.write(string, encoding, offset[, length]) is no longer supported\");let remaining=this.length-offset;if(length===void 0||length>remaining)length=remaining;if(string.length>0&&(length<0||offset<0)||offset>this.length)throw RangeError(\"Attempt to write outside buffer bounds\");if(!encoding)encoding=\"utf8\";let loweredCase=!1;for(;;)switch(encoding){case\"hex\":return hexWrite(this,string,offset,length);case\"utf8\":case\"utf-8\":return utf8Write(this,string,offset,length);case\"ascii\":case\"latin1\":case\"binary\":return asciiWrite(this,string,offset,length);case\"base64\":return base64Write(this,string,offset,length);case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return ucs2Write(this,string,offset,length);default:if(loweredCase)throw TypeError(\"Unknown encoding: \"+encoding);encoding=(\"\"+encoding).toLowerCase(),loweredCase=!0}};Buffer.prototype.toJSON=function(){return{type:\"Buffer\",data:Array.prototype.slice.call(this._arr||this,0)}};function base64Slice(buf,start,end){if(start===0&&end===buf.length)return fromByteArray(buf);else return fromByteArray(buf.slice(start,end))}function utf8Slice(buf,start,end){end=Math.min(buf.length,end);let res=[],i2=start;while(i2<end){let firstByte=buf[i2],codePoint=null,bytesPerSequence=firstByte>239?4:firstByte>223?3:firstByte>191?2:1;if(i2+bytesPerSequence<=end){let secondByte,thirdByte,fourthByte,tempCodePoint;switch(bytesPerSequence){case 1:if(firstByte<128)codePoint=firstByte;break;case 2:if(secondByte=buf[i2+1],(secondByte&192)===128){if(tempCodePoint=(firstByte&31)<<6|secondByte&63,tempCodePoint>127)codePoint=tempCodePoint}break;case 3:if(secondByte=buf[i2+1],thirdByte=buf[i2+2],(secondByte&192)===128&&(thirdByte&192)===128){if(tempCodePoint=(firstByte&15)<<12|(secondByte&63)<<6|thirdByte&63,tempCodePoint>2047&&(tempCodePoint<55296||tempCodePoint>57343))codePoint=tempCodePoint}break;case 4:if(secondByte=buf[i2+1],thirdByte=buf[i2+2],fourthByte=buf[i2+3],(secondByte&192)===128&&(thirdByte&192)===128&&(fourthByte&192)===128){if(tempCodePoint=(firstByte&15)<<18|(secondByte&63)<<12|(thirdByte&63)<<6|fourthByte&63,tempCodePoint>65535&&tempCodePoint<1114112)codePoint=tempCodePoint}}}if(codePoint===null)codePoint=65533,bytesPerSequence=1;else if(codePoint>65535)codePoint-=65536,res.push(codePoint>>>10&1023|55296),codePoint=56320|codePoint&1023;res.push(codePoint),i2+=bytesPerSequence}return decodeCodePointsArray(res)}var MAX_ARGUMENTS_LENGTH=4096;function decodeCodePointsArray(codePoints){let len2=codePoints.length;if(len2<=MAX_ARGUMENTS_LENGTH)return String.fromCharCode.apply(String,codePoints);let res=\"\",i2=0;while(i2<len2)res+=String.fromCharCode.apply(String,codePoints.slice(i2,i2+=MAX_ARGUMENTS_LENGTH));return res}function asciiSlice(buf,start,end){let ret=\"\";end=Math.min(buf.length,end);for(let i2=start;i2<end;++i2)ret+=String.fromCharCode(buf[i2]&127);return ret}function latin1Slice(buf,start,end){let ret=\"\";end=Math.min(buf.length,end);for(let i2=start;i2<end;++i2)ret+=String.fromCharCode(buf[i2]);return ret}function hexSlice(buf,start,end){let len2=buf.length;if(!start||start<0)start=0;if(!end||end<0||end>len2)end=len2;let out=\"\";for(let i2=start;i2<end;++i2)out+=hexSliceLookupTable[buf[i2]];return out}function utf16leSlice(buf,start,end){let bytes=buf.slice(start,end),res=\"\";for(let i2=0;i2<bytes.length-1;i2+=2)res+=String.fromCharCode(bytes[i2]+bytes[i2+1]*256);return res}Buffer.prototype.slice=function(start,end){let len2=this.length;if(start=~~start,end=end===void 0?len2:~~end,start<0){if(start+=len2,start<0)start=0}else if(start>len2)start=len2;if(end<0){if(end+=len2,end<0)end=0}else if(end>len2)end=len2;if(end<start)end=start;let newBuf=this.subarray(start,end);return Object.setPrototypeOf(newBuf,Buffer.prototype),newBuf};function checkOffset(offset,ext,length){if(offset%1!==0||offset<0)throw RangeError(\"offset is not uint\");if(offset+ext>length)throw RangeError(\"Trying to access beyond buffer length\")}Buffer.prototype.readUintLE=Buffer.prototype.readUIntLE=function(offset,byteLength2,noAssert){if(offset=offset>>>0,byteLength2=byteLength2>>>0,!noAssert)checkOffset(offset,byteLength2,this.length);let val=this[offset],mul=1,i2=0;while(++i2<byteLength2&&(mul*=256))val+=this[offset+i2]*mul;return val};Buffer.prototype.readUintBE=Buffer.prototype.readUIntBE=function(offset,byteLength2,noAssert){if(offset=offset>>>0,byteLength2=byteLength2>>>0,!noAssert)checkOffset(offset,byteLength2,this.length);let val=this[offset+--byteLength2],mul=1;while(byteLength2>0&&(mul*=256))val+=this[offset+--byteLength2]*mul;return val};Buffer.prototype.readUint8=Buffer.prototype.readUInt8=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,1,this.length);return this[offset]};Buffer.prototype.readUint16LE=Buffer.prototype.readUInt16LE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,2,this.length);return this[offset]|this[offset+1]<<8};Buffer.prototype.readUint16BE=Buffer.prototype.readUInt16BE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,2,this.length);return this[offset]<<8|this[offset+1]};Buffer.prototype.readUint32LE=Buffer.prototype.readUInt32LE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,4,this.length);return(this[offset]|this[offset+1]<<8|this[offset+2]<<16)+this[offset+3]*16777216};Buffer.prototype.readUint32BE=Buffer.prototype.readUInt32BE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,4,this.length);return this[offset]*16777216+(this[offset+1]<<16|this[offset+2]<<8|this[offset+3])};Buffer.prototype.readBigUInt64LE=defineBigIntMethod(function(offset){offset=offset>>>0,validateNumber(offset,\"offset\");let first=this[offset],last=this[offset+7];if(first===void 0||last===void 0)boundsError(offset,this.length-8);let lo=first+this[++offset]*256+this[++offset]*65536+this[++offset]*16777216,hi=this[++offset]+this[++offset]*256+this[++offset]*65536+last*16777216;return BigInt(lo)+(BigInt(hi)<<BigInt(32))});Buffer.prototype.readBigUInt64BE=defineBigIntMethod(function(offset){offset=offset>>>0,validateNumber(offset,\"offset\");let first=this[offset],last=this[offset+7];if(first===void 0||last===void 0)boundsError(offset,this.length-8);let hi=first*16777216+this[++offset]*65536+this[++offset]*256+this[++offset],lo=this[++offset]*16777216+this[++offset]*65536+this[++offset]*256+last;return(BigInt(hi)<<BigInt(32))+BigInt(lo)});Buffer.prototype.readIntLE=function(offset,byteLength2,noAssert){if(offset=offset>>>0,byteLength2=byteLength2>>>0,!noAssert)checkOffset(offset,byteLength2,this.length);let val=this[offset],mul=1,i2=0;while(++i2<byteLength2&&(mul*=256))val+=this[offset+i2]*mul;if(mul*=128,val>=mul)val-=Math.pow(2,8*byteLength2);return val};Buffer.prototype.readIntBE=function(offset,byteLength2,noAssert){if(offset=offset>>>0,byteLength2=byteLength2>>>0,!noAssert)checkOffset(offset,byteLength2,this.length);let i2=byteLength2,mul=1,val=this[offset+--i2];while(i2>0&&(mul*=256))val+=this[offset+--i2]*mul;if(mul*=128,val>=mul)val-=Math.pow(2,8*byteLength2);return val};Buffer.prototype.readInt8=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,1,this.length);if(!(this[offset]&128))return this[offset];return(255-this[offset]+1)*-1};Buffer.prototype.readInt16LE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,2,this.length);let val=this[offset]|this[offset+1]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt16BE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,2,this.length);let val=this[offset+1]|this[offset]<<8;return val&32768?val|4294901760:val};Buffer.prototype.readInt32LE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,4,this.length);return this[offset]|this[offset+1]<<8|this[offset+2]<<16|this[offset+3]<<24};Buffer.prototype.readInt32BE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,4,this.length);return this[offset]<<24|this[offset+1]<<16|this[offset+2]<<8|this[offset+3]};Buffer.prototype.readBigInt64LE=defineBigIntMethod(function(offset){offset=offset>>>0,validateNumber(offset,\"offset\");let first=this[offset],last=this[offset+7];if(first===void 0||last===void 0)boundsError(offset,this.length-8);let val=this[offset+4]+this[offset+5]*256+this[offset+6]*65536+(last<<24);return(BigInt(val)<<BigInt(32))+BigInt(first+this[++offset]*256+this[++offset]*65536+this[++offset]*16777216)});Buffer.prototype.readBigInt64BE=defineBigIntMethod(function(offset){offset=offset>>>0,validateNumber(offset,\"offset\");let first=this[offset],last=this[offset+7];if(first===void 0||last===void 0)boundsError(offset,this.length-8);let val=(first<<24)+this[++offset]*65536+this[++offset]*256+this[++offset];return(BigInt(val)<<BigInt(32))+BigInt(this[++offset]*16777216+this[++offset]*65536+this[++offset]*256+last)});Buffer.prototype.readFloatLE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,4,this.length);return read(this,offset,!0,23,4)};Buffer.prototype.readFloatBE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,4,this.length);return read(this,offset,!1,23,4)};Buffer.prototype.readDoubleLE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,8,this.length);return read(this,offset,!0,52,8)};Buffer.prototype.readDoubleBE=function(offset,noAssert){if(offset=offset>>>0,!noAssert)checkOffset(offset,8,this.length);return read(this,offset,!1,52,8)};function checkInt(buf,value,offset,ext,max,min){if(!Buffer.isBuffer(buf))throw TypeError('\"buffer\" argument must be a Buffer instance');if(value>max||value<min)throw RangeError('\"value\" argument is out of bounds');if(offset+ext>buf.length)throw RangeError(\"Index out of range\")}Buffer.prototype.writeUintLE=Buffer.prototype.writeUIntLE=function(value,offset,byteLength2,noAssert){if(value=+value,offset=offset>>>0,byteLength2=byteLength2>>>0,!noAssert){let maxBytes=Math.pow(2,8*byteLength2)-1;checkInt(this,value,offset,byteLength2,maxBytes,0)}let mul=1,i2=0;this[offset]=value&255;while(++i2<byteLength2&&(mul*=256))this[offset+i2]=value/mul&255;return offset+byteLength2};Buffer.prototype.writeUintBE=Buffer.prototype.writeUIntBE=function(value,offset,byteLength2,noAssert){if(value=+value,offset=offset>>>0,byteLength2=byteLength2>>>0,!noAssert){let maxBytes=Math.pow(2,8*byteLength2)-1;checkInt(this,value,offset,byteLength2,maxBytes,0)}let i2=byteLength2-1,mul=1;this[offset+i2]=value&255;while(--i2>=0&&(mul*=256))this[offset+i2]=value/mul&255;return offset+byteLength2};Buffer.prototype.writeUint8=Buffer.prototype.writeUInt8=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,1,255,0);return this[offset]=value&255,offset+1};Buffer.prototype.writeUint16LE=Buffer.prototype.writeUInt16LE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,2,65535,0);return this[offset]=value&255,this[offset+1]=value>>>8,offset+2};Buffer.prototype.writeUint16BE=Buffer.prototype.writeUInt16BE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,2,65535,0);return this[offset]=value>>>8,this[offset+1]=value&255,offset+2};Buffer.prototype.writeUint32LE=Buffer.prototype.writeUInt32LE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,4,4294967295,0);return this[offset+3]=value>>>24,this[offset+2]=value>>>16,this[offset+1]=value>>>8,this[offset]=value&255,offset+4};Buffer.prototype.writeUint32BE=Buffer.prototype.writeUInt32BE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,4,4294967295,0);return this[offset]=value>>>24,this[offset+1]=value>>>16,this[offset+2]=value>>>8,this[offset+3]=value&255,offset+4};function wrtBigUInt64LE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);let lo=Number(value&BigInt(4294967295));buf[offset++]=lo,lo=lo>>8,buf[offset++]=lo,lo=lo>>8,buf[offset++]=lo,lo=lo>>8,buf[offset++]=lo;let hi=Number(value>>BigInt(32)&BigInt(4294967295));return buf[offset++]=hi,hi=hi>>8,buf[offset++]=hi,hi=hi>>8,buf[offset++]=hi,hi=hi>>8,buf[offset++]=hi,offset}function wrtBigUInt64BE(buf,value,offset,min,max){checkIntBI(value,min,max,buf,offset,7);let lo=Number(value&BigInt(4294967295));buf[offset+7]=lo,lo=lo>>8,buf[offset+6]=lo,lo=lo>>8,buf[offset+5]=lo,lo=lo>>8,buf[offset+4]=lo;let hi=Number(value>>BigInt(32)&BigInt(4294967295));return buf[offset+3]=hi,hi=hi>>8,buf[offset+2]=hi,hi=hi>>8,buf[offset+1]=hi,hi=hi>>8,buf[offset]=hi,offset+8}Buffer.prototype.writeBigUInt64LE=defineBigIntMethod(function(value,offset=0){return wrtBigUInt64LE(this,value,offset,BigInt(0),BigInt(\"0xffffffffffffffff\"))});Buffer.prototype.writeBigUInt64BE=defineBigIntMethod(function(value,offset=0){return wrtBigUInt64BE(this,value,offset,BigInt(0),BigInt(\"0xffffffffffffffff\"))});Buffer.prototype.writeIntLE=function(value,offset,byteLength2,noAssert){if(value=+value,offset=offset>>>0,!noAssert){let limit=Math.pow(2,8*byteLength2-1);checkInt(this,value,offset,byteLength2,limit-1,-limit)}let i2=0,mul=1,sub=0;this[offset]=value&255;while(++i2<byteLength2&&(mul*=256)){if(value<0&&sub===0&&this[offset+i2-1]!==0)sub=1;this[offset+i2]=(value/mul>>0)-sub&255}return offset+byteLength2};Buffer.prototype.writeIntBE=function(value,offset,byteLength2,noAssert){if(value=+value,offset=offset>>>0,!noAssert){let limit=Math.pow(2,8*byteLength2-1);checkInt(this,value,offset,byteLength2,limit-1,-limit)}let i2=byteLength2-1,mul=1,sub=0;this[offset+i2]=value&255;while(--i2>=0&&(mul*=256)){if(value<0&&sub===0&&this[offset+i2+1]!==0)sub=1;this[offset+i2]=(value/mul>>0)-sub&255}return offset+byteLength2};Buffer.prototype.writeInt8=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,1,127,-128);if(value<0)value=255+value+1;return this[offset]=value&255,offset+1};Buffer.prototype.writeInt16LE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,2,32767,-32768);return this[offset]=value&255,this[offset+1]=value>>>8,offset+2};Buffer.prototype.writeInt16BE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,2,32767,-32768);return this[offset]=value>>>8,this[offset+1]=value&255,offset+2};Buffer.prototype.writeInt32LE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);return this[offset]=value&255,this[offset+1]=value>>>8,this[offset+2]=value>>>16,this[offset+3]=value>>>24,offset+4};Buffer.prototype.writeInt32BE=function(value,offset,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkInt(this,value,offset,4,2147483647,-2147483648);if(value<0)value=4294967295+value+1;return this[offset]=value>>>24,this[offset+1]=value>>>16,this[offset+2]=value>>>8,this[offset+3]=value&255,offset+4};Buffer.prototype.writeBigInt64LE=defineBigIntMethod(function(value,offset=0){return wrtBigUInt64LE(this,value,offset,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))});Buffer.prototype.writeBigInt64BE=defineBigIntMethod(function(value,offset=0){return wrtBigUInt64BE(this,value,offset,-BigInt(\"0x8000000000000000\"),BigInt(\"0x7fffffffffffffff\"))});function checkIEEE754(buf,value,offset,ext,max,min){if(offset+ext>buf.length)throw RangeError(\"Index out of range\");if(offset<0)throw RangeError(\"Index out of range\")}function writeFloat(buf,value,offset,littleEndian,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkIEEE754(buf,value,offset,4,340282346638528860000000000000000000000,-340282346638528860000000000000000000000);return write(buf,value,offset,littleEndian,23,4),offset+4}Buffer.prototype.writeFloatLE=function(value,offset,noAssert){return writeFloat(this,value,offset,!0,noAssert)};Buffer.prototype.writeFloatBE=function(value,offset,noAssert){return writeFloat(this,value,offset,!1,noAssert)};function writeDouble(buf,value,offset,littleEndian,noAssert){if(value=+value,offset=offset>>>0,!noAssert)checkIEEE754(buf,value,offset,8,179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000,-179769313486231570000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000);return write(buf,value,offset,littleEndian,52,8),offset+8}Buffer.prototype.writeDoubleLE=function(value,offset,noAssert){return writeDouble(this,value,offset,!0,noAssert)};Buffer.prototype.writeDoubleBE=function(value,offset,noAssert){return writeDouble(this,value,offset,!1,noAssert)};Buffer.prototype.copy=function(target,targetStart,start,end){if(!Buffer.isBuffer(target))throw TypeError(\"argument should be a Buffer\");if(!start)start=0;if(!end&&end!==0)end=this.length;if(targetStart>=target.length)targetStart=target.length;if(!targetStart)targetStart=0;if(end>0&&end<start)end=start;if(end===start)return 0;if(target.length===0||this.length===0)return 0;if(targetStart<0)throw RangeError(\"targetStart out of bounds\");if(start<0||start>=this.length)throw RangeError(\"Index out of range\");if(end<0)throw RangeError(\"sourceEnd out of bounds\");if(end>this.length)end=this.length;if(target.length-targetStart<end-start)end=target.length-targetStart+start;let len2=end-start;if(this===target&&typeof Uint8Array.prototype.copyWithin===\"function\")this.copyWithin(targetStart,start,end);else Uint8Array.prototype.set.call(target,this.subarray(start,end),targetStart);return len2};Buffer.prototype.fill=function(val,start,end,encoding){if(typeof val===\"string\"){if(typeof start===\"string\")encoding=start,start=0,end=this.length;else if(typeof end===\"string\")encoding=end,end=this.length;if(encoding!==void 0&&typeof encoding!==\"string\")throw TypeError(\"encoding must be a string\");if(typeof encoding===\"string\"&&!Buffer.isEncoding(encoding))throw TypeError(\"Unknown encoding: \"+encoding);if(val.length===1){let code2=val.charCodeAt(0);if(encoding===\"utf8\"&&code2<128||encoding===\"latin1\")val=code2}}else if(typeof val===\"number\")val=val&255;else if(typeof val===\"boolean\")val=Number(val);if(start<0||this.length<start||this.length<end)throw RangeError(\"Out of range index\");if(end<=start)return this;if(start=start>>>0,end=end===void 0?this.length:end>>>0,!val)val=0;let i2;if(typeof val===\"number\")for(i2=start;i2<end;++i2)this[i2]=val;else{let bytes=Buffer.isBuffer(val)?val:Buffer.from(val,encoding),len2=bytes.length;if(len2===0)throw TypeError('The value \"'+val+'\" is invalid for argument \"value\"');for(i2=0;i2<end-start;++i2)this[i2+start]=bytes[i2%len2]}return this};function addNumericalSeparator(val){let res=\"\",i2=val.length,start=val[0]===\"-\"?1:0;for(;i2>=start+4;i2-=3)res=`_${val.slice(i2-3,i2)}${res}`;return`${val.slice(0,i2)}${res}`}function checkBounds(buf,offset,byteLength2){if(validateNumber(offset,\"offset\"),buf[offset]===void 0||buf[offset+byteLength2]===void 0)boundsError(offset,buf.length-(byteLength2+1))}function checkIntBI(value,min,max,buf,offset,byteLength2){if(value>max||value<min){let n=typeof min===\"bigint\"?\"n\":\"\",range;if(byteLength2>3)if(min===0||min===BigInt(0))range=`>= 0${n} and < 2${n} ** ${(byteLength2+1)*8}${n}`;else range=`>= -(2${n} ** ${(byteLength2+1)*8-1}${n}) and < 2 ** ${(byteLength2+1)*8-1}${n}`;else range=`>= ${min}${n} and <= ${max}${n}`;throw new ERR_OUT_OF_RANGE(\"value\",range,value)}checkBounds(buf,offset,byteLength2)}function validateNumber(value,name){if(typeof value!==\"number\")throw new ERR_INVALID_ARG_TYPE(name,\"number\",value)}function boundsError(value,length,type){if(Math.floor(value)!==value)throw validateNumber(value,type),new ERR_OUT_OF_RANGE(type||\"offset\",\"an integer\",value);if(length<0)throw new ERR_BUFFER_OUT_OF_BOUNDS;throw new ERR_OUT_OF_RANGE(type||\"offset\",`>= ${type?1:0} and <= ${length}`,value)}var INVALID_BASE64_RE=/[^+/0-9A-Za-z-_]/g;function base64clean(str){if(str=str.split(\"=\")[0],str=str.trim().replace(INVALID_BASE64_RE,\"\"),str.length<2)return\"\";while(str.length%4!==0)str=str+\"=\";return str}function utf8ToBytes(string,units){units=units||1/0;let codePoint,length=string.length,leadSurrogate=null,bytes=[];for(let i2=0;i2<length;++i2){if(codePoint=string.charCodeAt(i2),codePoint>55295&&codePoint<57344){if(!leadSurrogate){if(codePoint>56319){if((units-=3)>-1)bytes.push(239,191,189);continue}else if(i2+1===length){if((units-=3)>-1)bytes.push(239,191,189);continue}leadSurrogate=codePoint;continue}if(codePoint<56320){if((units-=3)>-1)bytes.push(239,191,189);leadSurrogate=codePoint;continue}codePoint=(leadSurrogate-55296<<10|codePoint-56320)+65536}else if(leadSurrogate){if((units-=3)>-1)bytes.push(239,191,189)}if(leadSurrogate=null,codePoint<128){if((units-=1)<0)break;bytes.push(codePoint)}else if(codePoint<2048){if((units-=2)<0)break;bytes.push(codePoint>>6|192,codePoint&63|128)}else if(codePoint<65536){if((units-=3)<0)break;bytes.push(codePoint>>12|224,codePoint>>6&63|128,codePoint&63|128)}else if(codePoint<1114112){if((units-=4)<0)break;bytes.push(codePoint>>18|240,codePoint>>12&63|128,codePoint>>6&63|128,codePoint&63|128)}else throw Error(\"Invalid code point\")}return bytes}function asciiToBytes(str){let byteArray=[];for(let i2=0;i2<str.length;++i2)byteArray.push(str.charCodeAt(i2)&255);return byteArray}function utf16leToBytes(str,units){let c,hi,lo,byteArray=[];for(let i2=0;i2<str.length;++i2){if((units-=2)<0)break;c=str.charCodeAt(i2),hi=c>>8,lo=c%256,byteArray.push(lo),byteArray.push(hi)}return byteArray}function base64ToBytes(str){return toByteArray(base64clean(str))}function blitBuffer(src,dst,offset,length){let i2;for(i2=0;i2<length;++i2){if(i2+offset>=dst.length||i2>=src.length)break;dst[i2+offset]=src[i2]}return i2}function isInstance(obj,type){return obj instanceof type||obj!=null&&obj.constructor!=null&&obj.constructor.name!=null&&obj.constructor.name===type.name}var hexSliceLookupTable=function(){let table=Array(256);for(let i2=0;i2<16;++i2){let i16=i2*16;for(let j=0;j<16;++j)table[i16+j]=\"0123456789abcdef\"[i2]+\"0123456789abcdef\"[j]}return table}();function defineBigIntMethod(fn){return typeof BigInt>\"u\"?BufferBigIntNotDefined:fn}function BufferBigIntNotDefined(){throw Error(\"BigInt not supported\")}function notimpl(name){return()=>{throw Error(name+\" is not implemented for node:buffer browser polyfill\")}}var resolveObjectURL=notimpl(\"resolveObjectURL\"),isUtf8=notimpl(\"isUtf8\"),isAscii=(str)=>{for(let char of str)if(char.charCodeAt(0)>127)return!1;return!0},transcode=notimpl(\"transcode\"),buffer_default=Buffer;export{transcode,resolveObjectURL,kStringMaxLength,kMaxLength,isUtf8,isAscii,buffer_default as default,constants,btoa,atob,INSPECT_MAX_BYTES,File,Buffer,Blob};",
13
- "var formatRegExp=/%[sdj%]/g;function format(f,...args){if(!isString(f)){var objects=[f];for(var i=0;i<args.length;i++)objects.push(inspect(args[i]));return objects.join(\" \")}var i=0,len=args.length,str=String(f).replace(formatRegExp,function(x2){if(x2===\"%%\")return\"%\";if(i>=len)return x2;switch(x2){case\"%s\":return String(args[i++]);case\"%d\":return Number(args[i++]);case\"%j\":try{return JSON.stringify(args[i++])}catch(_){return\"[Circular]\"}default:return x2}});for(var x=args[i];i<len;x=args[++i])if(isNull(x)||!isObject(x))str+=\" \"+x;else str+=\" \"+inspect(x);return str}function deprecate(fn,msg){if(typeof process>\"u\"||process?.noDeprecation===!0)return fn;var warned=!1;function deprecated(...args){if(!warned){if(process.throwDeprecation)throw Error(msg);else if(process.traceDeprecation)console.trace(msg);else console.error(msg);warned=!0}return fn.apply(this,...args)}return deprecated}var debuglog=((debugs={},debugEnvRegex={},debugEnv)=>((debugEnv=typeof process<\"u\"&&!1)&&(debugEnv=debugEnv.replace(/[|\\\\{}()[\\]^$+?.]/g,\"\\\\$&\").replace(/\\*/g,\".*\").replace(/,/g,\"$|^\").toUpperCase()),debugEnvRegex=new RegExp(\"^\"+debugEnv+\"$\",\"i\"),(set)=>{if(set=set.toUpperCase(),!debugs[set])if(debugEnvRegex.test(set))debugs[set]=function(...args){console.error(\"%s: %s\",set,pid,format.apply(null,...args))};else debugs[set]=function(){};return debugs[set]}))(),inspect=((i)=>(i.colors={bold:[1,22],italic:[3,23],underline:[4,24],inverse:[7,27],white:[37,39],grey:[90,39],black:[30,39],blue:[34,39],cyan:[36,39],green:[32,39],magenta:[35,39],red:[31,39],yellow:[33,39]},i.styles={special:\"cyan\",number:\"yellow\",boolean:\"yellow\",undefined:\"grey\",null:\"bold\",string:\"green\",date:\"magenta\",regexp:\"red\"},i.custom=Symbol.for(\"nodejs.util.inspect.custom\"),i))(function(obj,opts,...rest){var ctx={seen:[],stylize:stylizeNoColor};if(rest.length>=1)ctx.depth=rest[0];if(rest.length>=2)ctx.colors=rest[1];if(isBoolean(opts))ctx.showHidden=opts;else if(opts)_extend(ctx,opts);if(isUndefined(ctx.showHidden))ctx.showHidden=!1;if(isUndefined(ctx.depth))ctx.depth=2;if(isUndefined(ctx.colors))ctx.colors=!1;if(ctx.colors)ctx.stylize=stylizeWithColor;return formatValue(ctx,obj,ctx.depth)});function stylizeWithColor(str,styleType){var style=inspect.styles[styleType];if(style)return\"\\x1B[\"+inspect.colors[style][0]+\"m\"+str+\"\\x1B[\"+inspect.colors[style][1]+\"m\";else return str}function stylizeNoColor(str,styleType){return str}function arrayToHash(array){var hash={};return array.forEach(function(val,idx){hash[val]=!0}),hash}function formatValue(ctx,value,recurseTimes){if(ctx.customInspect&&value&&isFunction(value.inspect)&&value.inspect!==inspect&&!(value.constructor&&value.constructor.prototype===value)){var ret=value.inspect(recurseTimes,ctx);if(!isString(ret))ret=formatValue(ctx,ret,recurseTimes);return ret}var primitive=formatPrimitive(ctx,value);if(primitive)return primitive;var keys=Object.keys(value),visibleKeys=arrayToHash(keys);if(ctx.showHidden)keys=Object.getOwnPropertyNames(value);if(isError(value)&&(keys.indexOf(\"message\")>=0||keys.indexOf(\"description\")>=0))return formatError(value);if(keys.length===0){if(isFunction(value)){var name=value.name?\": \"+value.name:\"\";return ctx.stylize(\"[Function\"+name+\"]\",\"special\")}if(isRegExp(value))return ctx.stylize(RegExp.prototype.toString.call(value),\"regexp\");if(isDate(value))return ctx.stylize(Date.prototype.toString.call(value),\"date\");if(isError(value))return formatError(value)}var base=\"\",array=!1,braces=[\"{\",\"}\"];if(isArray(value))array=!0,braces=[\"[\",\"]\"];if(isFunction(value)){var n=value.name?\": \"+value.name:\"\";base=\" [Function\"+n+\"]\"}if(isRegExp(value))base=\" \"+RegExp.prototype.toString.call(value);if(isDate(value))base=\" \"+Date.prototype.toUTCString.call(value);if(isError(value))base=\" \"+formatError(value);if(keys.length===0&&(!array||value.length==0))return braces[0]+base+braces[1];if(recurseTimes<0)if(isRegExp(value))return ctx.stylize(RegExp.prototype.toString.call(value),\"regexp\");else return ctx.stylize(\"[Object]\",\"special\");ctx.seen.push(value);var output;if(array)output=formatArray(ctx,value,recurseTimes,visibleKeys,keys);else output=keys.map(function(key){return formatProperty(ctx,value,recurseTimes,visibleKeys,key,array)});return ctx.seen.pop(),reduceToSingleString(output,base,braces)}function formatPrimitive(ctx,value){if(isUndefined(value))return ctx.stylize(\"undefined\",\"undefined\");if(isString(value)){var simple=\"'\"+JSON.stringify(value).replace(/^\"|\"$/g,\"\").replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"')+\"'\";return ctx.stylize(simple,\"string\")}if(isNumber(value))return ctx.stylize(\"\"+value,\"number\");if(isBoolean(value))return ctx.stylize(\"\"+value,\"boolean\");if(isNull(value))return ctx.stylize(\"null\",\"null\")}function formatError(value){return\"[\"+Error.prototype.toString.call(value)+\"]\"}function formatArray(ctx,value,recurseTimes,visibleKeys,keys){var output=[];for(var i=0,l=value.length;i<l;++i)if(hasOwnProperty(value,String(i)))output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,String(i),!0));else output.push(\"\");return keys.forEach(function(key){if(!key.match(/^\\d+$/))output.push(formatProperty(ctx,value,recurseTimes,visibleKeys,key,!0))}),output}function formatProperty(ctx,value,recurseTimes,visibleKeys,key,array){var name,str,desc;if(desc=Object.getOwnPropertyDescriptor(value,key)||{value:value[key]},desc.get)if(desc.set)str=ctx.stylize(\"[Getter/Setter]\",\"special\");else str=ctx.stylize(\"[Getter]\",\"special\");else if(desc.set)str=ctx.stylize(\"[Setter]\",\"special\");if(!hasOwnProperty(visibleKeys,key))name=\"[\"+key+\"]\";if(!str)if(ctx.seen.indexOf(desc.value)<0){if(isNull(recurseTimes))str=formatValue(ctx,desc.value,null);else str=formatValue(ctx,desc.value,recurseTimes-1);if(str.indexOf(`\n`)>-1)if(array)str=str.split(`\n`).map(function(line){return\" \"+line}).join(`\n`).slice(2);else str=`\n`+str.split(`\n`).map(function(line){return\" \"+line}).join(`\n`)}else str=ctx.stylize(\"[Circular]\",\"special\");if(isUndefined(name)){if(array&&key.match(/^\\d+$/))return str;if(name=JSON.stringify(\"\"+key),name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/))name=name.slice(1,-1),name=ctx.stylize(name,\"name\");else name=name.replace(/'/g,\"\\\\'\").replace(/\\\\\"/g,'\"').replace(/(^\"|\"$)/g,\"'\"),name=ctx.stylize(name,\"string\")}return name+\": \"+str}function reduceToSingleString(output,base,braces){var numLinesEst=0,length=output.reduce(function(prev,cur){if(numLinesEst++,cur.indexOf(`\n`)>=0)numLinesEst++;return prev+cur.replace(/\\u001b\\[\\d\\d?m/g,\"\").length+1},0);if(length>60)return braces[0]+(base===\"\"?\"\":base+`\n `)+\" \"+output.join(`,\n `)+\" \"+braces[1];return braces[0]+base+\" \"+output.join(\", \")+\" \"+braces[1]}var types=()=>{};function isArray(ar){return Array.isArray(ar)}function isBoolean(arg){return typeof arg===\"boolean\"}function isNull(arg){return arg===null}function isNullOrUndefined(arg){return arg==null}function isNumber(arg){return typeof arg===\"number\"}function isString(arg){return typeof arg===\"string\"}function isSymbol(arg){return typeof arg===\"symbol\"}function isUndefined(arg){return arg===void 0}function isRegExp(re){return isObject(re)&&objectToString(re)===\"[object RegExp]\"}function isObject(arg){return typeof arg===\"object\"&&arg!==null}function isDate(d){return isObject(d)&&objectToString(d)===\"[object Date]\"}function isError(e){return isObject(e)&&(objectToString(e)===\"[object Error]\"||e instanceof Error)}function isFunction(arg){return typeof arg===\"function\"}function isPrimitive(arg){return arg===null||typeof arg===\"boolean\"||typeof arg===\"number\"||typeof arg===\"string\"||typeof arg===\"symbol\"||typeof arg>\"u\"}function isBuffer(arg){return arg instanceof Buffer}function objectToString(o){return Object.prototype.toString.call(o)}function pad(n){return n<10?\"0\"+n.toString(10):n.toString(10)}var months=[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"];function timestamp(){var d=new Date,time=[pad(d.getHours()),pad(d.getMinutes()),pad(d.getSeconds())].join(\":\");return[d.getDate(),months[d.getMonth()],time].join(\" \")}function log(...args){console.log(\"%s - %s\",timestamp(),format.apply(null,args))}function inherits(ctor,superCtor){if(superCtor)ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})}function _extend(origin,add){if(!add||!isObject(add))return origin;var keys=Object.keys(add),i=keys.length;while(i--)origin[keys[i]]=add[keys[i]];return origin}function hasOwnProperty(obj,prop){return Object.prototype.hasOwnProperty.call(obj,prop)}var promisify=((x)=>(x.custom=Symbol.for(\"nodejs.util.promisify.custom\"),x))(function(original){if(typeof original!==\"function\")throw TypeError('The \"original\" argument must be of type Function');if(kCustomPromisifiedSymbol&&original[kCustomPromisifiedSymbol]){var fn=original[kCustomPromisifiedSymbol];if(typeof fn!==\"function\")throw TypeError('The \"nodejs.util.promisify.custom\" argument must be of type Function');return Object.defineProperty(fn,kCustomPromisifiedSymbol,{value:fn,enumerable:!1,writable:!1,configurable:!0}),fn}function fn(...args){var promiseResolve,promiseReject,promise=new Promise(function(resolve,reject){promiseResolve=resolve,promiseReject=reject});args.push(function(err,value){if(err)promiseReject(err);else promiseResolve(value)});try{original.apply(this,args)}catch(err){promiseReject(err)}return promise}if(Object.setPrototypeOf(fn,Object.getPrototypeOf(original)),kCustomPromisifiedSymbol)Object.defineProperty(fn,kCustomPromisifiedSymbol,{value:fn,enumerable:!1,writable:!1,configurable:!0});return Object.defineProperties(fn,Object.getOwnPropertyDescriptors(original))});function callbackifyOnRejected(reason,cb){if(!reason){var newReason=Error(\"Promise was rejected with a falsy value\");newReason.reason=reason,reason=newReason}return cb(reason)}function callbackify(original){if(typeof original!==\"function\")throw TypeError('The \"original\" argument must be of type Function');function callbackified(...args){var maybeCb=args.pop();if(typeof maybeCb!==\"function\")throw TypeError(\"The last argument must be of type Function\");var self=this,cb=function(...args2){return maybeCb.apply(self,...args2)};original.apply(this,args).then(function(ret){process.nextTick(cb.bind(null,null,ret))},function(rej){process.nextTick(callbackifyOnRejected.bind(null,rej,cb))})}return Object.setPrototypeOf(callbackified,Object.getPrototypeOf(original)),Object.defineProperties(callbackified,Object.getOwnPropertyDescriptors(original)),callbackified}var{TextEncoder,TextDecoder}=globalThis,util_default={TextEncoder,TextDecoder,promisify,log,inherits,_extend,callbackifyOnRejected,callbackify};export{types,promisify,log,isUndefined,isSymbol,isString,isRegExp,isPrimitive,isObject,isNumber,isNullOrUndefined,isNull,isFunction,isError,isDate,isBuffer,isBoolean,isArray,inspect,inherits,format,deprecate,util_default as default,debuglog,callbackifyOnRejected,callbackify,_extend,TextEncoder,TextDecoder};",
14
- "var SymbolFor=Symbol.for,kCapture=Symbol(\"kCapture\"),kErrorMonitor=SymbolFor(\"events.errorMonitor\"),kMaxEventTargetListeners=Symbol(\"events.maxEventTargetListeners\"),kMaxEventTargetListenersWarned=Symbol(\"events.maxEventTargetListenersWarned\"),kRejection=SymbolFor(\"nodejs.rejection\"),captureRejectionSymbol=SymbolFor(\"nodejs.rejection\"),ArrayPrototypeSlice=Array.prototype.slice,defaultMaxListeners=10,EventEmitter=function(opts){if(this._events===void 0||this._events===this.__proto__._events)this._events={__proto__:null},this._eventsCount=0;if(this._maxListeners??=void 0,this[kCapture]=opts?.captureRejections?Boolean(opts?.captureRejections):EventEmitterPrototype[kCapture])this.emit=emitWithRejectionCapture},EventEmitterPrototype=EventEmitter.prototype={};EventEmitterPrototype._events=void 0;EventEmitterPrototype._eventsCount=0;EventEmitterPrototype._maxListeners=void 0;EventEmitterPrototype.setMaxListeners=function(n){return validateNumber(n,\"setMaxListeners\",0),this._maxListeners=n,this};EventEmitterPrototype.constructor=EventEmitter;EventEmitterPrototype.getMaxListeners=function(){return this?._maxListeners??defaultMaxListeners};function emitError(emitter,args){var{_events:events}=emitter;if(args[0]??=Error(\"Unhandled error.\"),!events)throw args[0];var errorMonitor=events[kErrorMonitor];if(errorMonitor)for(var handler of ArrayPrototypeSlice.call(errorMonitor))handler.apply(emitter,args);var handlers=events.error;if(!handlers)throw args[0];for(var handler of ArrayPrototypeSlice.call(handlers))handler.apply(emitter,args);return!0}function addCatch(emitter,promise,type,args){promise.then(void 0,function(err){queueMicrotask(()=>emitUnhandledRejectionOrErr(emitter,err,type,args))})}function emitUnhandledRejectionOrErr(emitter,err,type,args){if(typeof emitter[kRejection]===\"function\")emitter[kRejection](err,type,...args);else try{emitter[kCapture]=!1,emitter.emit(\"error\",err)}finally{emitter[kCapture]=!0}}var emitWithoutRejectionCapture=function(type,...args){if(type===\"error\")return emitError(this,args);var{_events:events}=this;if(events===void 0)return!1;var handlers=events[type];if(handlers===void 0)return!1;let maybeClonedHandlers=handlers.length>1?handlers.slice():handlers;for(let i=0,{length}=maybeClonedHandlers;i<length;i++){let handler=maybeClonedHandlers[i];switch(args.length){case 0:handler.call(this);break;case 1:handler.call(this,args[0]);break;case 2:handler.call(this,args[0],args[1]);break;case 3:handler.call(this,args[0],args[1],args[2]);break;default:handler.apply(this,args);break}}return!0},emitWithRejectionCapture=function(type,...args){if(type===\"error\")return emitError(this,args);var{_events:events}=this;if(events===void 0)return!1;var handlers=events[type];if(handlers===void 0)return!1;let maybeClonedHandlers=handlers.length>1?handlers.slice():handlers;for(let i=0,{length}=maybeClonedHandlers;i<length;i++){let handler=maybeClonedHandlers[i],result;switch(args.length){case 0:result=handler.call(this);break;case 1:result=handler.call(this,args[0]);break;case 2:result=handler.call(this,args[0],args[1]);break;case 3:result=handler.call(this,args[0],args[1],args[2]);break;default:result=handler.apply(this,args);break}if(result!==void 0&&typeof result?.then===\"function\"&&result.then===Promise.prototype.then)addCatch(this,result,type,args)}return!0};EventEmitterPrototype.emit=emitWithoutRejectionCapture;EventEmitterPrototype.addListener=function(type,fn){checkListener(fn);var events=this._events;if(!events)events=this._events={__proto__:null},this._eventsCount=0;else if(events.newListener)this.emit(\"newListener\",type,fn.listener??fn);var handlers=events[type];if(!handlers)events[type]=[fn],this._eventsCount++;else{handlers.push(fn);var m=this._maxListeners??defaultMaxListeners;if(m>0&&handlers.length>m&&!handlers.warned)overflowWarning(this,type,handlers)}return this};EventEmitterPrototype.on=EventEmitterPrototype.addListener;EventEmitterPrototype.prependListener=function(type,fn){checkListener(fn);var events=this._events;if(!events)events=this._events={__proto__:null},this._eventsCount=0;else if(events.newListener)this.emit(\"newListener\",type,fn.listener??fn);var handlers=events[type];if(!handlers)events[type]=[fn],this._eventsCount++;else{handlers.unshift(fn);var m=this._maxListeners??defaultMaxListeners;if(m>0&&handlers.length>m&&!handlers.warned)overflowWarning(this,type,handlers)}return this};function overflowWarning(emitter,type,handlers){handlers.warned=!0;let warn=Error(`Possible EventEmitter memory leak detected. ${handlers.length} ${String(type)} listeners added to [${emitter.constructor.name}]. Use emitter.setMaxListeners() to increase limit`);warn.name=\"MaxListenersExceededWarning\",warn.emitter=emitter,warn.type=type,warn.count=handlers.length,console.warn(warn)}function onceWrapper(type,listener,...args){this.removeListener(type,listener),listener.apply(this,args)}EventEmitterPrototype.once=function(type,fn){checkListener(fn);let bound=onceWrapper.bind(this,type,fn);return bound.listener=fn,this.addListener(type,bound),this};EventEmitterPrototype.prependOnceListener=function(type,fn){checkListener(fn);let bound=onceWrapper.bind(this,type,fn);return bound.listener=fn,this.prependListener(type,bound),this};EventEmitterPrototype.removeListener=function(type,fn){checkListener(fn);var{_events:events}=this;if(!events)return this;var handlers=events[type];if(!handlers)return this;var length=handlers.length;let position=-1;for(let i=length-1;i>=0;i--)if(handlers[i]===fn||handlers[i].listener===fn){position=i;break}if(position<0)return this;if(position===0)handlers.shift();else handlers.splice(position,1);if(handlers.length===0)delete events[type],this._eventsCount--;return this};EventEmitterPrototype.off=EventEmitterPrototype.removeListener;EventEmitterPrototype.removeAllListeners=function(type){var{_events:events}=this;if(type&&events){if(events[type])delete events[type],this._eventsCount--}else this._events={__proto__:null};return this};EventEmitterPrototype.listeners=function(type){var{_events:events}=this;if(!events)return[];var handlers=events[type];if(!handlers)return[];return handlers.map((x)=>x.listener??x)};EventEmitterPrototype.rawListeners=function(type){var{_events}=this;if(!_events)return[];var handlers=_events[type];if(!handlers)return[];return handlers.slice()};EventEmitterPrototype.listenerCount=function(type){var{_events:events}=this;if(!events)return 0;return events[type]?.length??0};EventEmitterPrototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};EventEmitterPrototype[kCapture]=!1;function once2(emitter,type,options){var signal=options?.signal;if(validateAbortSignal(signal,\"options.signal\"),signal?.aborted)throw new AbortError(void 0,{cause:signal?.reason});let{resolve,reject,promise}=$newPromiseCapability(Promise),errorListener=(err)=>{if(emitter.removeListener(type,resolver),signal!=null)eventTargetAgnosticRemoveListener(signal,\"abort\",abortListener);reject(err)},resolver=(...args)=>{if(typeof emitter.removeListener===\"function\")emitter.removeListener(\"error\",errorListener);if(signal!=null)eventTargetAgnosticRemoveListener(signal,\"abort\",abortListener);resolve(args)};if(eventTargetAgnosticAddListener(emitter,type,resolver,{once:!0}),type!==\"error\"&&typeof emitter.once===\"function\")emitter.once(\"error\",errorListener);function abortListener(){eventTargetAgnosticRemoveListener(emitter,type,resolver),eventTargetAgnosticRemoveListener(emitter,\"error\",errorListener),reject(new AbortError(void 0,{cause:signal?.reason}))}if(signal!=null)eventTargetAgnosticAddListener(signal,\"abort\",abortListener,{once:!0});return promise}function getEventListeners(emitter,type){return emitter.listeners(type)}function setMaxListeners2(n,...eventTargets){validateNumber(n,\"setMaxListeners\",0);var length;if(eventTargets&&(length=eventTargets.length))for(let i=0;i<length;i++)eventTargets[i].setMaxListeners(n);else defaultMaxListeners=n}function listenerCount2(emitter,type){return emitter.listenerCount(type)}function eventTargetAgnosticRemoveListener(emitter,name,listener,flags){if(typeof emitter.removeListener===\"function\")emitter.removeListener(name,listener);else emitter.removeEventListener(name,listener,flags)}function eventTargetAgnosticAddListener(emitter,name,listener,flags){if(typeof emitter.on===\"function\")if(flags.once)emitter.once(name,listener);else emitter.on(name,listener);else emitter.addEventListener(name,listener,flags)}class AbortError extends Error{constructor(message=\"The operation was aborted\",options=void 0){if(options!==void 0&&typeof options!==\"object\")throw ERR_INVALID_ARG_TYPE(\"options\",\"Object\",options);super(message,options);this.code=\"ABORT_ERR\",this.name=\"AbortError\"}}function ERR_INVALID_ARG_TYPE(name,type,value){let err=TypeError(`The \"${name}\" argument must be of type ${type}. Received ${value}`);return err.code=\"ERR_INVALID_ARG_TYPE\",err}function ERR_OUT_OF_RANGE(name,range,value){let err=RangeError(`The \"${name}\" argument is out of range. It must be ${range}. Received ${value}`);return err.code=\"ERR_OUT_OF_RANGE\",err}function validateAbortSignal(signal,name){if(signal!==void 0&&(signal===null||typeof signal!==\"object\"||!(\"aborted\"in signal)))throw ERR_INVALID_ARG_TYPE(name,\"AbortSignal\",signal)}function validateNumber(value,name,min,max){if(typeof value!==\"number\")throw ERR_INVALID_ARG_TYPE(name,\"number\",value);if(min!=null&&value<min||max!=null&&value>max||(min!=null||max!=null)&&Number.isNaN(value))throw ERR_OUT_OF_RANGE(name,`${min!=null?`>= ${min}`:\"\"}${min!=null&&max!=null?\" && \":\"\"}${max!=null?`<= ${max}`:\"\"}`,value)}function checkListener(listener){if(typeof listener!==\"function\")throw TypeError(\"The listener must be a function\")}function validateBoolean(value,name){if(typeof value!==\"boolean\")throw ERR_INVALID_ARG_TYPE(name,\"boolean\",value)}function getMaxListeners2(emitterOrTarget){return emitterOrTarget?._maxListeners??defaultMaxListeners}function addAbortListener(signal,listener){if(signal===void 0)throw ERR_INVALID_ARG_TYPE(\"signal\",\"AbortSignal\",signal);if(validateAbortSignal(signal,\"signal\"),typeof listener!==\"function\")throw ERR_INVALID_ARG_TYPE(\"listener\",\"function\",listener);let removeEventListener;if(signal.aborted)queueMicrotask(()=>listener());else signal.addEventListener(\"abort\",listener,{__proto__:null,once:!0}),removeEventListener=()=>{signal.removeEventListener(\"abort\",listener)};return{__proto__:null,[Symbol.dispose](){removeEventListener?.()}}}Object.defineProperties(EventEmitter,{captureRejections:{get(){return EventEmitterPrototype[kCapture]},set(value){validateBoolean(value,\"EventEmitter.captureRejections\"),EventEmitterPrototype[kCapture]=value},enumerable:!0},defaultMaxListeners:{enumerable:!0,get:()=>{return defaultMaxListeners},set:(arg)=>{validateNumber(arg,\"defaultMaxListeners\",0),defaultMaxListeners=arg}},kMaxEventTargetListeners:{value:kMaxEventTargetListeners,enumerable:!1,configurable:!1,writable:!1},kMaxEventTargetListenersWarned:{value:kMaxEventTargetListenersWarned,enumerable:!1,configurable:!1,writable:!1}});Object.assign(EventEmitter,{once:once2,getEventListeners,getMaxListeners:getMaxListeners2,setMaxListeners:setMaxListeners2,EventEmitter,usingDomains:!1,captureRejectionSymbol,errorMonitor:kErrorMonitor,addAbortListener,init:EventEmitter,listenerCount:listenerCount2});var events_default=EventEmitter;export{setMaxListeners2 as setMaxListeners,once2 as once,listenerCount2 as listenerCount,EventEmitter as init,getMaxListeners2 as getMaxListeners,getEventListeners,events_default as default,captureRejectionSymbol,addAbortListener,EventEmitter};",
15
- "var __commonJS=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports);var require_primordials=__commonJS((exports2,module2)=>{class AggregateError extends Error{constructor(errors){if(!Array.isArray(errors))throw TypeError(`Expected input to be an Array, got ${typeof errors}`);let message=\"\";for(let i=0;i<errors.length;i++)message+=` ${errors[i].stack}\n`;super(message);this.name=\"AggregateError\",this.errors=errors}}module2.exports={AggregateError,ArrayIsArray(self){return Array.isArray(self)},ArrayPrototypeIncludes(self,el){return self.includes(el)},ArrayPrototypeIndexOf(self,el){return self.indexOf(el)},ArrayPrototypeJoin(self,sep){return self.join(sep)},ArrayPrototypeMap(self,fn){return self.map(fn)},ArrayPrototypePop(self,el){return self.pop(el)},ArrayPrototypePush(self,el){return self.push(el)},ArrayPrototypeSlice(self,start,end){return self.slice(start,end)},Error,FunctionPrototypeCall(fn,thisArgs,...args){return fn.call(thisArgs,...args)},FunctionPrototypeSymbolHasInstance(self,instance){return Function.prototype[Symbol.hasInstance].call(self,instance)},MathFloor:Math.floor,Number,NumberIsInteger:Number.isInteger,NumberIsNaN:Number.isNaN,NumberMAX_SAFE_INTEGER:Number.MAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER:Number.MIN_SAFE_INTEGER,NumberParseInt:Number.parseInt,ObjectDefineProperties(self,props){return Object.defineProperties(self,props)},ObjectDefineProperty(self,name,prop){return Object.defineProperty(self,name,prop)},ObjectGetOwnPropertyDescriptor(self,name){return Object.getOwnPropertyDescriptor(self,name)},ObjectKeys(obj){return Object.keys(obj)},ObjectSetPrototypeOf(target,proto){return Object.setPrototypeOf(target,proto)},Promise,PromisePrototypeCatch(self,fn){return self.catch(fn)},PromisePrototypeThen(self,thenFn,catchFn){return self.then(thenFn,catchFn)},PromiseReject(err){return Promise.reject(err)},PromiseResolve(val){return Promise.resolve(val)},ReflectApply:Reflect.apply,RegExpPrototypeTest(self,value){return self.test(value)},SafeSet:Set,String,StringPrototypeSlice(self,start,end){return self.slice(start,end)},StringPrototypeToLowerCase(self){return self.toLowerCase()},StringPrototypeToUpperCase(self){return self.toUpperCase()},StringPrototypeTrim(self){return self.trim()},Symbol,SymbolFor:Symbol.for,SymbolAsyncIterator:Symbol.asyncIterator,SymbolHasInstance:Symbol.hasInstance,SymbolIterator:Symbol.iterator,SymbolDispose:Symbol.dispose||Symbol(\"Symbol.dispose\"),SymbolAsyncDispose:Symbol.asyncDispose||Symbol(\"Symbol.asyncDispose\"),TypedArrayPrototypeSet(self,buf,len){return self.set(buf,len)},Boolean,Uint8Array}});var require_inspect=__commonJS((exports2,module2)=>{module2.exports={format(format,...args){return format.replace(/%([sdifj])/g,function(...[_unused,type]){let replacement=args.shift();if(type===\"f\")return replacement.toFixed(6);else if(type===\"j\")return JSON.stringify(replacement);else if(type===\"s\"&&typeof replacement===\"object\")return`${replacement.constructor!==Object?replacement.constructor.name:\"\"} {}`.trim();else return replacement.toString()})},inspect(value){switch(typeof value){case\"string\":if(value.includes(\"'\")){if(!value.includes('\"'))return`\"${value}\"`;else if(!value.includes(\"`\")&&!value.includes(\"${\"))return`\\`${value}\\``}return`'${value}'`;case\"number\":if(isNaN(value))return\"NaN\";else if(Object.is(value,-0))return String(value);return value;case\"bigint\":return`${String(value)}n`;case\"boolean\":case\"undefined\":return String(value);case\"object\":return\"{}\"}}}});var require_errors=__commonJS((exports2,module2)=>{var{format,inspect}=require_inspect(),{AggregateError:CustomAggregateError}=require_primordials(),AggregateError=globalThis.AggregateError||CustomAggregateError,kIsNodeError=Symbol(\"kIsNodeError\"),kTypes=[\"string\",\"function\",\"number\",\"object\",\"Function\",\"Object\",\"boolean\",\"bigint\",\"symbol\"],classRegExp=/^([A-Z][a-z0-9]*)+$/,codes={};function assert(value,message){if(!value)throw new codes.ERR_INTERNAL_ASSERTION(message)}function addNumericalSeparator(val){let res=\"\",i=val.length,start=val[0]===\"-\"?1:0;for(;i>=start+4;i-=3)res=`_${val.slice(i-3,i)}${res}`;return`${val.slice(0,i)}${res}`}function getMessage(key,msg,args){if(typeof msg===\"function\")return assert(msg.length<=args.length,`Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${msg.length}).`),msg(...args);let expectedLength=(msg.match(/%[dfijoOs]/g)||[]).length;if(assert(expectedLength===args.length,`Code: ${key}; The provided arguments length (${args.length}) does not match the required ones (${expectedLength}).`),args.length===0)return msg;return format(msg,...args)}function E(code,message,Base){if(!Base)Base=Error;class NodeError extends Base{constructor(...args){super(getMessage(code,message,args))}toString(){return`${this.name} [${code}]: ${this.message}`}}Object.defineProperties(NodeError.prototype,{name:{value:Base.name,writable:!0,enumerable:!1,configurable:!0},toString:{value(){return`${this.name} [${code}]: ${this.message}`},writable:!0,enumerable:!1,configurable:!0}}),NodeError.prototype.code=code,NodeError.prototype[kIsNodeError]=!0,codes[code]=NodeError}function hideStackFrames(fn){let hidden=\"__node_internal_\"+fn.name;return Object.defineProperty(fn,\"name\",{value:hidden}),fn}function aggregateTwoErrors(innerError,outerError){if(innerError&&outerError&&innerError!==outerError){if(Array.isArray(outerError.errors))return outerError.errors.push(innerError),outerError;let err=new AggregateError([outerError,innerError],outerError.message);return err.code=outerError.code,err}return innerError||outerError}class AbortError extends Error{constructor(message=\"The operation was aborted\",options=void 0){if(options!==void 0&&typeof options!==\"object\")throw new codes.ERR_INVALID_ARG_TYPE(\"options\",\"Object\",options);super(message,options);this.code=\"ABORT_ERR\",this.name=\"AbortError\"}}E(\"ERR_ASSERTION\",\"%s\",Error);E(\"ERR_INVALID_ARG_TYPE\",(name,expected,actual)=>{if(assert(typeof name===\"string\",\"'name' must be a string\"),!Array.isArray(expected))expected=[expected];let msg=\"The \";if(name.endsWith(\" argument\"))msg+=`${name} `;else msg+=`\"${name}\" ${name.includes(\".\")?\"property\":\"argument\"} `;msg+=\"must be \";let types=[],instances=[],other=[];for(let value of expected)if(assert(typeof value===\"string\",\"All expected entries have to be of type string\"),kTypes.includes(value))types.push(value.toLowerCase());else if(classRegExp.test(value))instances.push(value);else assert(value!==\"object\",'The value \"object\" should be written as \"Object\"'),other.push(value);if(instances.length>0){let pos=types.indexOf(\"object\");if(pos!==-1)types.splice(types,pos,1),instances.push(\"Object\")}if(types.length>0){switch(types.length){case 1:msg+=`of type ${types[0]}`;break;case 2:msg+=`one of type ${types[0]} or ${types[1]}`;break;default:{let last=types.pop();msg+=`one of type ${types.join(\", \")}, or ${last}`}}if(instances.length>0||other.length>0)msg+=\" or \"}if(instances.length>0){switch(instances.length){case 1:msg+=`an instance of ${instances[0]}`;break;case 2:msg+=`an instance of ${instances[0]} or ${instances[1]}`;break;default:{let last=instances.pop();msg+=`an instance of ${instances.join(\", \")}, or ${last}`}}if(other.length>0)msg+=\" or \"}switch(other.length){case 0:break;case 1:if(other[0].toLowerCase()!==other[0])msg+=\"an \";msg+=`${other[0]}`;break;case 2:msg+=`one of ${other[0]} or ${other[1]}`;break;default:{let last=other.pop();msg+=`one of ${other.join(\", \")}, or ${last}`}}if(actual==null)msg+=`. Received ${actual}`;else if(typeof actual===\"function\"&&actual.name)msg+=`. Received function ${actual.name}`;else if(typeof actual===\"object\"){var _actual$constructor;if((_actual$constructor=actual.constructor)!==null&&_actual$constructor!==void 0&&_actual$constructor.name)msg+=`. Received an instance of ${actual.constructor.name}`;else{let inspected=inspect(actual,{depth:-1});msg+=`. Received ${inspected}`}}else{let inspected=inspect(actual,{colors:!1});if(inspected.length>25)inspected=`${inspected.slice(0,25)}...`;msg+=`. Received type ${typeof actual} (${inspected})`}return msg},TypeError);E(\"ERR_INVALID_ARG_VALUE\",(name,value,reason=\"is invalid\")=>{let inspected=inspect(value);if(inspected.length>128)inspected=inspected.slice(0,128)+\"...\";return`The ${name.includes(\".\")?\"property\":\"argument\"} '${name}' ${reason}. Received ${inspected}`},TypeError);E(\"ERR_INVALID_RETURN_VALUE\",(input,name,value)=>{var _value$constructor;let type=value!==null&&value!==void 0&&(_value$constructor=value.constructor)!==null&&_value$constructor!==void 0&&_value$constructor.name?`instance of ${value.constructor.name}`:`type ${typeof value}`;return`Expected ${input} to be returned from the \"${name}\" function but got ${type}.`},TypeError);E(\"ERR_MISSING_ARGS\",(...args)=>{assert(args.length>0,\"At least one arg needs to be specified\");let msg,len=args.length;switch(args=(Array.isArray(args)?args:[args]).map((a)=>`\"${a}\"`).join(\" or \"),len){case 1:msg+=`The ${args[0]} argument`;break;case 2:msg+=`The ${args[0]} and ${args[1]} arguments`;break;default:{let last=args.pop();msg+=`The ${args.join(\", \")}, and ${last} arguments`}break}return`${msg} must be specified`},TypeError);E(\"ERR_OUT_OF_RANGE\",(str,range,input)=>{assert(range,'Missing \"range\" argument');let received;if(Number.isInteger(input)&&Math.abs(input)>4294967296)received=addNumericalSeparator(String(input));else if(typeof input===\"bigint\"){received=String(input);let limit=BigInt(2)**BigInt(32);if(input>limit||input<-limit)received=addNumericalSeparator(received);received+=\"n\"}else received=inspect(input);return`The value of \"${str}\" is out of range. It must be ${range}. Received ${received}`},RangeError);E(\"ERR_MULTIPLE_CALLBACK\",\"Callback called multiple times\",Error);E(\"ERR_METHOD_NOT_IMPLEMENTED\",\"The %s method is not implemented\",Error);E(\"ERR_STREAM_ALREADY_FINISHED\",\"Cannot call %s after a stream was finished\",Error);E(\"ERR_STREAM_CANNOT_PIPE\",\"Cannot pipe, not readable\",Error);E(\"ERR_STREAM_DESTROYED\",\"Cannot call %s after a stream was destroyed\",Error);E(\"ERR_STREAM_NULL_VALUES\",\"May not write null values to stream\",TypeError);E(\"ERR_STREAM_PREMATURE_CLOSE\",\"Premature close\",Error);E(\"ERR_STREAM_PUSH_AFTER_EOF\",\"stream.push() after EOF\",Error);E(\"ERR_STREAM_UNSHIFT_AFTER_END_EVENT\",\"stream.unshift() after end event\",Error);E(\"ERR_STREAM_WRITE_AFTER_END\",\"write after end\",Error);E(\"ERR_UNKNOWN_ENCODING\",\"Unknown encoding: %s\",TypeError);module2.exports={AbortError,aggregateTwoErrors:hideStackFrames(aggregateTwoErrors),hideStackFrames,codes}});var require_event_target_shim=__commonJS((exports2,module2)=>{Object.defineProperty(exports2,\"__esModule\",{value:!0});var privateData=new WeakMap,wrappers=new WeakMap;function pd(event){let retv=privateData.get(event);return console.assert(retv!=null,\"'this' is expected an Event object, but got\",event),retv}function setCancelFlag(data){if(data.passiveListener!=null){if(typeof console<\"u\"&&typeof console.error===\"function\")console.error(\"Unable to preventDefault inside passive event listener invocation.\",data.passiveListener);return}if(!data.event.cancelable)return;if(data.canceled=!0,typeof data.event.preventDefault===\"function\")data.event.preventDefault()}function Event(eventTarget,event){privateData.set(this,{eventTarget,event,eventPhase:2,currentTarget:eventTarget,canceled:!1,stopped:!1,immediateStopped:!1,passiveListener:null,timeStamp:event.timeStamp||Date.now()}),Object.defineProperty(this,\"isTrusted\",{value:!1,enumerable:!0});let keys=Object.keys(event);for(let i=0;i<keys.length;++i){let key=keys[i];if(!(key in this))Object.defineProperty(this,key,defineRedirectDescriptor(key))}}Event.prototype={get type(){return pd(this).event.type},get target(){return pd(this).eventTarget},get currentTarget(){return pd(this).currentTarget},composedPath(){let currentTarget=pd(this).currentTarget;if(currentTarget==null)return[];return[currentTarget]},get NONE(){return 0},get CAPTURING_PHASE(){return 1},get AT_TARGET(){return 2},get BUBBLING_PHASE(){return 3},get eventPhase(){return pd(this).eventPhase},stopPropagation(){let data=pd(this);if(data.stopped=!0,typeof data.event.stopPropagation===\"function\")data.event.stopPropagation()},stopImmediatePropagation(){let data=pd(this);if(data.stopped=!0,data.immediateStopped=!0,typeof data.event.stopImmediatePropagation===\"function\")data.event.stopImmediatePropagation()},get bubbles(){return Boolean(pd(this).event.bubbles)},get cancelable(){return Boolean(pd(this).event.cancelable)},preventDefault(){setCancelFlag(pd(this))},get defaultPrevented(){return pd(this).canceled},get composed(){return Boolean(pd(this).event.composed)},get timeStamp(){return pd(this).timeStamp},get srcElement(){return pd(this).eventTarget},get cancelBubble(){return pd(this).stopped},set cancelBubble(value){if(!value)return;let data=pd(this);if(data.stopped=!0,typeof data.event.cancelBubble===\"boolean\")data.event.cancelBubble=!0},get returnValue(){return!pd(this).canceled},set returnValue(value){if(!value)setCancelFlag(pd(this))},initEvent(){}};Object.defineProperty(Event.prototype,\"constructor\",{value:Event,configurable:!0,writable:!0});if(typeof window<\"u\"&&typeof window.Event<\"u\")Object.setPrototypeOf(Event.prototype,window.Event.prototype),wrappers.set(window.Event.prototype,Event);function defineRedirectDescriptor(key){return{get(){return pd(this).event[key]},set(value){pd(this).event[key]=value},configurable:!0,enumerable:!0}}function defineCallDescriptor(key){return{value(){let event=pd(this).event;return event[key].apply(event,arguments)},configurable:!0,enumerable:!0}}function defineWrapper(BaseEvent,proto){let keys=Object.keys(proto);if(keys.length===0)return BaseEvent;function CustomEvent(eventTarget,event){BaseEvent.call(this,eventTarget,event)}CustomEvent.prototype=Object.create(BaseEvent.prototype,{constructor:{value:CustomEvent,configurable:!0,writable:!0}});for(let i=0;i<keys.length;++i){let key=keys[i];if(!(key in BaseEvent.prototype)){let isFunc=typeof Object.getOwnPropertyDescriptor(proto,key).value===\"function\";Object.defineProperty(CustomEvent.prototype,key,isFunc?defineCallDescriptor(key):defineRedirectDescriptor(key))}}return CustomEvent}function getWrapper(proto){if(proto==null||proto===Object.prototype)return Event;let wrapper=wrappers.get(proto);if(wrapper==null)wrapper=defineWrapper(getWrapper(Object.getPrototypeOf(proto)),proto),wrappers.set(proto,wrapper);return wrapper}function wrapEvent(eventTarget,event){return new(getWrapper(Object.getPrototypeOf(event)))(eventTarget,event)}function isStopped(event){return pd(event).immediateStopped}function setEventPhase(event,eventPhase){pd(event).eventPhase=eventPhase}function setCurrentTarget(event,currentTarget){pd(event).currentTarget=currentTarget}function setPassiveListener(event,passiveListener){pd(event).passiveListener=passiveListener}var listenersMap=new WeakMap,CAPTURE=1,BUBBLE=2,ATTRIBUTE=3;function isObject(x){return x!==null&&typeof x===\"object\"}function getListeners(eventTarget){let listeners=listenersMap.get(eventTarget);if(listeners==null)throw TypeError(\"'this' is expected an EventTarget object, but got another value.\");return listeners}function defineEventAttributeDescriptor(eventName){return{get(){let node=getListeners(this).get(eventName);while(node!=null){if(node.listenerType===ATTRIBUTE)return node.listener;node=node.next}return null},set(listener){if(typeof listener!==\"function\"&&!isObject(listener))listener=null;let listeners=getListeners(this),prev=null,node=listeners.get(eventName);while(node!=null){if(node.listenerType===ATTRIBUTE)if(prev!==null)prev.next=node.next;else if(node.next!==null)listeners.set(eventName,node.next);else listeners.delete(eventName);else prev=node;node=node.next}if(listener!==null){let newNode={listener,listenerType:ATTRIBUTE,passive:!1,once:!1,next:null};if(prev===null)listeners.set(eventName,newNode);else prev.next=newNode}},configurable:!0,enumerable:!0}}function defineEventAttribute(eventTargetPrototype,eventName){Object.defineProperty(eventTargetPrototype,`on${eventName}`,defineEventAttributeDescriptor(eventName))}function defineCustomEventTarget(eventNames){function CustomEventTarget(){EventTarget.call(this)}CustomEventTarget.prototype=Object.create(EventTarget.prototype,{constructor:{value:CustomEventTarget,configurable:!0,writable:!0}});for(let i=0;i<eventNames.length;++i)defineEventAttribute(CustomEventTarget.prototype,eventNames[i]);return CustomEventTarget}function EventTarget(){if(this instanceof EventTarget){listenersMap.set(this,new Map);return}if(arguments.length===1&&Array.isArray(arguments[0]))return defineCustomEventTarget(arguments[0]);if(arguments.length>0){let types=Array(arguments.length);for(let i=0;i<arguments.length;++i)types[i]=arguments[i];return defineCustomEventTarget(types)}throw TypeError(\"Cannot call a class as a function\")}EventTarget.prototype={addEventListener(eventName,listener,options){if(listener==null)return;if(typeof listener!==\"function\"&&!isObject(listener))throw TypeError(\"'listener' should be a function or an object.\");let listeners=getListeners(this),optionsIsObj=isObject(options),listenerType=(optionsIsObj?Boolean(options.capture):Boolean(options))?CAPTURE:BUBBLE,newNode={listener,listenerType,passive:optionsIsObj&&Boolean(options.passive),once:optionsIsObj&&Boolean(options.once),next:null},node=listeners.get(eventName);if(node===void 0){listeners.set(eventName,newNode);return}let prev=null;while(node!=null){if(node.listener===listener&&node.listenerType===listenerType)return;prev=node,node=node.next}prev.next=newNode},removeEventListener(eventName,listener,options){if(listener==null)return;let listeners=getListeners(this),listenerType=(isObject(options)?Boolean(options.capture):Boolean(options))?CAPTURE:BUBBLE,prev=null,node=listeners.get(eventName);while(node!=null){if(node.listener===listener&&node.listenerType===listenerType){if(prev!==null)prev.next=node.next;else if(node.next!==null)listeners.set(eventName,node.next);else listeners.delete(eventName);return}prev=node,node=node.next}},dispatchEvent(event){if(event==null||typeof event.type!==\"string\")throw TypeError('\"event.type\" should be a string.');let listeners=getListeners(this),eventName=event.type,node=listeners.get(eventName);if(node==null)return!0;let wrappedEvent=wrapEvent(this,event),prev=null;while(node!=null){if(node.once)if(prev!==null)prev.next=node.next;else if(node.next!==null)listeners.set(eventName,node.next);else listeners.delete(eventName);else prev=node;if(setPassiveListener(wrappedEvent,node.passive?node.listener:null),typeof node.listener===\"function\")try{node.listener.call(this,wrappedEvent)}catch(err){if(typeof console<\"u\"&&typeof console.error===\"function\")console.error(err)}else if(node.listenerType!==ATTRIBUTE&&typeof node.listener.handleEvent===\"function\")node.listener.handleEvent(wrappedEvent);if(isStopped(wrappedEvent))break;node=node.next}return setPassiveListener(wrappedEvent,null),setEventPhase(wrappedEvent,0),setCurrentTarget(wrappedEvent,null),!wrappedEvent.defaultPrevented}};Object.defineProperty(EventTarget.prototype,\"constructor\",{value:EventTarget,configurable:!0,writable:!0});if(typeof window<\"u\"&&typeof window.EventTarget<\"u\")Object.setPrototypeOf(EventTarget.prototype,window.EventTarget.prototype);exports2.defineEventAttribute=defineEventAttribute;exports2.EventTarget=EventTarget;exports2.default=EventTarget;module2.exports=EventTarget;module2.exports.EventTarget=module2.exports.default=EventTarget;module2.exports.defineEventAttribute=defineEventAttribute});var require_abort_controller=__commonJS((exports2,module2)=>{Object.defineProperty(exports2,\"__esModule\",{value:!0});var eventTargetShim=require_event_target_shim();class AbortSignal extends eventTargetShim.EventTarget{constructor(){super();throw TypeError(\"AbortSignal cannot be constructed directly\")}get aborted(){let aborted=abortedFlags.get(this);if(typeof aborted!==\"boolean\")throw TypeError(`Expected 'this' to be an 'AbortSignal' object, but got ${this===null?\"null\":typeof this}`);return aborted}}eventTargetShim.defineEventAttribute(AbortSignal.prototype,\"abort\");function createAbortSignal(){let signal=Object.create(AbortSignal.prototype);return eventTargetShim.EventTarget.call(signal),abortedFlags.set(signal,!1),signal}function abortSignal(signal){if(abortedFlags.get(signal)!==!1)return;abortedFlags.set(signal,!0),signal.dispatchEvent({type:\"abort\"})}var abortedFlags=new WeakMap;Object.defineProperties(AbortSignal.prototype,{aborted:{enumerable:!0}});if(typeof Symbol===\"function\"&&typeof Symbol.toStringTag===\"symbol\")Object.defineProperty(AbortSignal.prototype,Symbol.toStringTag,{configurable:!0,value:\"AbortSignal\"});class AbortController{constructor(){signals.set(this,createAbortSignal())}get signal(){return getSignal(this)}abort(){abortSignal(getSignal(this))}}var signals=new WeakMap;function getSignal(controller){let signal=signals.get(controller);if(signal==null)throw TypeError(`Expected 'this' to be an 'AbortController' object, but got ${controller===null?\"null\":typeof controller}`);return signal}Object.defineProperties(AbortController.prototype,{signal:{enumerable:!0},abort:{enumerable:!0}});if(typeof Symbol===\"function\"&&typeof Symbol.toStringTag===\"symbol\")Object.defineProperty(AbortController.prototype,Symbol.toStringTag,{configurable:!0,value:\"AbortController\"});exports2.AbortController=AbortController;exports2.AbortSignal=AbortSignal;exports2.default=AbortController;module2.exports=AbortController;module2.exports.AbortController=module2.exports.default=AbortController;module2.exports.AbortSignal=AbortSignal});var require_util=__commonJS((exports2,module2)=>{var bufferModule=require(\"buffer\"),{format,inspect}=require_inspect(),{codes:{ERR_INVALID_ARG_TYPE}}=require_errors(),{kResistStopPropagation,AggregateError,SymbolDispose}=require_primordials(),AbortSignal=globalThis.AbortSignal||require_abort_controller().AbortSignal,AbortController=globalThis.AbortController||require_abort_controller().AbortController,AsyncFunction=Object.getPrototypeOf(async function(){}).constructor,Blob=globalThis.Blob||bufferModule.Blob,isBlob=typeof Blob<\"u\"?function(b){return b instanceof Blob}:function(b){return!1},validateAbortSignal=(signal,name)=>{if(signal!==void 0&&(signal===null||typeof signal!==\"object\"||!(\"aborted\"in signal)))throw new ERR_INVALID_ARG_TYPE(name,\"AbortSignal\",signal)},validateFunction=(value,name)=>{if(typeof value!==\"function\")throw new ERR_INVALID_ARG_TYPE(name,\"Function\",value)};module2.exports={AggregateError,kEmptyObject:Object.freeze({}),once(callback){let called=!1;return function(...args){if(called)return;called=!0,callback.apply(this,args)}},createDeferredPromise:function(){let resolve,reject;return{promise:new Promise((res,rej)=>{resolve=res,reject=rej}),resolve,reject}},promisify(fn){return new Promise((resolve,reject)=>{fn((err,...args)=>{if(err)return reject(err);return resolve(...args)})})},debuglog(){return function(){}},format,inspect,types:{isAsyncFunction(fn){return fn instanceof AsyncFunction},isArrayBufferView(arr){return ArrayBuffer.isView(arr)}},isBlob,deprecate(fn,message){return fn},addAbortListener:require(\"events\").addAbortListener||function(signal,listener){if(signal===void 0)throw new ERR_INVALID_ARG_TYPE(\"signal\",\"AbortSignal\",signal);validateAbortSignal(signal,\"signal\"),validateFunction(listener,\"listener\");let removeEventListener;if(signal.aborted)queueMicrotask(()=>listener());else signal.addEventListener(\"abort\",listener,{__proto__:null,once:!0,[kResistStopPropagation]:!0}),removeEventListener=()=>{signal.removeEventListener(\"abort\",listener)};return{__proto__:null,[SymbolDispose](){var _removeEventListener;(_removeEventListener=removeEventListener)===null||_removeEventListener===void 0||_removeEventListener()}}},AbortSignalAny:AbortSignal.any||function(signals){if(signals.length===1)return signals[0];let ac=new AbortController,abort=()=>ac.abort();return signals.forEach((signal)=>{validateAbortSignal(signal,\"signals\"),signal.addEventListener(\"abort\",abort,{once:!0})}),ac.signal.addEventListener(\"abort\",()=>{signals.forEach((signal)=>signal.removeEventListener(\"abort\",abort))},{once:!0}),ac.signal}};module2.exports.promisify.custom=Symbol.for(\"nodejs.util.promisify.custom\")});var require_validators=__commonJS((exports2,module2)=>{var{ArrayIsArray,ArrayPrototypeIncludes,ArrayPrototypeJoin,ArrayPrototypeMap,NumberIsInteger,NumberIsNaN,NumberMAX_SAFE_INTEGER,NumberMIN_SAFE_INTEGER,NumberParseInt,ObjectPrototypeHasOwnProperty,RegExpPrototypeExec,String:String2,StringPrototypeToUpperCase,StringPrototypeTrim}=require_primordials(),{hideStackFrames,codes:{ERR_SOCKET_BAD_PORT,ERR_INVALID_ARG_TYPE,ERR_INVALID_ARG_VALUE,ERR_OUT_OF_RANGE,ERR_UNKNOWN_SIGNAL}}=require_errors(),{normalizeEncoding}=require_util(),{isAsyncFunction,isArrayBufferView}=require_util().types,signals={};function isInt32(value){return value===(value|0)}function isUint32(value){return value===value>>>0}var octalReg=/^[0-7]+$/,modeDesc=\"must be a 32-bit unsigned integer or an octal string\";function parseFileMode(value,name,def){if(typeof value>\"u\")value=def;if(typeof value===\"string\"){if(RegExpPrototypeExec(octalReg,value)===null)throw new ERR_INVALID_ARG_VALUE(name,value,modeDesc);value=NumberParseInt(value,8)}return validateUint32(value,name),value}var validateInteger=hideStackFrames((value,name,min=NumberMIN_SAFE_INTEGER,max=NumberMAX_SAFE_INTEGER)=>{if(typeof value!==\"number\")throw new ERR_INVALID_ARG_TYPE(name,\"number\",value);if(!NumberIsInteger(value))throw new ERR_OUT_OF_RANGE(name,\"an integer\",value);if(value<min||value>max)throw new ERR_OUT_OF_RANGE(name,`>= ${min} && <= ${max}`,value)}),validateInt32=hideStackFrames((value,name,min=-2147483648,max=2147483647)=>{if(typeof value!==\"number\")throw new ERR_INVALID_ARG_TYPE(name,\"number\",value);if(!NumberIsInteger(value))throw new ERR_OUT_OF_RANGE(name,\"an integer\",value);if(value<min||value>max)throw new ERR_OUT_OF_RANGE(name,`>= ${min} && <= ${max}`,value)}),validateUint32=hideStackFrames((value,name,positive=!1)=>{if(typeof value!==\"number\")throw new ERR_INVALID_ARG_TYPE(name,\"number\",value);if(!NumberIsInteger(value))throw new ERR_OUT_OF_RANGE(name,\"an integer\",value);let min=positive?1:0,max=4294967295;if(value<min||value>max)throw new ERR_OUT_OF_RANGE(name,`>= ${min} && <= ${max}`,value)});function validateString(value,name){if(typeof value!==\"string\")throw new ERR_INVALID_ARG_TYPE(name,\"string\",value)}function validateNumber(value,name,min=void 0,max){if(typeof value!==\"number\")throw new ERR_INVALID_ARG_TYPE(name,\"number\",value);if(min!=null&&value<min||max!=null&&value>max||(min!=null||max!=null)&&NumberIsNaN(value))throw new ERR_OUT_OF_RANGE(name,`${min!=null?`>= ${min}`:\"\"}${min!=null&&max!=null?\" && \":\"\"}${max!=null?`<= ${max}`:\"\"}`,value)}var validateOneOf=hideStackFrames((value,name,oneOf)=>{if(!ArrayPrototypeIncludes(oneOf,value)){let reason=\"must be one of: \"+ArrayPrototypeJoin(ArrayPrototypeMap(oneOf,(v)=>typeof v===\"string\"?`'${v}'`:String2(v)),\", \");throw new ERR_INVALID_ARG_VALUE(name,value,reason)}});function validateBoolean(value,name){if(typeof value!==\"boolean\")throw new ERR_INVALID_ARG_TYPE(name,\"boolean\",value)}function getOwnPropertyValueOrDefault(options,key,defaultValue){return options==null||!ObjectPrototypeHasOwnProperty(options,key)?defaultValue:options[key]}var validateObject=hideStackFrames((value,name,options=null)=>{let allowArray=getOwnPropertyValueOrDefault(options,\"allowArray\",!1),allowFunction=getOwnPropertyValueOrDefault(options,\"allowFunction\",!1);if(!getOwnPropertyValueOrDefault(options,\"nullable\",!1)&&value===null||!allowArray&&ArrayIsArray(value)||typeof value!==\"object\"&&(!allowFunction||typeof value!==\"function\"))throw new ERR_INVALID_ARG_TYPE(name,\"Object\",value)}),validateDictionary=hideStackFrames((value,name)=>{if(value!=null&&typeof value!==\"object\"&&typeof value!==\"function\")throw new ERR_INVALID_ARG_TYPE(name,\"a dictionary\",value)}),validateArray=hideStackFrames((value,name,minLength=0)=>{if(!ArrayIsArray(value))throw new ERR_INVALID_ARG_TYPE(name,\"Array\",value);if(value.length<minLength){let reason=`must be longer than ${minLength}`;throw new ERR_INVALID_ARG_VALUE(name,value,reason)}});function validateStringArray(value,name){validateArray(value,name);for(let i=0;i<value.length;i++)validateString(value[i],`${name}[${i}]`)}function validateBooleanArray(value,name){validateArray(value,name);for(let i=0;i<value.length;i++)validateBoolean(value[i],`${name}[${i}]`)}function validateAbortSignalArray(value,name){validateArray(value,name);for(let i=0;i<value.length;i++){let signal=value[i],indexedName=`${name}[${i}]`;if(signal==null)throw new ERR_INVALID_ARG_TYPE(indexedName,\"AbortSignal\",signal);validateAbortSignal(signal,indexedName)}}function validateSignalName(signal,name=\"signal\"){if(validateString(signal,name),signals[signal]===void 0){if(signals[StringPrototypeToUpperCase(signal)]!==void 0)throw new ERR_UNKNOWN_SIGNAL(signal+\" (signals must use all capital letters)\");throw new ERR_UNKNOWN_SIGNAL(signal)}}var validateBuffer=hideStackFrames((buffer,name=\"buffer\")=>{if(!isArrayBufferView(buffer))throw new ERR_INVALID_ARG_TYPE(name,[\"Buffer\",\"TypedArray\",\"DataView\"],buffer)});function validateEncoding(data,encoding){let normalizedEncoding=normalizeEncoding(encoding),length=data.length;if(normalizedEncoding===\"hex\"&&length%2!==0)throw new ERR_INVALID_ARG_VALUE(\"encoding\",encoding,`is invalid for data of length ${length}`)}function validatePort(port,name=\"Port\",allowZero=!0){if(typeof port!==\"number\"&&typeof port!==\"string\"||typeof port===\"string\"&&StringPrototypeTrim(port).length===0||+port!==+port>>>0||port>65535||port===0&&!allowZero)throw new ERR_SOCKET_BAD_PORT(name,port,allowZero);return port|0}var validateAbortSignal=hideStackFrames((signal,name)=>{if(signal!==void 0&&(signal===null||typeof signal!==\"object\"||!(\"aborted\"in signal)))throw new ERR_INVALID_ARG_TYPE(name,\"AbortSignal\",signal)}),validateFunction=hideStackFrames((value,name)=>{if(typeof value!==\"function\")throw new ERR_INVALID_ARG_TYPE(name,\"Function\",value)}),validatePlainFunction=hideStackFrames((value,name)=>{if(typeof value!==\"function\"||isAsyncFunction(value))throw new ERR_INVALID_ARG_TYPE(name,\"Function\",value)}),validateUndefined=hideStackFrames((value,name)=>{if(value!==void 0)throw new ERR_INVALID_ARG_TYPE(name,\"undefined\",value)});function validateUnion(value,name,union){if(!ArrayPrototypeIncludes(union,value))throw new ERR_INVALID_ARG_TYPE(name,`('${ArrayPrototypeJoin(union,\"|\")}')`,value)}var linkValueRegExp=/^(?:<[^>]*>)(?:\\s*;\\s*[^;\"\\s]+(?:=(\")?[^;\"\\s]*\\1)?)*$/;function validateLinkHeaderFormat(value,name){if(typeof value>\"u\"||!RegExpPrototypeExec(linkValueRegExp,value))throw new ERR_INVALID_ARG_VALUE(name,value,'must be an array or string of format \"</styles.css>; rel=preload; as=style\"')}function validateLinkHeaderValue(hints){if(typeof hints===\"string\")return validateLinkHeaderFormat(hints,\"hints\"),hints;else if(ArrayIsArray(hints)){let hintsLength=hints.length,result=\"\";if(hintsLength===0)return result;for(let i=0;i<hintsLength;i++){let link=hints[i];if(validateLinkHeaderFormat(link,\"hints\"),result+=link,i!==hintsLength-1)result+=\", \"}return result}throw new ERR_INVALID_ARG_VALUE(\"hints\",hints,'must be an array or string of format \"</styles.css>; rel=preload; as=style\"')}module2.exports={isInt32,isUint32,parseFileMode,validateArray,validateStringArray,validateBooleanArray,validateAbortSignalArray,validateBoolean,validateBuffer,validateDictionary,validateEncoding,validateFunction,validateInt32,validateInteger,validateNumber,validateObject,validateOneOf,validatePlainFunction,validatePort,validateSignalName,validateString,validateUint32,validateUndefined,validateUnion,validateAbortSignal,validateLinkHeaderValue}});var require_process=__commonJS((exports2,module2)=>{module2.exports=globalThis.process});var require_utils=__commonJS((exports2,module2)=>{var{SymbolAsyncIterator,SymbolIterator,SymbolFor}=require_primordials(),kIsDestroyed=SymbolFor(\"nodejs.stream.destroyed\"),kIsErrored=SymbolFor(\"nodejs.stream.errored\"),kIsReadable=SymbolFor(\"nodejs.stream.readable\"),kIsWritable=SymbolFor(\"nodejs.stream.writable\"),kIsDisturbed=SymbolFor(\"nodejs.stream.disturbed\"),kIsClosedPromise=SymbolFor(\"nodejs.webstream.isClosedPromise\"),kControllerErrorFunction=SymbolFor(\"nodejs.webstream.controllerErrorFunction\");function isReadableNodeStream(obj,strict=!1){var _obj$_readableState;return!!(obj&&typeof obj.pipe===\"function\"&&typeof obj.on===\"function\"&&(!strict||typeof obj.pause===\"function\"&&typeof obj.resume===\"function\")&&(!obj._writableState||((_obj$_readableState=obj._readableState)===null||_obj$_readableState===void 0?void 0:_obj$_readableState.readable)!==!1)&&(!obj._writableState||obj._readableState))}function isWritableNodeStream(obj){var _obj$_writableState;return!!(obj&&typeof obj.write===\"function\"&&typeof obj.on===\"function\"&&(!obj._readableState||((_obj$_writableState=obj._writableState)===null||_obj$_writableState===void 0?void 0:_obj$_writableState.writable)!==!1))}function isDuplexNodeStream(obj){return!!(obj&&typeof obj.pipe===\"function\"&&obj._readableState&&typeof obj.on===\"function\"&&typeof obj.write===\"function\")}function isNodeStream(obj){return obj&&(obj._readableState||obj._writableState||typeof obj.write===\"function\"&&typeof obj.on===\"function\"||typeof obj.pipe===\"function\"&&typeof obj.on===\"function\")}function isReadableStream(obj){return!!(obj&&!isNodeStream(obj)&&typeof obj.pipeThrough===\"function\"&&typeof obj.getReader===\"function\"&&typeof obj.cancel===\"function\")}function isWritableStream(obj){return!!(obj&&!isNodeStream(obj)&&typeof obj.getWriter===\"function\"&&typeof obj.abort===\"function\")}function isTransformStream(obj){return!!(obj&&!isNodeStream(obj)&&typeof obj.readable===\"object\"&&typeof obj.writable===\"object\")}function isWebStream(obj){return isReadableStream(obj)||isWritableStream(obj)||isTransformStream(obj)}function isIterable(obj,isAsync){if(obj==null)return!1;if(isAsync===!0)return typeof obj[SymbolAsyncIterator]===\"function\";if(isAsync===!1)return typeof obj[SymbolIterator]===\"function\";return typeof obj[SymbolAsyncIterator]===\"function\"||typeof obj[SymbolIterator]===\"function\"}function isDestroyed(stream){if(!isNodeStream(stream))return null;let{_writableState:wState,_readableState:rState}=stream,state=wState||rState;return!!(stream.destroyed||stream[kIsDestroyed]||state!==null&&state!==void 0&&state.destroyed)}function isWritableEnded(stream){if(!isWritableNodeStream(stream))return null;if(stream.writableEnded===!0)return!0;let wState=stream._writableState;if(wState!==null&&wState!==void 0&&wState.errored)return!1;if(typeof(wState===null||wState===void 0?void 0:wState.ended)!==\"boolean\")return null;return wState.ended}function isWritableFinished(stream,strict){if(!isWritableNodeStream(stream))return null;if(stream.writableFinished===!0)return!0;let wState=stream._writableState;if(wState!==null&&wState!==void 0&&wState.errored)return!1;if(typeof(wState===null||wState===void 0?void 0:wState.finished)!==\"boolean\")return null;return!!(wState.finished||strict===!1&&wState.ended===!0&&wState.length===0)}function isReadableEnded(stream){if(!isReadableNodeStream(stream))return null;if(stream.readableEnded===!0)return!0;let rState=stream._readableState;if(!rState||rState.errored)return!1;if(typeof(rState===null||rState===void 0?void 0:rState.ended)!==\"boolean\")return null;return rState.ended}function isReadableFinished(stream,strict){if(!isReadableNodeStream(stream))return null;let rState=stream._readableState;if(rState!==null&&rState!==void 0&&rState.errored)return!1;if(typeof(rState===null||rState===void 0?void 0:rState.endEmitted)!==\"boolean\")return null;return!!(rState.endEmitted||strict===!1&&rState.ended===!0&&rState.length===0)}function isReadable(stream){if(stream&&stream[kIsReadable]!=null)return stream[kIsReadable];if(typeof(stream===null||stream===void 0?void 0:stream.readable)!==\"boolean\")return null;if(isDestroyed(stream))return!1;return isReadableNodeStream(stream)&&stream.readable&&!isReadableFinished(stream)}function isWritable(stream){if(stream&&stream[kIsWritable]!=null)return stream[kIsWritable];if(typeof(stream===null||stream===void 0?void 0:stream.writable)!==\"boolean\")return null;if(isDestroyed(stream))return!1;return isWritableNodeStream(stream)&&stream.writable&&!isWritableEnded(stream)}function isFinished(stream,opts){if(!isNodeStream(stream))return null;if(isDestroyed(stream))return!0;if((opts===null||opts===void 0?void 0:opts.readable)!==!1&&isReadable(stream))return!1;if((opts===null||opts===void 0?void 0:opts.writable)!==!1&&isWritable(stream))return!1;return!0}function isWritableErrored(stream){var _stream$_writableStat,_stream$_writableStat2;if(!isNodeStream(stream))return null;if(stream.writableErrored)return stream.writableErrored;return(_stream$_writableStat=(_stream$_writableStat2=stream._writableState)===null||_stream$_writableStat2===void 0?void 0:_stream$_writableStat2.errored)!==null&&_stream$_writableStat!==void 0?_stream$_writableStat:null}function isReadableErrored(stream){var _stream$_readableStat,_stream$_readableStat2;if(!isNodeStream(stream))return null;if(stream.readableErrored)return stream.readableErrored;return(_stream$_readableStat=(_stream$_readableStat2=stream._readableState)===null||_stream$_readableStat2===void 0?void 0:_stream$_readableStat2.errored)!==null&&_stream$_readableStat!==void 0?_stream$_readableStat:null}function isClosed(stream){if(!isNodeStream(stream))return null;if(typeof stream.closed===\"boolean\")return stream.closed;let{_writableState:wState,_readableState:rState}=stream;if(typeof(wState===null||wState===void 0?void 0:wState.closed)===\"boolean\"||typeof(rState===null||rState===void 0?void 0:rState.closed)===\"boolean\")return(wState===null||wState===void 0?void 0:wState.closed)||(rState===null||rState===void 0?void 0:rState.closed);if(typeof stream._closed===\"boolean\"&&isOutgoingMessage(stream))return stream._closed;return null}function isOutgoingMessage(stream){return typeof stream._closed===\"boolean\"&&typeof stream._defaultKeepAlive===\"boolean\"&&typeof stream._removedConnection===\"boolean\"&&typeof stream._removedContLen===\"boolean\"}function isServerResponse(stream){return typeof stream._sent100===\"boolean\"&&isOutgoingMessage(stream)}function isServerRequest(stream){var _stream$req;return typeof stream._consuming===\"boolean\"&&typeof stream._dumped===\"boolean\"&&((_stream$req=stream.req)===null||_stream$req===void 0?void 0:_stream$req.upgradeOrConnect)===void 0}function willEmitClose(stream){if(!isNodeStream(stream))return null;let{_writableState:wState,_readableState:rState}=stream,state=wState||rState;return!state&&isServerResponse(stream)||!!(state&&state.autoDestroy&&state.emitClose&&state.closed===!1)}function isDisturbed(stream){var _stream$kIsDisturbed;return!!(stream&&((_stream$kIsDisturbed=stream[kIsDisturbed])!==null&&_stream$kIsDisturbed!==void 0?_stream$kIsDisturbed:stream.readableDidRead||stream.readableAborted))}function isErrored(stream){var _ref,_ref2,_ref3,_ref4,_ref5,_stream$kIsErrored,_stream$_readableStat3,_stream$_writableStat3,_stream$_readableStat4,_stream$_writableStat4;return!!(stream&&((_ref=(_ref2=(_ref3=(_ref4=(_ref5=(_stream$kIsErrored=stream[kIsErrored])!==null&&_stream$kIsErrored!==void 0?_stream$kIsErrored:stream.readableErrored)!==null&&_ref5!==void 0?_ref5:stream.writableErrored)!==null&&_ref4!==void 0?_ref4:(_stream$_readableStat3=stream._readableState)===null||_stream$_readableStat3===void 0?void 0:_stream$_readableStat3.errorEmitted)!==null&&_ref3!==void 0?_ref3:(_stream$_writableStat3=stream._writableState)===null||_stream$_writableStat3===void 0?void 0:_stream$_writableStat3.errorEmitted)!==null&&_ref2!==void 0?_ref2:(_stream$_readableStat4=stream._readableState)===null||_stream$_readableStat4===void 0?void 0:_stream$_readableStat4.errored)!==null&&_ref!==void 0?_ref:(_stream$_writableStat4=stream._writableState)===null||_stream$_writableStat4===void 0?void 0:_stream$_writableStat4.errored))}module2.exports={isDestroyed,kIsDestroyed,isDisturbed,kIsDisturbed,isErrored,kIsErrored,isReadable,kIsReadable,kIsClosedPromise,kControllerErrorFunction,kIsWritable,isClosed,isDuplexNodeStream,isFinished,isIterable,isReadableNodeStream,isReadableStream,isReadableEnded,isReadableFinished,isReadableErrored,isNodeStream,isWebStream,isWritable,isWritableNodeStream,isWritableStream,isWritableEnded,isWritableFinished,isWritableErrored,isServerRequest,isServerResponse,willEmitClose,isTransformStream}});var require_end_of_stream=__commonJS((exports2,module2)=>{var process=require_process(),{AbortError,codes}=require_errors(),{ERR_INVALID_ARG_TYPE,ERR_STREAM_PREMATURE_CLOSE}=codes,{kEmptyObject,once}=require_util(),{validateAbortSignal,validateFunction,validateObject,validateBoolean}=require_validators(),{Promise:Promise2,PromisePrototypeThen,SymbolDispose}=require_primordials(),{isClosed,isReadable,isReadableNodeStream,isReadableStream,isReadableFinished,isReadableErrored,isWritable,isWritableNodeStream,isWritableStream,isWritableFinished,isWritableErrored,isNodeStream,willEmitClose:_willEmitClose,kIsClosedPromise}=require_utils(),addAbortListener;function isRequest(stream){return stream.setHeader&&typeof stream.abort===\"function\"}var nop=()=>{};function eos(stream,options,callback){var _options$readable,_options$writable;if(arguments.length===2)callback=options,options=kEmptyObject;else if(options==null)options=kEmptyObject;else validateObject(options,\"options\");if(validateFunction(callback,\"callback\"),validateAbortSignal(options.signal,\"options.signal\"),callback=once(callback),isReadableStream(stream)||isWritableStream(stream))return eosWeb(stream,options,callback);if(!isNodeStream(stream))throw new ERR_INVALID_ARG_TYPE(\"stream\",[\"ReadableStream\",\"WritableStream\",\"Stream\"],stream);let readable=(_options$readable=options.readable)!==null&&_options$readable!==void 0?_options$readable:isReadableNodeStream(stream),writable=(_options$writable=options.writable)!==null&&_options$writable!==void 0?_options$writable:isWritableNodeStream(stream),wState=stream._writableState,rState=stream._readableState,onlegacyfinish=()=>{if(!stream.writable)onfinish()},willEmitClose=_willEmitClose(stream)&&isReadableNodeStream(stream)===readable&&isWritableNodeStream(stream)===writable,writableFinished=isWritableFinished(stream,!1),onfinish=()=>{if(writableFinished=!0,stream.destroyed)willEmitClose=!1;if(willEmitClose&&(!stream.readable||readable))return;if(!readable||readableFinished)callback.call(stream)},readableFinished=isReadableFinished(stream,!1),onend=()=>{if(readableFinished=!0,stream.destroyed)willEmitClose=!1;if(willEmitClose&&(!stream.writable||writable))return;if(!writable||writableFinished)callback.call(stream)},onerror=(err)=>{callback.call(stream,err)},closed=isClosed(stream),onclose=()=>{closed=!0;let errored=isWritableErrored(stream)||isReadableErrored(stream);if(errored&&typeof errored!==\"boolean\")return callback.call(stream,errored);if(readable&&!readableFinished&&isReadableNodeStream(stream,!0)){if(!isReadableFinished(stream,!1))return callback.call(stream,new ERR_STREAM_PREMATURE_CLOSE)}if(writable&&!writableFinished){if(!isWritableFinished(stream,!1))return callback.call(stream,new ERR_STREAM_PREMATURE_CLOSE)}callback.call(stream)},onclosed=()=>{closed=!0;let errored=isWritableErrored(stream)||isReadableErrored(stream);if(errored&&typeof errored!==\"boolean\")return callback.call(stream,errored);callback.call(stream)},onrequest=()=>{stream.req.on(\"finish\",onfinish)};if(isRequest(stream)){if(stream.on(\"complete\",onfinish),!willEmitClose)stream.on(\"abort\",onclose);if(stream.req)onrequest();else stream.on(\"request\",onrequest)}else if(writable&&!wState)stream.on(\"end\",onlegacyfinish),stream.on(\"close\",onlegacyfinish);if(!willEmitClose&&typeof stream.aborted===\"boolean\")stream.on(\"aborted\",onclose);if(stream.on(\"end\",onend),stream.on(\"finish\",onfinish),options.error!==!1)stream.on(\"error\",onerror);if(stream.on(\"close\",onclose),closed)process.nextTick(onclose);else if(wState!==null&&wState!==void 0&&wState.errorEmitted||rState!==null&&rState!==void 0&&rState.errorEmitted){if(!willEmitClose)process.nextTick(onclosed)}else if(!readable&&(!willEmitClose||isReadable(stream))&&(writableFinished||isWritable(stream)===!1))process.nextTick(onclosed);else if(!writable&&(!willEmitClose||isWritable(stream))&&(readableFinished||isReadable(stream)===!1))process.nextTick(onclosed);else if(rState&&stream.req&&stream.aborted)process.nextTick(onclosed);let cleanup=()=>{if(callback=nop,stream.removeListener(\"aborted\",onclose),stream.removeListener(\"complete\",onfinish),stream.removeListener(\"abort\",onclose),stream.removeListener(\"request\",onrequest),stream.req)stream.req.removeListener(\"finish\",onfinish);stream.removeListener(\"end\",onlegacyfinish),stream.removeListener(\"close\",onlegacyfinish),stream.removeListener(\"finish\",onfinish),stream.removeListener(\"end\",onend),stream.removeListener(\"error\",onerror),stream.removeListener(\"close\",onclose)};if(options.signal&&!closed){let abort=()=>{let endCallback=callback;cleanup(),endCallback.call(stream,new AbortError(void 0,{cause:options.signal.reason}))};if(options.signal.aborted)process.nextTick(abort);else{addAbortListener=addAbortListener||require_util().addAbortListener;let disposable=addAbortListener(options.signal,abort),originalCallback=callback;callback=once((...args)=>{disposable[SymbolDispose](),originalCallback.apply(stream,args)})}}return cleanup}function eosWeb(stream,options,callback){let isAborted=!1,abort=nop;if(options.signal)if(abort=()=>{isAborted=!0,callback.call(stream,new AbortError(void 0,{cause:options.signal.reason}))},options.signal.aborted)process.nextTick(abort);else{addAbortListener=addAbortListener||require_util().addAbortListener;let disposable=addAbortListener(options.signal,abort),originalCallback=callback;callback=once((...args)=>{disposable[SymbolDispose](),originalCallback.apply(stream,args)})}let resolverFn=(...args)=>{if(!isAborted)process.nextTick(()=>callback.apply(stream,args))};return PromisePrototypeThen(stream[kIsClosedPromise].promise,resolverFn,resolverFn),nop}function finished(stream,opts){var _opts;let autoCleanup=!1;if(opts===null)opts=kEmptyObject;if((_opts=opts)!==null&&_opts!==void 0&&_opts.cleanup)validateBoolean(opts.cleanup,\"cleanup\"),autoCleanup=opts.cleanup;return new Promise2((resolve,reject)=>{let cleanup=eos(stream,opts,(err)=>{if(autoCleanup)cleanup();if(err)reject(err);else resolve()})})}module2.exports=eos;module2.exports.finished=finished});var require_destroy=__commonJS((exports2,module2)=>{var process=require_process(),{aggregateTwoErrors,codes:{ERR_MULTIPLE_CALLBACK},AbortError}=require_errors(),{Symbol:Symbol2}=require_primordials(),{kIsDestroyed,isDestroyed,isFinished,isServerRequest}=require_utils(),kDestroy=Symbol2(\"kDestroy\"),kConstruct=Symbol2(\"kConstruct\");function checkError(err,w,r){if(err){if(err.stack,w&&!w.errored)w.errored=err;if(r&&!r.errored)r.errored=err}}function destroy(err,cb){let r=this._readableState,w=this._writableState,s=w||r;if(w!==null&&w!==void 0&&w.destroyed||r!==null&&r!==void 0&&r.destroyed){if(typeof cb===\"function\")cb();return this}if(checkError(err,w,r),w)w.destroyed=!0;if(r)r.destroyed=!0;if(!s.constructed)this.once(kDestroy,function(er){_destroy(this,aggregateTwoErrors(er,err),cb)});else _destroy(this,err,cb);return this}function _destroy(self,err,cb){let called=!1;function onDestroy(err2){if(called)return;called=!0;let{_readableState:r,_writableState:w}=self;if(checkError(err2,w,r),w)w.closed=!0;if(r)r.closed=!0;if(typeof cb===\"function\")cb(err2);if(err2)process.nextTick(emitErrorCloseNT,self,err2);else process.nextTick(emitCloseNT,self)}try{self._destroy(err||null,onDestroy)}catch(err2){onDestroy(err2)}}function emitErrorCloseNT(self,err){emitErrorNT(self,err),emitCloseNT(self)}function emitCloseNT(self){let{_readableState:r,_writableState:w}=self;if(w)w.closeEmitted=!0;if(r)r.closeEmitted=!0;if(w!==null&&w!==void 0&&w.emitClose||r!==null&&r!==void 0&&r.emitClose)self.emit(\"close\")}function emitErrorNT(self,err){let{_readableState:r,_writableState:w}=self;if(w!==null&&w!==void 0&&w.errorEmitted||r!==null&&r!==void 0&&r.errorEmitted)return;if(w)w.errorEmitted=!0;if(r)r.errorEmitted=!0;self.emit(\"error\",err)}function undestroy(){let r=this._readableState,w=this._writableState;if(r)r.constructed=!0,r.closed=!1,r.closeEmitted=!1,r.destroyed=!1,r.errored=null,r.errorEmitted=!1,r.reading=!1,r.ended=r.readable===!1,r.endEmitted=r.readable===!1;if(w)w.constructed=!0,w.destroyed=!1,w.closed=!1,w.closeEmitted=!1,w.errored=null,w.errorEmitted=!1,w.finalCalled=!1,w.prefinished=!1,w.ended=w.writable===!1,w.ending=w.writable===!1,w.finished=w.writable===!1}function errorOrDestroy(stream,err,sync){let{_readableState:r,_writableState:w}=stream;if(w!==null&&w!==void 0&&w.destroyed||r!==null&&r!==void 0&&r.destroyed)return this;if(r!==null&&r!==void 0&&r.autoDestroy||w!==null&&w!==void 0&&w.autoDestroy)stream.destroy(err);else if(err){if(err.stack,w&&!w.errored)w.errored=err;if(r&&!r.errored)r.errored=err;if(sync)process.nextTick(emitErrorNT,stream,err);else emitErrorNT(stream,err)}}function construct(stream,cb){if(typeof stream._construct!==\"function\")return;let{_readableState:r,_writableState:w}=stream;if(r)r.constructed=!1;if(w)w.constructed=!1;if(stream.once(kConstruct,cb),stream.listenerCount(kConstruct)>1)return;process.nextTick(constructNT,stream)}function constructNT(stream){let called=!1;function onConstruct(err){if(called){errorOrDestroy(stream,err!==null&&err!==void 0?err:new ERR_MULTIPLE_CALLBACK);return}called=!0;let{_readableState:r,_writableState:w}=stream,s=w||r;if(r)r.constructed=!0;if(w)w.constructed=!0;if(s.destroyed)stream.emit(kDestroy,err);else if(err)errorOrDestroy(stream,err,!0);else process.nextTick(emitConstructNT,stream)}try{stream._construct((err)=>{process.nextTick(onConstruct,err)})}catch(err){process.nextTick(onConstruct,err)}}function emitConstructNT(stream){stream.emit(kConstruct)}function isRequest(stream){return(stream===null||stream===void 0?void 0:stream.setHeader)&&typeof stream.abort===\"function\"}function emitCloseLegacy(stream){stream.emit(\"close\")}function emitErrorCloseLegacy(stream,err){stream.emit(\"error\",err),process.nextTick(emitCloseLegacy,stream)}function destroyer(stream,err){if(!stream||isDestroyed(stream))return;if(!err&&!isFinished(stream))err=new AbortError;if(isServerRequest(stream))stream.socket=null,stream.destroy(err);else if(isRequest(stream))stream.abort();else if(isRequest(stream.req))stream.req.abort();else if(typeof stream.destroy===\"function\")stream.destroy(err);else if(typeof stream.close===\"function\")stream.close();else if(err)process.nextTick(emitErrorCloseLegacy,stream,err);else process.nextTick(emitCloseLegacy,stream);if(!stream.destroyed)stream[kIsDestroyed]=!0}module2.exports={construct,destroyer,destroy,undestroy,errorOrDestroy}});var require_legacy=__commonJS((exports2,module2)=>{var{ArrayIsArray,ObjectSetPrototypeOf}=require_primordials(),{EventEmitter:EE}=require(\"events\");function Stream(opts){EE.call(this,opts)}ObjectSetPrototypeOf(Stream.prototype,EE.prototype);ObjectSetPrototypeOf(Stream,EE);Stream.prototype.pipe=function(dest,options){let source=this;function ondata(chunk){if(dest.writable&&dest.write(chunk)===!1&&source.pause)source.pause()}source.on(\"data\",ondata);function ondrain(){if(source.readable&&source.resume)source.resume()}if(dest.on(\"drain\",ondrain),!dest._isStdio&&(!options||options.end!==!1))source.on(\"end\",onend),source.on(\"close\",onclose);let didOnEnd=!1;function onend(){if(didOnEnd)return;didOnEnd=!0,dest.end()}function onclose(){if(didOnEnd)return;if(didOnEnd=!0,typeof dest.destroy===\"function\")dest.destroy()}function onerror(er){if(cleanup(),EE.listenerCount(this,\"error\")===0)this.emit(\"error\",er)}prependListener(source,\"error\",onerror),prependListener(dest,\"error\",onerror);function cleanup(){source.removeListener(\"data\",ondata),dest.removeListener(\"drain\",ondrain),source.removeListener(\"end\",onend),source.removeListener(\"close\",onclose),source.removeListener(\"error\",onerror),dest.removeListener(\"error\",onerror),source.removeListener(\"end\",cleanup),source.removeListener(\"close\",cleanup),dest.removeListener(\"close\",cleanup)}return source.on(\"end\",cleanup),source.on(\"close\",cleanup),dest.on(\"close\",cleanup),dest.emit(\"pipe\",source),dest};function prependListener(emitter,event,fn){if(typeof emitter.prependListener===\"function\")return emitter.prependListener(event,fn);if(!emitter._events||!emitter._events[event])emitter.on(event,fn);else if(ArrayIsArray(emitter._events[event]))emitter._events[event].unshift(fn);else emitter._events[event]=[fn,emitter._events[event]]}module2.exports={Stream,prependListener}});var require_add_abort_signal=__commonJS((exports2,module2)=>{var{SymbolDispose}=require_primordials(),{AbortError,codes}=require_errors(),{isNodeStream,isWebStream,kControllerErrorFunction}=require_utils(),eos=require_end_of_stream(),{ERR_INVALID_ARG_TYPE}=codes,addAbortListener,validateAbortSignal=(signal,name)=>{if(typeof signal!==\"object\"||!(\"aborted\"in signal))throw new ERR_INVALID_ARG_TYPE(name,\"AbortSignal\",signal)};module2.exports.addAbortSignal=function(signal,stream){if(validateAbortSignal(signal,\"signal\"),!isNodeStream(stream)&&!isWebStream(stream))throw new ERR_INVALID_ARG_TYPE(\"stream\",[\"ReadableStream\",\"WritableStream\",\"Stream\"],stream);return module2.exports.addAbortSignalNoValidate(signal,stream)};module2.exports.addAbortSignalNoValidate=function(signal,stream){if(typeof signal!==\"object\"||!(\"aborted\"in signal))return stream;let onAbort=isNodeStream(stream)?()=>{stream.destroy(new AbortError(void 0,{cause:signal.reason}))}:()=>{stream[kControllerErrorFunction](new AbortError(void 0,{cause:signal.reason}))};if(signal.aborted)onAbort();else{addAbortListener=addAbortListener||require_util().addAbortListener;let disposable=addAbortListener(signal,onAbort);eos(stream,disposable[SymbolDispose])}return stream}});var require_buffer_list=__commonJS((exports2,module2)=>{var{StringPrototypeSlice,SymbolIterator,TypedArrayPrototypeSet,Uint8Array:Uint8Array2}=require_primordials(),{Buffer}=require(\"buffer\"),{inspect}=require_util();module2.exports=class{constructor(){this.head=null,this.tail=null,this.length=0}push(v){let entry={data:v,next:null};if(this.length>0)this.tail.next=entry;else this.head=entry;this.tail=entry,++this.length}unshift(v){let entry={data:v,next:this.head};if(this.length===0)this.tail=entry;this.head=entry,++this.length}shift(){if(this.length===0)return;let ret=this.head.data;if(this.length===1)this.head=this.tail=null;else this.head=this.head.next;return--this.length,ret}clear(){this.head=this.tail=null,this.length=0}join(s){if(this.length===0)return\"\";let p=this.head,ret=\"\"+p.data;while((p=p.next)!==null)ret+=s+p.data;return ret}concat(n){if(this.length===0)return Buffer.alloc(0);let ret=Buffer.allocUnsafe(n>>>0),p=this.head,i=0;while(p)TypedArrayPrototypeSet(ret,p.data,i),i+=p.data.length,p=p.next;return ret}consume(n,hasStrings){let data=this.head.data;if(n<data.length){let slice=data.slice(0,n);return this.head.data=data.slice(n),slice}if(n===data.length)return this.shift();return hasStrings?this._getString(n):this._getBuffer(n)}first(){return this.head.data}*[SymbolIterator](){for(let p=this.head;p;p=p.next)yield p.data}_getString(n){let ret=\"\",p=this.head,c=0;do{let str=p.data;if(n>str.length)ret+=str,n-=str.length;else{if(n===str.length)if(ret+=str,++c,p.next)this.head=p.next;else this.head=this.tail=null;else ret+=StringPrototypeSlice(str,0,n),this.head=p,p.data=StringPrototypeSlice(str,n);break}++c}while((p=p.next)!==null);return this.length-=c,ret}_getBuffer(n){let ret=Buffer.allocUnsafe(n),retLen=n,p=this.head,c=0;do{let buf=p.data;if(n>buf.length)TypedArrayPrototypeSet(ret,buf,retLen-n),n-=buf.length;else{if(n===buf.length)if(TypedArrayPrototypeSet(ret,buf,retLen-n),++c,p.next)this.head=p.next;else this.head=this.tail=null;else TypedArrayPrototypeSet(ret,new Uint8Array2(buf.buffer,buf.byteOffset,n),retLen-n),this.head=p,p.data=buf.slice(n);break}++c}while((p=p.next)!==null);return this.length-=c,ret}[Symbol.for(\"nodejs.util.inspect.custom\")](_,options){return inspect(this,{...options,depth:0,customInspect:!1})}}});var require_state=__commonJS((exports2,module2)=>{var{MathFloor,NumberIsInteger}=require_primordials(),{validateInteger}=require_validators(),{ERR_INVALID_ARG_VALUE}=require_errors().codes,defaultHighWaterMarkBytes=16384,defaultHighWaterMarkObjectMode=16;function highWaterMarkFrom(options,isDuplex,duplexKey){return options.highWaterMark!=null?options.highWaterMark:isDuplex?options[duplexKey]:null}function getDefaultHighWaterMark(objectMode){return objectMode?defaultHighWaterMarkObjectMode:defaultHighWaterMarkBytes}function setDefaultHighWaterMark(objectMode,value){if(validateInteger(value,\"value\",0),objectMode)defaultHighWaterMarkObjectMode=value;else defaultHighWaterMarkBytes=value}function getHighWaterMark(state,options,duplexKey,isDuplex){let hwm=highWaterMarkFrom(options,isDuplex,duplexKey);if(hwm!=null){if(!NumberIsInteger(hwm)||hwm<0){let name=isDuplex?`options.${duplexKey}`:\"options.highWaterMark\";throw new ERR_INVALID_ARG_VALUE(name,hwm)}return MathFloor(hwm)}return getDefaultHighWaterMark(state.objectMode)}module2.exports={getHighWaterMark,getDefaultHighWaterMark,setDefaultHighWaterMark}});var require_safe_buffer=__commonJS((exports2,module2)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var buffer=require(\"buffer\"),Buffer=buffer.Buffer;function copyProps(src,dst){for(var key in src)dst[key]=src[key]}if(Buffer.from&&Buffer.alloc&&Buffer.allocUnsafe&&Buffer.allocUnsafeSlow)module2.exports=buffer;else copyProps(buffer,exports2),exports2.Buffer=SafeBuffer;function SafeBuffer(arg,encodingOrOffset,length){return Buffer(arg,encodingOrOffset,length)}SafeBuffer.prototype=Object.create(Buffer.prototype);copyProps(Buffer,SafeBuffer);SafeBuffer.from=function(arg,encodingOrOffset,length){if(typeof arg===\"number\")throw TypeError(\"Argument must not be a number\");return Buffer(arg,encodingOrOffset,length)};SafeBuffer.alloc=function(size,fill,encoding){if(typeof size!==\"number\")throw TypeError(\"Argument must be a number\");var buf=Buffer(size);if(fill!==void 0)if(typeof encoding===\"string\")buf.fill(fill,encoding);else buf.fill(fill);else buf.fill(0);return buf};SafeBuffer.allocUnsafe=function(size){if(typeof size!==\"number\")throw TypeError(\"Argument must be a number\");return Buffer(size)};SafeBuffer.allocUnsafeSlow=function(size){if(typeof size!==\"number\")throw TypeError(\"Argument must be a number\");return buffer.SlowBuffer(size)}});var require_string_decoder=__commonJS((exports2)=>{var Buffer=require_safe_buffer().Buffer,isEncoding=Buffer.isEncoding||function(encoding){switch(encoding=\"\"+encoding,encoding&&encoding.toLowerCase()){case\"hex\":case\"utf8\":case\"utf-8\":case\"ascii\":case\"binary\":case\"base64\":case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":case\"raw\":return!0;default:return!1}};function _normalizeEncoding(enc){if(!enc)return\"utf8\";var retried;while(!0)switch(enc){case\"utf8\":case\"utf-8\":return\"utf8\";case\"ucs2\":case\"ucs-2\":case\"utf16le\":case\"utf-16le\":return\"utf16le\";case\"latin1\":case\"binary\":return\"latin1\";case\"base64\":case\"ascii\":case\"hex\":return enc;default:if(retried)return;enc=(\"\"+enc).toLowerCase(),retried=!0}}function normalizeEncoding(enc){var nenc=_normalizeEncoding(enc);if(typeof nenc!==\"string\"&&(Buffer.isEncoding===isEncoding||!isEncoding(enc)))throw Error(\"Unknown encoding: \"+enc);return nenc||enc}exports2.StringDecoder=StringDecoder;function StringDecoder(encoding){this.encoding=normalizeEncoding(encoding);var nb;switch(this.encoding){case\"utf16le\":this.text=utf16Text,this.end=utf16End,nb=4;break;case\"utf8\":this.fillLast=utf8FillLast,nb=4;break;case\"base64\":this.text=base64Text,this.end=base64End,nb=3;break;default:this.write=simpleWrite,this.end=simpleEnd;return}this.lastNeed=0,this.lastTotal=0,this.lastChar=Buffer.allocUnsafe(nb)}StringDecoder.prototype.write=function(buf){if(buf.length===0)return\"\";var r,i;if(this.lastNeed){if(r=this.fillLast(buf),r===void 0)return\"\";i=this.lastNeed,this.lastNeed=0}else i=0;if(i<buf.length)return r?r+this.text(buf,i):this.text(buf,i);return r||\"\"};StringDecoder.prototype.end=utf8End;StringDecoder.prototype.text=utf8Text;StringDecoder.prototype.fillLast=function(buf){if(this.lastNeed<=buf.length)return buf.copy(this.lastChar,this.lastTotal-this.lastNeed,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);buf.copy(this.lastChar,this.lastTotal-this.lastNeed,0,buf.length),this.lastNeed-=buf.length};function utf8CheckByte(byte){if(byte<=127)return 0;else if(byte>>5===6)return 2;else if(byte>>4===14)return 3;else if(byte>>3===30)return 4;return byte>>6===2?-1:-2}function utf8CheckIncomplete(self,buf,i){var j=buf.length-1;if(j<i)return 0;var nb=utf8CheckByte(buf[j]);if(nb>=0){if(nb>0)self.lastNeed=nb-1;return nb}if(--j<i||nb===-2)return 0;if(nb=utf8CheckByte(buf[j]),nb>=0){if(nb>0)self.lastNeed=nb-2;return nb}if(--j<i||nb===-2)return 0;if(nb=utf8CheckByte(buf[j]),nb>=0){if(nb>0)if(nb===2)nb=0;else self.lastNeed=nb-3;return nb}return 0}function utf8CheckExtraBytes(self,buf,p){if((buf[0]&192)!==128)return self.lastNeed=0,\"�\";if(self.lastNeed>1&&buf.length>1){if((buf[1]&192)!==128)return self.lastNeed=1,\"�\";if(self.lastNeed>2&&buf.length>2){if((buf[2]&192)!==128)return self.lastNeed=2,\"�\"}}}function utf8FillLast(buf){var p=this.lastTotal-this.lastNeed,r=utf8CheckExtraBytes(this,buf,p);if(r!==void 0)return r;if(this.lastNeed<=buf.length)return buf.copy(this.lastChar,p,0,this.lastNeed),this.lastChar.toString(this.encoding,0,this.lastTotal);buf.copy(this.lastChar,p,0,buf.length),this.lastNeed-=buf.length}function utf8Text(buf,i){var total=utf8CheckIncomplete(this,buf,i);if(!this.lastNeed)return buf.toString(\"utf8\",i);this.lastTotal=total;var end=buf.length-(total-this.lastNeed);return buf.copy(this.lastChar,0,end),buf.toString(\"utf8\",i,end)}function utf8End(buf){var r=buf&&buf.length?this.write(buf):\"\";if(this.lastNeed)return r+\"�\";return r}function utf16Text(buf,i){if((buf.length-i)%2===0){var r=buf.toString(\"utf16le\",i);if(r){var c=r.charCodeAt(r.length-1);if(c>=55296&&c<=56319)return this.lastNeed=2,this.lastTotal=4,this.lastChar[0]=buf[buf.length-2],this.lastChar[1]=buf[buf.length-1],r.slice(0,-1)}return r}return this.lastNeed=1,this.lastTotal=2,this.lastChar[0]=buf[buf.length-1],buf.toString(\"utf16le\",i,buf.length-1)}function utf16End(buf){var r=buf&&buf.length?this.write(buf):\"\";if(this.lastNeed){var end=this.lastTotal-this.lastNeed;return r+this.lastChar.toString(\"utf16le\",0,end)}return r}function base64Text(buf,i){var n=(buf.length-i)%3;if(n===0)return buf.toString(\"base64\",i);if(this.lastNeed=3-n,this.lastTotal=3,n===1)this.lastChar[0]=buf[buf.length-1];else this.lastChar[0]=buf[buf.length-2],this.lastChar[1]=buf[buf.length-1];return buf.toString(\"base64\",i,buf.length-n)}function base64End(buf){var r=buf&&buf.length?this.write(buf):\"\";if(this.lastNeed)return r+this.lastChar.toString(\"base64\",0,3-this.lastNeed);return r}function simpleWrite(buf){return buf.toString(this.encoding)}function simpleEnd(buf){return buf&&buf.length?this.write(buf):\"\"}});var require_from=__commonJS((exports2,module2)=>{var process=require_process(),{PromisePrototypeThen,SymbolAsyncIterator,SymbolIterator}=require_primordials(),{Buffer}=require(\"buffer\"),{ERR_INVALID_ARG_TYPE,ERR_STREAM_NULL_VALUES}=require_errors().codes;function from(Readable,iterable,opts){let iterator;if(typeof iterable===\"string\"||iterable instanceof Buffer)return new Readable({objectMode:!0,...opts,read(){this.push(iterable),this.push(null)}});let isAsync;if(iterable&&iterable[SymbolAsyncIterator])isAsync=!0,iterator=iterable[SymbolAsyncIterator]();else if(iterable&&iterable[SymbolIterator])isAsync=!1,iterator=iterable[SymbolIterator]();else throw new ERR_INVALID_ARG_TYPE(\"iterable\",[\"Iterable\"],iterable);let readable=new Readable({objectMode:!0,highWaterMark:1,...opts}),reading=!1;readable._read=function(){if(!reading)reading=!0,next()},readable._destroy=function(error,cb){PromisePrototypeThen(close(error),()=>process.nextTick(cb,error),(e)=>process.nextTick(cb,e||error))};async function close(error){let hadError=error!==void 0&&error!==null,hasThrow=typeof iterator.throw===\"function\";if(hadError&&hasThrow){let{value,done}=await iterator.throw(error);if(await value,done)return}if(typeof iterator.return===\"function\"){let{value}=await iterator.return();await value}}async function next(){for(;;){try{let{value,done}=isAsync?await iterator.next():iterator.next();if(done)readable.push(null);else{let res=value&&typeof value.then===\"function\"?await value:value;if(res===null)throw reading=!1,new ERR_STREAM_NULL_VALUES;else if(readable.push(res))continue;else reading=!1}}catch(err){readable.destroy(err)}break}}return readable}module2.exports=from});var require_readable=__commonJS((exports2,module2)=>{var process=require_process(),{ArrayPrototypeIndexOf,NumberIsInteger,NumberIsNaN,NumberParseInt,ObjectDefineProperties,ObjectKeys,ObjectSetPrototypeOf,Promise:Promise2,SafeSet,SymbolAsyncDispose,SymbolAsyncIterator,Symbol:Symbol2}=require_primordials();module2.exports=Readable;Readable.ReadableState=ReadableState;var{EventEmitter:EE}=require(\"events\"),{Stream,prependListener}=require_legacy(),{Buffer}=require(\"buffer\"),{addAbortSignal}=require_add_abort_signal(),eos=require_end_of_stream(),debug=require_util().debuglog(\"stream\",(fn)=>{debug=fn}),BufferList=require_buffer_list(),destroyImpl=require_destroy(),{getHighWaterMark,getDefaultHighWaterMark}=require_state(),{aggregateTwoErrors,codes:{ERR_INVALID_ARG_TYPE,ERR_METHOD_NOT_IMPLEMENTED,ERR_OUT_OF_RANGE,ERR_STREAM_PUSH_AFTER_EOF,ERR_STREAM_UNSHIFT_AFTER_END_EVENT},AbortError}=require_errors(),{validateObject}=require_validators(),kPaused=Symbol2(\"kPaused\"),{StringDecoder}=require_string_decoder(),from=require_from();ObjectSetPrototypeOf(Readable.prototype,Stream.prototype);ObjectSetPrototypeOf(Readable,Stream);var nop=()=>{},{errorOrDestroy}=destroyImpl,kObjectMode=1,kEnded=2,kEndEmitted=4,kReading=8,kConstructed=16,kSync=32,kNeedReadable=64,kEmittedReadable=128,kReadableListening=256,kResumeScheduled=512,kErrorEmitted=1024,kEmitClose=2048,kAutoDestroy=4096,kDestroyed=8192,kClosed=16384,kCloseEmitted=32768,kMultiAwaitDrain=65536,kReadingMore=131072,kDataEmitted=262144;function makeBitMapDescriptor(bit){return{enumerable:!1,get(){return(this.state&bit)!==0},set(value){if(value)this.state|=bit;else this.state&=~bit}}}ObjectDefineProperties(ReadableState.prototype,{objectMode:makeBitMapDescriptor(kObjectMode),ended:makeBitMapDescriptor(kEnded),endEmitted:makeBitMapDescriptor(kEndEmitted),reading:makeBitMapDescriptor(kReading),constructed:makeBitMapDescriptor(kConstructed),sync:makeBitMapDescriptor(kSync),needReadable:makeBitMapDescriptor(kNeedReadable),emittedReadable:makeBitMapDescriptor(kEmittedReadable),readableListening:makeBitMapDescriptor(kReadableListening),resumeScheduled:makeBitMapDescriptor(kResumeScheduled),errorEmitted:makeBitMapDescriptor(kErrorEmitted),emitClose:makeBitMapDescriptor(kEmitClose),autoDestroy:makeBitMapDescriptor(kAutoDestroy),destroyed:makeBitMapDescriptor(kDestroyed),closed:makeBitMapDescriptor(kClosed),closeEmitted:makeBitMapDescriptor(kCloseEmitted),multiAwaitDrain:makeBitMapDescriptor(kMultiAwaitDrain),readingMore:makeBitMapDescriptor(kReadingMore),dataEmitted:makeBitMapDescriptor(kDataEmitted)});function ReadableState(options,stream,isDuplex){if(typeof isDuplex!==\"boolean\")isDuplex=stream instanceof require_duplex();if(this.state=kEmitClose|kAutoDestroy|kConstructed|kSync,options&&options.objectMode)this.state|=kObjectMode;if(isDuplex&&options&&options.readableObjectMode)this.state|=kObjectMode;if(this.highWaterMark=options?getHighWaterMark(this,options,\"readableHighWaterMark\",isDuplex):getDefaultHighWaterMark(!1),this.buffer=new BufferList,this.length=0,this.pipes=[],this.flowing=null,this[kPaused]=null,options&&options.emitClose===!1)this.state&=~kEmitClose;if(options&&options.autoDestroy===!1)this.state&=~kAutoDestroy;if(this.errored=null,this.defaultEncoding=options&&options.defaultEncoding||\"utf8\",this.awaitDrainWriters=null,this.decoder=null,this.encoding=null,options&&options.encoding)this.decoder=new StringDecoder(options.encoding),this.encoding=options.encoding}function Readable(options){if(!(this instanceof Readable))return new Readable(options);let isDuplex=this instanceof require_duplex();if(this._readableState=new ReadableState(options,this,isDuplex),options){if(typeof options.read===\"function\")this._read=options.read;if(typeof options.destroy===\"function\")this._destroy=options.destroy;if(typeof options.construct===\"function\")this._construct=options.construct;if(options.signal&&!isDuplex)addAbortSignal(options.signal,this)}Stream.call(this,options),destroyImpl.construct(this,()=>{if(this._readableState.needReadable)maybeReadMore(this,this._readableState)})}Readable.prototype.destroy=destroyImpl.destroy;Readable.prototype._undestroy=destroyImpl.undestroy;Readable.prototype._destroy=function(err,cb){cb(err)};Readable.prototype[EE.captureRejectionSymbol]=function(err){this.destroy(err)};Readable.prototype[SymbolAsyncDispose]=function(){let error;if(!this.destroyed)error=this.readableEnded?null:new AbortError,this.destroy(error);return new Promise2((resolve,reject)=>eos(this,(err)=>err&&err!==error?reject(err):resolve(null)))};Readable.prototype.push=function(chunk,encoding){return readableAddChunk(this,chunk,encoding,!1)};Readable.prototype.unshift=function(chunk,encoding){return readableAddChunk(this,chunk,encoding,!0)};function readableAddChunk(stream,chunk,encoding,addToFront){debug(\"readableAddChunk\",chunk);let state=stream._readableState,err;if((state.state&kObjectMode)===0){if(typeof chunk===\"string\"){if(encoding=encoding||state.defaultEncoding,state.encoding!==encoding)if(addToFront&&state.encoding)chunk=Buffer.from(chunk,encoding).toString(state.encoding);else chunk=Buffer.from(chunk,encoding),encoding=\"\"}else if(chunk instanceof Buffer)encoding=\"\";else if(Stream._isUint8Array(chunk))chunk=Stream._uint8ArrayToBuffer(chunk),encoding=\"\";else if(chunk!=null)err=new ERR_INVALID_ARG_TYPE(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],chunk)}if(err)errorOrDestroy(stream,err);else if(chunk===null)state.state&=~kReading,onEofChunk(stream,state);else if((state.state&kObjectMode)!==0||chunk&&chunk.length>0)if(addToFront)if((state.state&kEndEmitted)!==0)errorOrDestroy(stream,new ERR_STREAM_UNSHIFT_AFTER_END_EVENT);else if(state.destroyed||state.errored)return!1;else addChunk(stream,state,chunk,!0);else if(state.ended)errorOrDestroy(stream,new ERR_STREAM_PUSH_AFTER_EOF);else if(state.destroyed||state.errored)return!1;else if(state.state&=~kReading,state.decoder&&!encoding)if(chunk=state.decoder.write(chunk),state.objectMode||chunk.length!==0)addChunk(stream,state,chunk,!1);else maybeReadMore(stream,state);else addChunk(stream,state,chunk,!1);else if(!addToFront)state.state&=~kReading,maybeReadMore(stream,state);return!state.ended&&(state.length<state.highWaterMark||state.length===0)}function addChunk(stream,state,chunk,addToFront){if(state.flowing&&state.length===0&&!state.sync&&stream.listenerCount(\"data\")>0){if((state.state&kMultiAwaitDrain)!==0)state.awaitDrainWriters.clear();else state.awaitDrainWriters=null;state.dataEmitted=!0,stream.emit(\"data\",chunk)}else{if(state.length+=state.objectMode?1:chunk.length,addToFront)state.buffer.unshift(chunk);else state.buffer.push(chunk);if((state.state&kNeedReadable)!==0)emitReadable(stream)}maybeReadMore(stream,state)}Readable.prototype.isPaused=function(){let state=this._readableState;return state[kPaused]===!0||state.flowing===!1};Readable.prototype.setEncoding=function(enc){let decoder=new StringDecoder(enc);this._readableState.decoder=decoder,this._readableState.encoding=this._readableState.decoder.encoding;let buffer=this._readableState.buffer,content=\"\";for(let data of buffer)content+=decoder.write(data);if(buffer.clear(),content!==\"\")buffer.push(content);return this._readableState.length=content.length,this};var MAX_HWM=1073741824;function computeNewHighWaterMark(n){if(n>MAX_HWM)throw new ERR_OUT_OF_RANGE(\"size\",\"<= 1GiB\",n);else n--,n|=n>>>1,n|=n>>>2,n|=n>>>4,n|=n>>>8,n|=n>>>16,n++;return n}function howMuchToRead(n,state){if(n<=0||state.length===0&&state.ended)return 0;if((state.state&kObjectMode)!==0)return 1;if(NumberIsNaN(n)){if(state.flowing&&state.length)return state.buffer.first().length;return state.length}if(n<=state.length)return n;return state.ended?state.length:0}Readable.prototype.read=function(n){if(debug(\"read\",n),n===void 0)n=NaN;else if(!NumberIsInteger(n))n=NumberParseInt(n,10);let state=this._readableState,nOrig=n;if(n>state.highWaterMark)state.highWaterMark=computeNewHighWaterMark(n);if(n!==0)state.state&=~kEmittedReadable;if(n===0&&state.needReadable&&((state.highWaterMark!==0?state.length>=state.highWaterMark:state.length>0)||state.ended)){if(debug(\"read: emitReadable\",state.length,state.ended),state.length===0&&state.ended)endReadable(this);else emitReadable(this);return null}if(n=howMuchToRead(n,state),n===0&&state.ended){if(state.length===0)endReadable(this);return null}let doRead=(state.state&kNeedReadable)!==0;if(debug(\"need readable\",doRead),state.length===0||state.length-n<state.highWaterMark)doRead=!0,debug(\"length less than watermark\",doRead);if(state.ended||state.reading||state.destroyed||state.errored||!state.constructed)doRead=!1,debug(\"reading, ended or constructing\",doRead);else if(doRead){if(debug(\"do read\"),state.state|=kReading|kSync,state.length===0)state.state|=kNeedReadable;try{this._read(state.highWaterMark)}catch(err){errorOrDestroy(this,err)}if(state.state&=~kSync,!state.reading)n=howMuchToRead(nOrig,state)}let ret;if(n>0)ret=fromList(n,state);else ret=null;if(ret===null)state.needReadable=state.length<=state.highWaterMark,n=0;else if(state.length-=n,state.multiAwaitDrain)state.awaitDrainWriters.clear();else state.awaitDrainWriters=null;if(state.length===0){if(!state.ended)state.needReadable=!0;if(nOrig!==n&&state.ended)endReadable(this)}if(ret!==null&&!state.errorEmitted&&!state.closeEmitted)state.dataEmitted=!0,this.emit(\"data\",ret);return ret};function onEofChunk(stream,state){if(debug(\"onEofChunk\"),state.ended)return;if(state.decoder){let chunk=state.decoder.end();if(chunk&&chunk.length)state.buffer.push(chunk),state.length+=state.objectMode?1:chunk.length}if(state.ended=!0,state.sync)emitReadable(stream);else state.needReadable=!1,state.emittedReadable=!0,emitReadable_(stream)}function emitReadable(stream){let state=stream._readableState;if(debug(\"emitReadable\",state.needReadable,state.emittedReadable),state.needReadable=!1,!state.emittedReadable)debug(\"emitReadable\",state.flowing),state.emittedReadable=!0,process.nextTick(emitReadable_,stream)}function emitReadable_(stream){let state=stream._readableState;if(debug(\"emitReadable_\",state.destroyed,state.length,state.ended),!state.destroyed&&!state.errored&&(state.length||state.ended))stream.emit(\"readable\"),state.emittedReadable=!1;state.needReadable=!state.flowing&&!state.ended&&state.length<=state.highWaterMark,flow(stream)}function maybeReadMore(stream,state){if(!state.readingMore&&state.constructed)state.readingMore=!0,process.nextTick(maybeReadMore_,stream,state)}function maybeReadMore_(stream,state){while(!state.reading&&!state.ended&&(state.length<state.highWaterMark||state.flowing&&state.length===0)){let len=state.length;if(debug(\"maybeReadMore read 0\"),stream.read(0),len===state.length)break}state.readingMore=!1}Readable.prototype._read=function(n){throw new ERR_METHOD_NOT_IMPLEMENTED(\"_read()\")};Readable.prototype.pipe=function(dest,pipeOpts){let src=this,state=this._readableState;if(state.pipes.length===1){if(!state.multiAwaitDrain)state.multiAwaitDrain=!0,state.awaitDrainWriters=new SafeSet(state.awaitDrainWriters?[state.awaitDrainWriters]:[])}state.pipes.push(dest),debug(\"pipe count=%d opts=%j\",state.pipes.length,pipeOpts);let endFn=(!pipeOpts||pipeOpts.end!==!1)&&dest!==process.stdout&&dest!==process.stderr?onend:unpipe;if(state.endEmitted)process.nextTick(endFn);else src.once(\"end\",endFn);dest.on(\"unpipe\",onunpipe);function onunpipe(readable,unpipeInfo){if(debug(\"onunpipe\"),readable===src){if(unpipeInfo&&unpipeInfo.hasUnpiped===!1)unpipeInfo.hasUnpiped=!0,cleanup()}}function onend(){debug(\"onend\"),dest.end()}let ondrain,cleanedUp=!1;function cleanup(){if(debug(\"cleanup\"),dest.removeListener(\"close\",onclose),dest.removeListener(\"finish\",onfinish),ondrain)dest.removeListener(\"drain\",ondrain);if(dest.removeListener(\"error\",onerror),dest.removeListener(\"unpipe\",onunpipe),src.removeListener(\"end\",onend),src.removeListener(\"end\",unpipe),src.removeListener(\"data\",ondata),cleanedUp=!0,ondrain&&state.awaitDrainWriters&&(!dest._writableState||dest._writableState.needDrain))ondrain()}function pause(){if(!cleanedUp){if(state.pipes.length===1&&state.pipes[0]===dest)debug(\"false write response, pause\",0),state.awaitDrainWriters=dest,state.multiAwaitDrain=!1;else if(state.pipes.length>1&&state.pipes.includes(dest))debug(\"false write response, pause\",state.awaitDrainWriters.size),state.awaitDrainWriters.add(dest);src.pause()}if(!ondrain)ondrain=pipeOnDrain(src,dest),dest.on(\"drain\",ondrain)}src.on(\"data\",ondata);function ondata(chunk){debug(\"ondata\");let ret=dest.write(chunk);if(debug(\"dest.write\",ret),ret===!1)pause()}function onerror(er){if(debug(\"onerror\",er),unpipe(),dest.removeListener(\"error\",onerror),dest.listenerCount(\"error\")===0){let s=dest._writableState||dest._readableState;if(s&&!s.errorEmitted)errorOrDestroy(dest,er);else dest.emit(\"error\",er)}}prependListener(dest,\"error\",onerror);function onclose(){dest.removeListener(\"finish\",onfinish),unpipe()}dest.once(\"close\",onclose);function onfinish(){debug(\"onfinish\"),dest.removeListener(\"close\",onclose),unpipe()}dest.once(\"finish\",onfinish);function unpipe(){debug(\"unpipe\"),src.unpipe(dest)}if(dest.emit(\"pipe\",src),dest.writableNeedDrain===!0)pause();else if(!state.flowing)debug(\"pipe resume\"),src.resume();return dest};function pipeOnDrain(src,dest){return function(){let state=src._readableState;if(state.awaitDrainWriters===dest)debug(\"pipeOnDrain\",1),state.awaitDrainWriters=null;else if(state.multiAwaitDrain)debug(\"pipeOnDrain\",state.awaitDrainWriters.size),state.awaitDrainWriters.delete(dest);if((!state.awaitDrainWriters||state.awaitDrainWriters.size===0)&&src.listenerCount(\"data\"))src.resume()}}Readable.prototype.unpipe=function(dest){let state=this._readableState,unpipeInfo={hasUnpiped:!1};if(state.pipes.length===0)return this;if(!dest){let dests=state.pipes;state.pipes=[],this.pause();for(let i=0;i<dests.length;i++)dests[i].emit(\"unpipe\",this,{hasUnpiped:!1});return this}let index=ArrayPrototypeIndexOf(state.pipes,dest);if(index===-1)return this;if(state.pipes.splice(index,1),state.pipes.length===0)this.pause();return dest.emit(\"unpipe\",this,unpipeInfo),this};Readable.prototype.on=function(ev,fn){let res=Stream.prototype.on.call(this,ev,fn),state=this._readableState;if(ev===\"data\"){if(state.readableListening=this.listenerCount(\"readable\")>0,state.flowing!==!1)this.resume()}else if(ev===\"readable\"){if(!state.endEmitted&&!state.readableListening){if(state.readableListening=state.needReadable=!0,state.flowing=!1,state.emittedReadable=!1,debug(\"on readable\",state.length,state.reading),state.length)emitReadable(this);else if(!state.reading)process.nextTick(nReadingNextTick,this)}}return res};Readable.prototype.addListener=Readable.prototype.on;Readable.prototype.removeListener=function(ev,fn){let res=Stream.prototype.removeListener.call(this,ev,fn);if(ev===\"readable\")process.nextTick(updateReadableListening,this);return res};Readable.prototype.off=Readable.prototype.removeListener;Readable.prototype.removeAllListeners=function(ev){let res=Stream.prototype.removeAllListeners.apply(this,arguments);if(ev===\"readable\"||ev===void 0)process.nextTick(updateReadableListening,this);return res};function updateReadableListening(self){let state=self._readableState;if(state.readableListening=self.listenerCount(\"readable\")>0,state.resumeScheduled&&state[kPaused]===!1)state.flowing=!0;else if(self.listenerCount(\"data\")>0)self.resume();else if(!state.readableListening)state.flowing=null}function nReadingNextTick(self){debug(\"readable nexttick read 0\"),self.read(0)}Readable.prototype.resume=function(){let state=this._readableState;if(!state.flowing)debug(\"resume\"),state.flowing=!state.readableListening,resume(this,state);return state[kPaused]=!1,this};function resume(stream,state){if(!state.resumeScheduled)state.resumeScheduled=!0,process.nextTick(resume_,stream,state)}function resume_(stream,state){if(debug(\"resume\",state.reading),!state.reading)stream.read(0);if(state.resumeScheduled=!1,stream.emit(\"resume\"),flow(stream),state.flowing&&!state.reading)stream.read(0)}Readable.prototype.pause=function(){if(debug(\"call pause flowing=%j\",this._readableState.flowing),this._readableState.flowing!==!1)debug(\"pause\"),this._readableState.flowing=!1,this.emit(\"pause\");return this._readableState[kPaused]=!0,this};function flow(stream){let state=stream._readableState;debug(\"flow\",state.flowing);while(state.flowing&&stream.read()!==null);}Readable.prototype.wrap=function(stream){let paused=!1;stream.on(\"data\",(chunk)=>{if(!this.push(chunk)&&stream.pause)paused=!0,stream.pause()}),stream.on(\"end\",()=>{this.push(null)}),stream.on(\"error\",(err)=>{errorOrDestroy(this,err)}),stream.on(\"close\",()=>{this.destroy()}),stream.on(\"destroy\",()=>{this.destroy()}),this._read=()=>{if(paused&&stream.resume)paused=!1,stream.resume()};let streamKeys=ObjectKeys(stream);for(let j=1;j<streamKeys.length;j++){let i=streamKeys[j];if(this[i]===void 0&&typeof stream[i]===\"function\")this[i]=stream[i].bind(stream)}return this};Readable.prototype[SymbolAsyncIterator]=function(){return streamToAsyncIterator(this)};Readable.prototype.iterator=function(options){if(options!==void 0)validateObject(options,\"options\");return streamToAsyncIterator(this,options)};function streamToAsyncIterator(stream,options){if(typeof stream.read!==\"function\")stream=Readable.wrap(stream,{objectMode:!0});let iter=createAsyncIterator(stream,options);return iter.stream=stream,iter}async function*createAsyncIterator(stream,options){let callback=nop;function next(resolve){if(this===stream)callback(),callback=nop;else callback=resolve}stream.on(\"readable\",next);let error,cleanup=eos(stream,{writable:!1},(err)=>{error=err?aggregateTwoErrors(error,err):null,callback(),callback=nop});try{while(!0){let chunk=stream.destroyed?null:stream.read();if(chunk!==null)yield chunk;else if(error)throw error;else if(error===null)return;else await new Promise2(next)}}catch(err){throw error=aggregateTwoErrors(error,err),error}finally{if((error||(options===null||options===void 0?void 0:options.destroyOnReturn)!==!1)&&(error===void 0||stream._readableState.autoDestroy))destroyImpl.destroyer(stream,null);else stream.off(\"readable\",next),cleanup()}}ObjectDefineProperties(Readable.prototype,{readable:{__proto__:null,get(){let r=this._readableState;return!!r&&r.readable!==!1&&!r.destroyed&&!r.errorEmitted&&!r.endEmitted},set(val){if(this._readableState)this._readableState.readable=!!val}},readableDidRead:{__proto__:null,enumerable:!1,get:function(){return this._readableState.dataEmitted}},readableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._readableState.readable!==!1&&(this._readableState.destroyed||this._readableState.errored)&&!this._readableState.endEmitted)}},readableHighWaterMark:{__proto__:null,enumerable:!1,get:function(){return this._readableState.highWaterMark}},readableBuffer:{__proto__:null,enumerable:!1,get:function(){return this._readableState&&this._readableState.buffer}},readableFlowing:{__proto__:null,enumerable:!1,get:function(){return this._readableState.flowing},set:function(state){if(this._readableState)this._readableState.flowing=state}},readableLength:{__proto__:null,enumerable:!1,get(){return this._readableState.length}},readableObjectMode:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.objectMode:!1}},readableEncoding:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.encoding:null}},errored:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.errored:null}},closed:{__proto__:null,get(){return this._readableState?this._readableState.closed:!1}},destroyed:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.destroyed:!1},set(value){if(!this._readableState)return;this._readableState.destroyed=value}},readableEnded:{__proto__:null,enumerable:!1,get(){return this._readableState?this._readableState.endEmitted:!1}}});ObjectDefineProperties(ReadableState.prototype,{pipesCount:{__proto__:null,get(){return this.pipes.length}},paused:{__proto__:null,get(){return this[kPaused]!==!1},set(value){this[kPaused]=!!value}}});Readable._fromList=fromList;function fromList(n,state){if(state.length===0)return null;let ret;if(state.objectMode)ret=state.buffer.shift();else if(!n||n>=state.length){if(state.decoder)ret=state.buffer.join(\"\");else if(state.buffer.length===1)ret=state.buffer.first();else ret=state.buffer.concat(state.length);state.buffer.clear()}else ret=state.buffer.consume(n,state.decoder);return ret}function endReadable(stream){let state=stream._readableState;if(debug(\"endReadable\",state.endEmitted),!state.endEmitted)state.ended=!0,process.nextTick(endReadableNT,state,stream)}function endReadableNT(state,stream){if(debug(\"endReadableNT\",state.endEmitted,state.length),!state.errored&&!state.closeEmitted&&!state.endEmitted&&state.length===0){if(state.endEmitted=!0,stream.emit(\"end\"),stream.writable&&stream.allowHalfOpen===!1)process.nextTick(endWritableNT,stream);else if(state.autoDestroy){let wState=stream._writableState;if(!wState||wState.autoDestroy&&(wState.finished||wState.writable===!1))stream.destroy()}}}function endWritableNT(stream){if(stream.writable&&!stream.writableEnded&&!stream.destroyed)stream.end()}Readable.from=function(iterable,opts){return from(Readable,iterable,opts)};var webStreamsAdapters;function lazyWebStreams(){if(webStreamsAdapters===void 0)webStreamsAdapters={};return webStreamsAdapters}Readable.fromWeb=function(readableStream,options){return lazyWebStreams().newStreamReadableFromReadableStream(readableStream,options)};Readable.toWeb=function(streamReadable,options){return lazyWebStreams().newReadableStreamFromStreamReadable(streamReadable,options)};Readable.wrap=function(src,options){var _ref,_src$readableObjectMo;return new Readable({objectMode:(_ref=(_src$readableObjectMo=src.readableObjectMode)!==null&&_src$readableObjectMo!==void 0?_src$readableObjectMo:src.objectMode)!==null&&_ref!==void 0?_ref:!0,...options,destroy(err,callback){destroyImpl.destroyer(src,err),callback(err)}}).wrap(src)}});var require_writable=__commonJS((exports2,module2)=>{var process=require_process(),{ArrayPrototypeSlice,Error:Error2,FunctionPrototypeSymbolHasInstance,ObjectDefineProperty,ObjectDefineProperties,ObjectSetPrototypeOf,StringPrototypeToLowerCase,Symbol:Symbol2,SymbolHasInstance}=require_primordials();module2.exports=Writable;Writable.WritableState=WritableState;var{EventEmitter:EE}=require(\"events\"),Stream=require_legacy().Stream,{Buffer}=require(\"buffer\"),destroyImpl=require_destroy(),{addAbortSignal}=require_add_abort_signal(),{getHighWaterMark,getDefaultHighWaterMark}=require_state(),{ERR_INVALID_ARG_TYPE,ERR_METHOD_NOT_IMPLEMENTED,ERR_MULTIPLE_CALLBACK,ERR_STREAM_CANNOT_PIPE,ERR_STREAM_DESTROYED,ERR_STREAM_ALREADY_FINISHED,ERR_STREAM_NULL_VALUES,ERR_STREAM_WRITE_AFTER_END,ERR_UNKNOWN_ENCODING}=require_errors().codes,{errorOrDestroy}=destroyImpl;ObjectSetPrototypeOf(Writable.prototype,Stream.prototype);ObjectSetPrototypeOf(Writable,Stream);function nop(){}var kOnFinished=Symbol2(\"kOnFinished\");function WritableState(options,stream,isDuplex){if(typeof isDuplex!==\"boolean\")isDuplex=stream instanceof require_duplex();if(this.objectMode=!!(options&&options.objectMode),isDuplex)this.objectMode=this.objectMode||!!(options&&options.writableObjectMode);this.highWaterMark=options?getHighWaterMark(this,options,\"writableHighWaterMark\",isDuplex):getDefaultHighWaterMark(!1),this.finalCalled=!1,this.needDrain=!1,this.ending=!1,this.ended=!1,this.finished=!1,this.destroyed=!1;let noDecode=!!(options&&options.decodeStrings===!1);this.decodeStrings=!noDecode,this.defaultEncoding=options&&options.defaultEncoding||\"utf8\",this.length=0,this.writing=!1,this.corked=0,this.sync=!0,this.bufferProcessing=!1,this.onwrite=onwrite.bind(void 0,stream),this.writecb=null,this.writelen=0,this.afterWriteTickInfo=null,resetBuffer(this),this.pendingcb=0,this.constructed=!0,this.prefinished=!1,this.errorEmitted=!1,this.emitClose=!options||options.emitClose!==!1,this.autoDestroy=!options||options.autoDestroy!==!1,this.errored=null,this.closed=!1,this.closeEmitted=!1,this[kOnFinished]=[]}function resetBuffer(state){state.buffered=[],state.bufferedIndex=0,state.allBuffers=!0,state.allNoop=!0}WritableState.prototype.getBuffer=function(){return ArrayPrototypeSlice(this.buffered,this.bufferedIndex)};ObjectDefineProperty(WritableState.prototype,\"bufferedRequestCount\",{__proto__:null,get(){return this.buffered.length-this.bufferedIndex}});function Writable(options){let isDuplex=this instanceof require_duplex();if(!isDuplex&&!FunctionPrototypeSymbolHasInstance(Writable,this))return new Writable(options);if(this._writableState=new WritableState(options,this,isDuplex),options){if(typeof options.write===\"function\")this._write=options.write;if(typeof options.writev===\"function\")this._writev=options.writev;if(typeof options.destroy===\"function\")this._destroy=options.destroy;if(typeof options.final===\"function\")this._final=options.final;if(typeof options.construct===\"function\")this._construct=options.construct;if(options.signal)addAbortSignal(options.signal,this)}Stream.call(this,options),destroyImpl.construct(this,()=>{let state=this._writableState;if(!state.writing)clearBuffer(this,state);finishMaybe(this,state)})}ObjectDefineProperty(Writable,SymbolHasInstance,{__proto__:null,value:function(object){if(FunctionPrototypeSymbolHasInstance(this,object))return!0;if(this!==Writable)return!1;return object&&object._writableState instanceof WritableState}});Writable.prototype.pipe=function(){errorOrDestroy(this,new ERR_STREAM_CANNOT_PIPE)};function _write(stream,chunk,encoding,cb){let state=stream._writableState;if(typeof encoding===\"function\")cb=encoding,encoding=state.defaultEncoding;else{if(!encoding)encoding=state.defaultEncoding;else if(encoding!==\"buffer\"&&!Buffer.isEncoding(encoding))throw new ERR_UNKNOWN_ENCODING(encoding);if(typeof cb!==\"function\")cb=nop}if(chunk===null)throw new ERR_STREAM_NULL_VALUES;else if(!state.objectMode)if(typeof chunk===\"string\"){if(state.decodeStrings!==!1)chunk=Buffer.from(chunk,encoding),encoding=\"buffer\"}else if(chunk instanceof Buffer)encoding=\"buffer\";else if(Stream._isUint8Array(chunk))chunk=Stream._uint8ArrayToBuffer(chunk),encoding=\"buffer\";else throw new ERR_INVALID_ARG_TYPE(\"chunk\",[\"string\",\"Buffer\",\"Uint8Array\"],chunk);let err;if(state.ending)err=new ERR_STREAM_WRITE_AFTER_END;else if(state.destroyed)err=new ERR_STREAM_DESTROYED(\"write\");if(err)return process.nextTick(cb,err),errorOrDestroy(stream,err,!0),err;return state.pendingcb++,writeOrBuffer(stream,state,chunk,encoding,cb)}Writable.prototype.write=function(chunk,encoding,cb){return _write(this,chunk,encoding,cb)===!0};Writable.prototype.cork=function(){this._writableState.corked++};Writable.prototype.uncork=function(){let state=this._writableState;if(state.corked){if(state.corked--,!state.writing)clearBuffer(this,state)}};Writable.prototype.setDefaultEncoding=function(encoding){if(typeof encoding===\"string\")encoding=StringPrototypeToLowerCase(encoding);if(!Buffer.isEncoding(encoding))throw new ERR_UNKNOWN_ENCODING(encoding);return this._writableState.defaultEncoding=encoding,this};function writeOrBuffer(stream,state,chunk,encoding,callback){let len=state.objectMode?1:chunk.length;state.length+=len;let ret=state.length<state.highWaterMark;if(!ret)state.needDrain=!0;if(state.writing||state.corked||state.errored||!state.constructed){if(state.buffered.push({chunk,encoding,callback}),state.allBuffers&&encoding!==\"buffer\")state.allBuffers=!1;if(state.allNoop&&callback!==nop)state.allNoop=!1}else state.writelen=len,state.writecb=callback,state.writing=!0,state.sync=!0,stream._write(chunk,encoding,state.onwrite),state.sync=!1;return ret&&!state.errored&&!state.destroyed}function doWrite(stream,state,writev,len,chunk,encoding,cb){if(state.writelen=len,state.writecb=cb,state.writing=!0,state.sync=!0,state.destroyed)state.onwrite(new ERR_STREAM_DESTROYED(\"write\"));else if(writev)stream._writev(chunk,state.onwrite);else stream._write(chunk,encoding,state.onwrite);state.sync=!1}function onwriteError(stream,state,er,cb){--state.pendingcb,cb(er),errorBuffer(state),errorOrDestroy(stream,er)}function onwrite(stream,er){let state=stream._writableState,sync=state.sync,cb=state.writecb;if(typeof cb!==\"function\"){errorOrDestroy(stream,new ERR_MULTIPLE_CALLBACK);return}if(state.writing=!1,state.writecb=null,state.length-=state.writelen,state.writelen=0,er){if(er.stack,!state.errored)state.errored=er;if(stream._readableState&&!stream._readableState.errored)stream._readableState.errored=er;if(sync)process.nextTick(onwriteError,stream,state,er,cb);else onwriteError(stream,state,er,cb)}else{if(state.buffered.length>state.bufferedIndex)clearBuffer(stream,state);if(sync)if(state.afterWriteTickInfo!==null&&state.afterWriteTickInfo.cb===cb)state.afterWriteTickInfo.count++;else state.afterWriteTickInfo={count:1,cb,stream,state},process.nextTick(afterWriteTick,state.afterWriteTickInfo);else afterWrite(stream,state,1,cb)}}function afterWriteTick({stream,state,count,cb}){return state.afterWriteTickInfo=null,afterWrite(stream,state,count,cb)}function afterWrite(stream,state,count,cb){if(!state.ending&&!stream.destroyed&&state.length===0&&state.needDrain)state.needDrain=!1,stream.emit(\"drain\");while(count-- >0)state.pendingcb--,cb();if(state.destroyed)errorBuffer(state);finishMaybe(stream,state)}function errorBuffer(state){if(state.writing)return;for(let n=state.bufferedIndex;n<state.buffered.length;++n){var _state$errored;let{chunk,callback}=state.buffered[n],len=state.objectMode?1:chunk.length;state.length-=len,callback((_state$errored=state.errored)!==null&&_state$errored!==void 0?_state$errored:new ERR_STREAM_DESTROYED(\"write\"))}let onfinishCallbacks=state[kOnFinished].splice(0);for(let i=0;i<onfinishCallbacks.length;i++){var _state$errored2;onfinishCallbacks[i]((_state$errored2=state.errored)!==null&&_state$errored2!==void 0?_state$errored2:new ERR_STREAM_DESTROYED(\"end\"))}resetBuffer(state)}function clearBuffer(stream,state){if(state.corked||state.bufferProcessing||state.destroyed||!state.constructed)return;let{buffered,bufferedIndex,objectMode}=state,bufferedLength=buffered.length-bufferedIndex;if(!bufferedLength)return;let i=bufferedIndex;if(state.bufferProcessing=!0,bufferedLength>1&&stream._writev){state.pendingcb-=bufferedLength-1;let callback=state.allNoop?nop:(err)=>{for(let n=i;n<buffered.length;++n)buffered[n].callback(err)},chunks=state.allNoop&&i===0?buffered:ArrayPrototypeSlice(buffered,i);chunks.allBuffers=state.allBuffers,doWrite(stream,state,!0,state.length,chunks,\"\",callback),resetBuffer(state)}else{do{let{chunk,encoding,callback}=buffered[i];buffered[i++]=null;let len=objectMode?1:chunk.length;doWrite(stream,state,!1,len,chunk,encoding,callback)}while(i<buffered.length&&!state.writing);if(i===buffered.length)resetBuffer(state);else if(i>256)buffered.splice(0,i),state.bufferedIndex=0;else state.bufferedIndex=i}state.bufferProcessing=!1}Writable.prototype._write=function(chunk,encoding,cb){if(this._writev)this._writev([{chunk,encoding}],cb);else throw new ERR_METHOD_NOT_IMPLEMENTED(\"_write()\")};Writable.prototype._writev=null;Writable.prototype.end=function(chunk,encoding,cb){let state=this._writableState;if(typeof chunk===\"function\")cb=chunk,chunk=null,encoding=null;else if(typeof encoding===\"function\")cb=encoding,encoding=null;let err;if(chunk!==null&&chunk!==void 0){let ret=_write(this,chunk,encoding);if(ret instanceof Error2)err=ret}if(state.corked)state.corked=1,this.uncork();if(err);else if(!state.errored&&!state.ending)state.ending=!0,finishMaybe(this,state,!0),state.ended=!0;else if(state.finished)err=new ERR_STREAM_ALREADY_FINISHED(\"end\");else if(state.destroyed)err=new ERR_STREAM_DESTROYED(\"end\");if(typeof cb===\"function\")if(err||state.finished)process.nextTick(cb,err);else state[kOnFinished].push(cb);return this};function needFinish(state){return state.ending&&!state.destroyed&&state.constructed&&state.length===0&&!state.errored&&state.buffered.length===0&&!state.finished&&!state.writing&&!state.errorEmitted&&!state.closeEmitted}function callFinal(stream,state){let called=!1;function onFinish(err){if(called){errorOrDestroy(stream,err!==null&&err!==void 0?err:ERR_MULTIPLE_CALLBACK());return}if(called=!0,state.pendingcb--,err){let onfinishCallbacks=state[kOnFinished].splice(0);for(let i=0;i<onfinishCallbacks.length;i++)onfinishCallbacks[i](err);errorOrDestroy(stream,err,state.sync)}else if(needFinish(state))state.prefinished=!0,stream.emit(\"prefinish\"),state.pendingcb++,process.nextTick(finish,stream,state)}state.sync=!0,state.pendingcb++;try{stream._final(onFinish)}catch(err){onFinish(err)}state.sync=!1}function prefinish(stream,state){if(!state.prefinished&&!state.finalCalled)if(typeof stream._final===\"function\"&&!state.destroyed)state.finalCalled=!0,callFinal(stream,state);else state.prefinished=!0,stream.emit(\"prefinish\")}function finishMaybe(stream,state,sync){if(needFinish(state)){if(prefinish(stream,state),state.pendingcb===0){if(sync)state.pendingcb++,process.nextTick((stream2,state2)=>{if(needFinish(state2))finish(stream2,state2);else state2.pendingcb--},stream,state);else if(needFinish(state))state.pendingcb++,finish(stream,state)}}}function finish(stream,state){state.pendingcb--,state.finished=!0;let onfinishCallbacks=state[kOnFinished].splice(0);for(let i=0;i<onfinishCallbacks.length;i++)onfinishCallbacks[i]();if(stream.emit(\"finish\"),state.autoDestroy){let rState=stream._readableState;if(!rState||rState.autoDestroy&&(rState.endEmitted||rState.readable===!1))stream.destroy()}}ObjectDefineProperties(Writable.prototype,{closed:{__proto__:null,get(){return this._writableState?this._writableState.closed:!1}},destroyed:{__proto__:null,get(){return this._writableState?this._writableState.destroyed:!1},set(value){if(this._writableState)this._writableState.destroyed=value}},writable:{__proto__:null,get(){let w=this._writableState;return!!w&&w.writable!==!1&&!w.destroyed&&!w.errored&&!w.ending&&!w.ended},set(val){if(this._writableState)this._writableState.writable=!!val}},writableFinished:{__proto__:null,get(){return this._writableState?this._writableState.finished:!1}},writableObjectMode:{__proto__:null,get(){return this._writableState?this._writableState.objectMode:!1}},writableBuffer:{__proto__:null,get(){return this._writableState&&this._writableState.getBuffer()}},writableEnded:{__proto__:null,get(){return this._writableState?this._writableState.ending:!1}},writableNeedDrain:{__proto__:null,get(){let wState=this._writableState;if(!wState)return!1;return!wState.destroyed&&!wState.ending&&wState.needDrain}},writableHighWaterMark:{__proto__:null,get(){return this._writableState&&this._writableState.highWaterMark}},writableCorked:{__proto__:null,get(){return this._writableState?this._writableState.corked:0}},writableLength:{__proto__:null,get(){return this._writableState&&this._writableState.length}},errored:{__proto__:null,enumerable:!1,get(){return this._writableState?this._writableState.errored:null}},writableAborted:{__proto__:null,enumerable:!1,get:function(){return!!(this._writableState.writable!==!1&&(this._writableState.destroyed||this._writableState.errored)&&!this._writableState.finished)}}});var destroy=destroyImpl.destroy;Writable.prototype.destroy=function(err,cb){let state=this._writableState;if(!state.destroyed&&(state.bufferedIndex<state.buffered.length||state[kOnFinished].length))process.nextTick(errorBuffer,state);return destroy.call(this,err,cb),this};Writable.prototype._undestroy=destroyImpl.undestroy;Writable.prototype._destroy=function(err,cb){cb(err)};Writable.prototype[EE.captureRejectionSymbol]=function(err){this.destroy(err)};var webStreamsAdapters;function lazyWebStreams(){if(webStreamsAdapters===void 0)webStreamsAdapters={};return webStreamsAdapters}Writable.fromWeb=function(writableStream,options){return lazyWebStreams().newStreamWritableFromWritableStream(writableStream,options)};Writable.toWeb=function(streamWritable){return lazyWebStreams().newWritableStreamFromStreamWritable(streamWritable)}});var require_duplexify=__commonJS((exports2,module2)=>{var process=require_process(),bufferModule=require(\"buffer\"),{isReadable,isWritable,isIterable,isNodeStream,isReadableNodeStream,isWritableNodeStream,isDuplexNodeStream,isReadableStream,isWritableStream}=require_utils(),eos=require_end_of_stream(),{AbortError,codes:{ERR_INVALID_ARG_TYPE,ERR_INVALID_RETURN_VALUE}}=require_errors(),{destroyer}=require_destroy(),Duplex=require_duplex(),Readable=require_readable(),Writable=require_writable(),{createDeferredPromise}=require_util(),from=require_from(),Blob=globalThis.Blob||bufferModule.Blob,isBlob=typeof Blob<\"u\"?function(b){return b instanceof Blob}:function(b){return!1},AbortController=globalThis.AbortController||require_abort_controller().AbortController,{FunctionPrototypeCall}=require_primordials();class Duplexify extends Duplex{constructor(options){super(options);if((options===null||options===void 0?void 0:options.readable)===!1)this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0;if((options===null||options===void 0?void 0:options.writable)===!1)this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0}}module2.exports=function duplexify(body,name){if(isDuplexNodeStream(body))return body;if(isReadableNodeStream(body))return _duplexify({readable:body});if(isWritableNodeStream(body))return _duplexify({writable:body});if(isNodeStream(body))return _duplexify({writable:!1,readable:!1});if(isReadableStream(body))return _duplexify({readable:Readable.fromWeb(body)});if(isWritableStream(body))return _duplexify({writable:Writable.fromWeb(body)});if(typeof body===\"function\"){let{value,write,final,destroy}=fromAsyncGen(body);if(isIterable(value))return from(Duplexify,value,{objectMode:!0,write,final,destroy});let then2=value===null||value===void 0?void 0:value.then;if(typeof then2===\"function\"){let d,promise=FunctionPrototypeCall(then2,value,(val)=>{if(val!=null)throw new ERR_INVALID_RETURN_VALUE(\"nully\",\"body\",val)},(err)=>{destroyer(d,err)});return d=new Duplexify({objectMode:!0,readable:!1,write,final(cb){final(async()=>{try{await promise,process.nextTick(cb,null)}catch(err){process.nextTick(cb,err)}})},destroy})}throw new ERR_INVALID_RETURN_VALUE(\"Iterable, AsyncIterable or AsyncFunction\",name,value)}if(isBlob(body))return duplexify(body.arrayBuffer());if(isIterable(body))return from(Duplexify,body,{objectMode:!0,writable:!1});if(isReadableStream(body===null||body===void 0?void 0:body.readable)&&isWritableStream(body===null||body===void 0?void 0:body.writable))return Duplexify.fromWeb(body);if(typeof(body===null||body===void 0?void 0:body.writable)===\"object\"||typeof(body===null||body===void 0?void 0:body.readable)===\"object\"){let readable=body!==null&&body!==void 0&&body.readable?isReadableNodeStream(body===null||body===void 0?void 0:body.readable)?body===null||body===void 0?void 0:body.readable:duplexify(body.readable):void 0,writable=body!==null&&body!==void 0&&body.writable?isWritableNodeStream(body===null||body===void 0?void 0:body.writable)?body===null||body===void 0?void 0:body.writable:duplexify(body.writable):void 0;return _duplexify({readable,writable})}let then=body===null||body===void 0?void 0:body.then;if(typeof then===\"function\"){let d;return FunctionPrototypeCall(then,body,(val)=>{if(val!=null)d.push(val);d.push(null)},(err)=>{destroyer(d,err)}),d=new Duplexify({objectMode:!0,writable:!1,read(){}})}throw new ERR_INVALID_ARG_TYPE(name,[\"Blob\",\"ReadableStream\",\"WritableStream\",\"Stream\",\"Iterable\",\"AsyncIterable\",\"Function\",\"{ readable, writable } pair\",\"Promise\"],body)};function fromAsyncGen(fn){let{promise,resolve}=createDeferredPromise(),ac=new AbortController,signal=ac.signal;return{value:fn(async function*(){while(!0){let _promise=promise;promise=null;let{chunk,done,cb}=await _promise;if(process.nextTick(cb),done)return;if(signal.aborted)throw new AbortError(void 0,{cause:signal.reason});({promise,resolve}=createDeferredPromise()),yield chunk}}(),{signal}),write(chunk,encoding,cb){let _resolve=resolve;resolve=null,_resolve({chunk,done:!1,cb})},final(cb){let _resolve=resolve;resolve=null,_resolve({done:!0,cb})},destroy(err,cb){ac.abort(),cb(err)}}}function _duplexify(pair){let r=pair.readable&&typeof pair.readable.read!==\"function\"?Readable.wrap(pair.readable):pair.readable,w=pair.writable,readable=!!isReadable(r),writable=!!isWritable(w),ondrain,onfinish,onreadable,onclose,d;function onfinished(err){let cb=onclose;if(onclose=null,cb)cb(err);else if(err)d.destroy(err)}if(d=new Duplexify({readableObjectMode:!!(r!==null&&r!==void 0&&r.readableObjectMode),writableObjectMode:!!(w!==null&&w!==void 0&&w.writableObjectMode),readable,writable}),writable)eos(w,(err)=>{if(writable=!1,err)destroyer(r,err);onfinished(err)}),d._write=function(chunk,encoding,callback){if(w.write(chunk,encoding))callback();else ondrain=callback},d._final=function(callback){w.end(),onfinish=callback},w.on(\"drain\",function(){if(ondrain){let cb=ondrain;ondrain=null,cb()}}),w.on(\"finish\",function(){if(onfinish){let cb=onfinish;onfinish=null,cb()}});if(readable)eos(r,(err)=>{if(readable=!1,err)destroyer(r,err);onfinished(err)}),r.on(\"readable\",function(){if(onreadable){let cb=onreadable;onreadable=null,cb()}}),r.on(\"end\",function(){d.push(null)}),d._read=function(){while(!0){let buf=r.read();if(buf===null){onreadable=d._read;return}if(!d.push(buf))return}};return d._destroy=function(err,callback){if(!err&&onclose!==null)err=new AbortError;if(onreadable=null,ondrain=null,onfinish=null,onclose===null)callback(err);else onclose=callback,destroyer(w,err),destroyer(r,err)},d}});var require_duplex=__commonJS((exports2,module2)=>{var{ObjectDefineProperties,ObjectGetOwnPropertyDescriptor,ObjectKeys,ObjectSetPrototypeOf}=require_primordials();module2.exports=Duplex;var Readable=require_readable(),Writable=require_writable();ObjectSetPrototypeOf(Duplex.prototype,Readable.prototype);ObjectSetPrototypeOf(Duplex,Readable);{let keys=ObjectKeys(Writable.prototype);for(let i=0;i<keys.length;i++){let method=keys[i];if(!Duplex.prototype[method])Duplex.prototype[method]=Writable.prototype[method]}}function Duplex(options){if(!(this instanceof Duplex))return new Duplex(options);if(Readable.call(this,options),Writable.call(this,options),options){if(this.allowHalfOpen=options.allowHalfOpen!==!1,options.readable===!1)this._readableState.readable=!1,this._readableState.ended=!0,this._readableState.endEmitted=!0;if(options.writable===!1)this._writableState.writable=!1,this._writableState.ending=!0,this._writableState.ended=!0,this._writableState.finished=!0}else this.allowHalfOpen=!0}ObjectDefineProperties(Duplex.prototype,{writable:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writable\")},writableHighWaterMark:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableHighWaterMark\")},writableObjectMode:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableObjectMode\")},writableBuffer:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableBuffer\")},writableLength:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableLength\")},writableFinished:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableFinished\")},writableCorked:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableCorked\")},writableEnded:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableEnded\")},writableNeedDrain:{__proto__:null,...ObjectGetOwnPropertyDescriptor(Writable.prototype,\"writableNeedDrain\")},destroyed:{__proto__:null,get(){if(this._readableState===void 0||this._writableState===void 0)return!1;return this._readableState.destroyed&&this._writableState.destroyed},set(value){if(this._readableState&&this._writableState)this._readableState.destroyed=value,this._writableState.destroyed=value}}});var webStreamsAdapters;function lazyWebStreams(){if(webStreamsAdapters===void 0)webStreamsAdapters={};return webStreamsAdapters}Duplex.fromWeb=function(pair,options){return lazyWebStreams().newStreamDuplexFromReadableWritablePair(pair,options)};Duplex.toWeb=function(duplex){return lazyWebStreams().newReadableWritablePairFromDuplex(duplex)};var duplexify;Duplex.from=function(body){if(!duplexify)duplexify=require_duplexify();return duplexify(body,\"body\")}});var require_transform=__commonJS((exports2,module2)=>{var{ObjectSetPrototypeOf,Symbol:Symbol2}=require_primordials();module2.exports=Transform;var{ERR_METHOD_NOT_IMPLEMENTED}=require_errors().codes,Duplex=require_duplex(),{getHighWaterMark}=require_state();ObjectSetPrototypeOf(Transform.prototype,Duplex.prototype);ObjectSetPrototypeOf(Transform,Duplex);var kCallback=Symbol2(\"kCallback\");function Transform(options){if(!(this instanceof Transform))return new Transform(options);let readableHighWaterMark=options?getHighWaterMark(this,options,\"readableHighWaterMark\",!0):null;if(readableHighWaterMark===0)options={...options,highWaterMark:null,readableHighWaterMark,writableHighWaterMark:options.writableHighWaterMark||0};if(Duplex.call(this,options),this._readableState.sync=!1,this[kCallback]=null,options){if(typeof options.transform===\"function\")this._transform=options.transform;if(typeof options.flush===\"function\")this._flush=options.flush}this.on(\"prefinish\",prefinish)}function final(cb){if(typeof this._flush===\"function\"&&!this.destroyed)this._flush((er,data)=>{if(er){if(cb)cb(er);else this.destroy(er);return}if(data!=null)this.push(data);if(this.push(null),cb)cb()});else if(this.push(null),cb)cb()}function prefinish(){if(this._final!==final)final.call(this)}Transform.prototype._final=final;Transform.prototype._transform=function(chunk,encoding,callback){throw new ERR_METHOD_NOT_IMPLEMENTED(\"_transform()\")};Transform.prototype._write=function(chunk,encoding,callback){let rState=this._readableState,wState=this._writableState,length=rState.length;this._transform(chunk,encoding,(err,val)=>{if(err){callback(err);return}if(val!=null)this.push(val);if(wState.ended||length===rState.length||rState.length<rState.highWaterMark)callback();else this[kCallback]=callback})};Transform.prototype._read=function(){if(this[kCallback]){let callback=this[kCallback];this[kCallback]=null,callback()}}});var require_passthrough=__commonJS((exports2,module2)=>{var{ObjectSetPrototypeOf}=require_primordials();module2.exports=PassThrough;var Transform=require_transform();ObjectSetPrototypeOf(PassThrough.prototype,Transform.prototype);ObjectSetPrototypeOf(PassThrough,Transform);function PassThrough(options){if(!(this instanceof PassThrough))return new PassThrough(options);Transform.call(this,options)}PassThrough.prototype._transform=function(chunk,encoding,cb){cb(null,chunk)}});var require_pipeline=__commonJS((exports2,module2)=>{var process=require_process(),{ArrayIsArray,Promise:Promise2,SymbolAsyncIterator,SymbolDispose}=require_primordials(),eos=require_end_of_stream(),{once}=require_util(),destroyImpl=require_destroy(),Duplex=require_duplex(),{aggregateTwoErrors,codes:{ERR_INVALID_ARG_TYPE,ERR_INVALID_RETURN_VALUE,ERR_MISSING_ARGS,ERR_STREAM_DESTROYED,ERR_STREAM_PREMATURE_CLOSE},AbortError}=require_errors(),{validateFunction,validateAbortSignal}=require_validators(),{isIterable,isReadable,isReadableNodeStream,isNodeStream,isTransformStream,isWebStream,isReadableStream,isReadableFinished}=require_utils(),AbortController=globalThis.AbortController||require_abort_controller().AbortController,PassThrough,Readable,addAbortListener;function destroyer(stream,reading,writing){let finished=!1;stream.on(\"close\",()=>{finished=!0});let cleanup=eos(stream,{readable:reading,writable:writing},(err)=>{finished=!err});return{destroy:(err)=>{if(finished)return;finished=!0,destroyImpl.destroyer(stream,err||new ERR_STREAM_DESTROYED(\"pipe\"))},cleanup}}function popCallback(streams){return validateFunction(streams[streams.length-1],\"streams[stream.length - 1]\"),streams.pop()}function makeAsyncIterable(val){if(isIterable(val))return val;else if(isReadableNodeStream(val))return fromReadable(val);throw new ERR_INVALID_ARG_TYPE(\"val\",[\"Readable\",\"Iterable\",\"AsyncIterable\"],val)}async function*fromReadable(val){if(!Readable)Readable=require_readable();yield*Readable.prototype[SymbolAsyncIterator].call(val)}async function pumpToNode(iterable,writable,finish,{end}){let error,onresolve=null,resume=(err)=>{if(err)error=err;if(onresolve){let callback=onresolve;onresolve=null,callback()}},wait=()=>new Promise2((resolve,reject)=>{if(error)reject(error);else onresolve=()=>{if(error)reject(error);else resolve()}});writable.on(\"drain\",resume);let cleanup=eos(writable,{readable:!1},resume);try{if(writable.writableNeedDrain)await wait();for await(let chunk of iterable)if(!writable.write(chunk))await wait();if(end)writable.end(),await wait();finish()}catch(err){finish(error!==err?aggregateTwoErrors(error,err):err)}finally{cleanup(),writable.off(\"drain\",resume)}}async function pumpToWeb(readable,writable,finish,{end}){if(isTransformStream(writable))writable=writable.writable;let writer=writable.getWriter();try{for await(let chunk of readable)await writer.ready,writer.write(chunk).catch(()=>{});if(await writer.ready,end)await writer.close();finish()}catch(err){try{await writer.abort(err),finish(err)}catch(err2){finish(err2)}}}function pipeline(...streams){return pipelineImpl(streams,once(popCallback(streams)))}function pipelineImpl(streams,callback,opts){if(streams.length===1&&ArrayIsArray(streams[0]))streams=streams[0];if(streams.length<2)throw new ERR_MISSING_ARGS(\"streams\");let ac=new AbortController,signal=ac.signal,outerSignal=opts===null||opts===void 0?void 0:opts.signal,lastStreamCleanup=[];validateAbortSignal(outerSignal,\"options.signal\");function abort(){finishImpl(new AbortError)}addAbortListener=addAbortListener||require_util().addAbortListener;let disposable;if(outerSignal)disposable=addAbortListener(outerSignal,abort);let error,value,destroys=[],finishCount=0;function finish(err){finishImpl(err,--finishCount===0)}function finishImpl(err,final){var _disposable;if(err&&(!error||error.code===\"ERR_STREAM_PREMATURE_CLOSE\"))error=err;if(!error&&!final)return;while(destroys.length)destroys.shift()(error);if((_disposable=disposable)===null||_disposable===void 0||_disposable[SymbolDispose](),ac.abort(),final){if(!error)lastStreamCleanup.forEach((fn)=>fn());process.nextTick(callback,error,value)}}let ret;for(let i=0;i<streams.length;i++){let stream=streams[i],reading=i<streams.length-1,writing=i>0,end=reading||(opts===null||opts===void 0?void 0:opts.end)!==!1,isLastStream=i===streams.length-1;if(isNodeStream(stream)){let onError2=function(err){if(err&&err.name!==\"AbortError\"&&err.code!==\"ERR_STREAM_PREMATURE_CLOSE\")finish(err)};var onError=onError2;if(end){let{destroy,cleanup}=destroyer(stream,reading,writing);if(destroys.push(destroy),isReadable(stream)&&isLastStream)lastStreamCleanup.push(cleanup)}if(stream.on(\"error\",onError2),isReadable(stream)&&isLastStream)lastStreamCleanup.push(()=>{stream.removeListener(\"error\",onError2)})}if(i===0)if(typeof stream===\"function\"){if(ret=stream({signal}),!isIterable(ret))throw new ERR_INVALID_RETURN_VALUE(\"Iterable, AsyncIterable or Stream\",\"source\",ret)}else if(isIterable(stream)||isReadableNodeStream(stream)||isTransformStream(stream))ret=stream;else ret=Duplex.from(stream);else if(typeof stream===\"function\"){if(isTransformStream(ret)){var _ret;ret=makeAsyncIterable((_ret=ret)===null||_ret===void 0?void 0:_ret.readable)}else ret=makeAsyncIterable(ret);if(ret=stream(ret,{signal}),reading){if(!isIterable(ret,!0))throw new ERR_INVALID_RETURN_VALUE(\"AsyncIterable\",`transform[${i-1}]`,ret)}else{var _ret2;if(!PassThrough)PassThrough=require_passthrough();let pt=new PassThrough({objectMode:!0}),then=(_ret2=ret)===null||_ret2===void 0?void 0:_ret2.then;if(typeof then===\"function\")finishCount++,then.call(ret,(val)=>{if(value=val,val!=null)pt.write(val);if(end)pt.end();process.nextTick(finish)},(err)=>{pt.destroy(err),process.nextTick(finish,err)});else if(isIterable(ret,!0))finishCount++,pumpToNode(ret,pt,finish,{end});else if(isReadableStream(ret)||isTransformStream(ret)){let toRead=ret.readable||ret;finishCount++,pumpToNode(toRead,pt,finish,{end})}else throw new ERR_INVALID_RETURN_VALUE(\"AsyncIterable or Promise\",\"destination\",ret);ret=pt;let{destroy,cleanup}=destroyer(ret,!1,!0);if(destroys.push(destroy),isLastStream)lastStreamCleanup.push(cleanup)}}else if(isNodeStream(stream)){if(isReadableNodeStream(ret)){finishCount+=2;let cleanup=pipe(ret,stream,finish,{end});if(isReadable(stream)&&isLastStream)lastStreamCleanup.push(cleanup)}else if(isTransformStream(ret)||isReadableStream(ret)){let toRead=ret.readable||ret;finishCount++,pumpToNode(toRead,stream,finish,{end})}else if(isIterable(ret))finishCount++,pumpToNode(ret,stream,finish,{end});else throw new ERR_INVALID_ARG_TYPE(\"val\",[\"Readable\",\"Iterable\",\"AsyncIterable\",\"ReadableStream\",\"TransformStream\"],ret);ret=stream}else if(isWebStream(stream)){if(isReadableNodeStream(ret))finishCount++,pumpToWeb(makeAsyncIterable(ret),stream,finish,{end});else if(isReadableStream(ret)||isIterable(ret))finishCount++,pumpToWeb(ret,stream,finish,{end});else if(isTransformStream(ret))finishCount++,pumpToWeb(ret.readable,stream,finish,{end});else throw new ERR_INVALID_ARG_TYPE(\"val\",[\"Readable\",\"Iterable\",\"AsyncIterable\",\"ReadableStream\",\"TransformStream\"],ret);ret=stream}else ret=Duplex.from(stream)}if(signal!==null&&signal!==void 0&&signal.aborted||outerSignal!==null&&outerSignal!==void 0&&outerSignal.aborted)process.nextTick(abort);return ret}function pipe(src,dst,finish,{end}){let ended=!1;if(dst.on(\"close\",()=>{if(!ended)finish(new ERR_STREAM_PREMATURE_CLOSE)}),src.pipe(dst,{end:!1}),end){let endFn2=function(){ended=!0,dst.end()};var endFn=endFn2;if(isReadableFinished(src))process.nextTick(endFn2);else src.once(\"end\",endFn2)}else finish();return eos(src,{readable:!0,writable:!1},(err)=>{let rState=src._readableState;if(err&&err.code===\"ERR_STREAM_PREMATURE_CLOSE\"&&rState&&rState.ended&&!rState.errored&&!rState.errorEmitted)src.once(\"end\",finish).once(\"error\",finish);else finish(err)}),eos(dst,{readable:!1,writable:!0},finish)}module2.exports={pipelineImpl,pipeline}});var require_compose=__commonJS((exports2,module2)=>{var{pipeline}=require_pipeline(),Duplex=require_duplex(),{destroyer}=require_destroy(),{isNodeStream,isReadable,isWritable,isWebStream,isTransformStream,isWritableStream,isReadableStream}=require_utils(),{AbortError,codes:{ERR_INVALID_ARG_VALUE,ERR_MISSING_ARGS}}=require_errors(),eos=require_end_of_stream();module2.exports=function(...streams){if(streams.length===0)throw new ERR_MISSING_ARGS(\"streams\");if(streams.length===1)return Duplex.from(streams[0]);let orgStreams=[...streams];if(typeof streams[0]===\"function\")streams[0]=Duplex.from(streams[0]);if(typeof streams[streams.length-1]===\"function\"){let idx=streams.length-1;streams[idx]=Duplex.from(streams[idx])}for(let n=0;n<streams.length;++n){if(!isNodeStream(streams[n])&&!isWebStream(streams[n]))continue;if(n<streams.length-1&&!(isReadable(streams[n])||isReadableStream(streams[n])||isTransformStream(streams[n])))throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`,orgStreams[n],\"must be readable\");if(n>0&&!(isWritable(streams[n])||isWritableStream(streams[n])||isTransformStream(streams[n])))throw new ERR_INVALID_ARG_VALUE(`streams[${n}]`,orgStreams[n],\"must be writable\")}let ondrain,onfinish,onreadable,onclose,d;function onfinished(err){let cb=onclose;if(onclose=null,cb)cb(err);else if(err)d.destroy(err);else if(!readable&&!writable)d.destroy()}let head=streams[0],tail=pipeline(streams,onfinished),writable=!!(isWritable(head)||isWritableStream(head)||isTransformStream(head)),readable=!!(isReadable(tail)||isReadableStream(tail)||isTransformStream(tail));if(d=new Duplex({writableObjectMode:!!(head!==null&&head!==void 0&&head.writableObjectMode),readableObjectMode:!!(tail!==null&&tail!==void 0&&tail.readableObjectMode),writable,readable}),writable){if(isNodeStream(head))d._write=function(chunk,encoding,callback){if(head.write(chunk,encoding))callback();else ondrain=callback},d._final=function(callback){head.end(),onfinish=callback},head.on(\"drain\",function(){if(ondrain){let cb=ondrain;ondrain=null,cb()}});else if(isWebStream(head)){let writer=(isTransformStream(head)?head.writable:head).getWriter();d._write=async function(chunk,encoding,callback){try{await writer.ready,writer.write(chunk).catch(()=>{}),callback()}catch(err){callback(err)}},d._final=async function(callback){try{await writer.ready,writer.close().catch(()=>{}),onfinish=callback}catch(err){callback(err)}}}let toRead=isTransformStream(tail)?tail.readable:tail;eos(toRead,()=>{if(onfinish){let cb=onfinish;onfinish=null,cb()}})}if(readable){if(isNodeStream(tail))tail.on(\"readable\",function(){if(onreadable){let cb=onreadable;onreadable=null,cb()}}),tail.on(\"end\",function(){d.push(null)}),d._read=function(){while(!0){let buf=tail.read();if(buf===null){onreadable=d._read;return}if(!d.push(buf))return}};else if(isWebStream(tail)){let reader=(isTransformStream(tail)?tail.readable:tail).getReader();d._read=async function(){while(!0)try{let{value,done}=await reader.read();if(!d.push(value))return;if(done){d.push(null);return}}catch{return}}}}return d._destroy=function(err,callback){if(!err&&onclose!==null)err=new AbortError;if(onreadable=null,ondrain=null,onfinish=null,onclose===null)callback(err);else if(onclose=callback,isNodeStream(tail))destroyer(tail,err)},d}});var require_operators=__commonJS((exports2,module2)=>{var AbortController=globalThis.AbortController||require_abort_controller().AbortController,{codes:{ERR_INVALID_ARG_VALUE,ERR_INVALID_ARG_TYPE,ERR_MISSING_ARGS,ERR_OUT_OF_RANGE},AbortError}=require_errors(),{validateAbortSignal,validateInteger,validateObject}=require_validators(),kWeakHandler=require_primordials().Symbol(\"kWeak\"),kResistStopPropagation=require_primordials().Symbol(\"kResistStopPropagation\"),{finished}=require_end_of_stream(),staticCompose=require_compose(),{addAbortSignalNoValidate}=require_add_abort_signal(),{isWritable,isNodeStream}=require_utils(),{deprecate}=require_util(),{ArrayPrototypePush,Boolean:Boolean2,MathFloor,Number:Number2,NumberIsNaN,Promise:Promise2,PromiseReject,PromiseResolve,PromisePrototypeThen,Symbol:Symbol2}=require_primordials(),kEmpty=Symbol2(\"kEmpty\"),kEof=Symbol2(\"kEof\");function compose(stream,options){if(options!=null)validateObject(options,\"options\");if((options===null||options===void 0?void 0:options.signal)!=null)validateAbortSignal(options.signal,\"options.signal\");if(isNodeStream(stream)&&!isWritable(stream))throw new ERR_INVALID_ARG_VALUE(\"stream\",stream,\"must be writable\");let composedStream=staticCompose(this,stream);if(options!==null&&options!==void 0&&options.signal)addAbortSignalNoValidate(options.signal,composedStream);return composedStream}function map(fn,options){if(typeof fn!==\"function\")throw new ERR_INVALID_ARG_TYPE(\"fn\",[\"Function\",\"AsyncFunction\"],fn);if(options!=null)validateObject(options,\"options\");if((options===null||options===void 0?void 0:options.signal)!=null)validateAbortSignal(options.signal,\"options.signal\");let concurrency=1;if((options===null||options===void 0?void 0:options.concurrency)!=null)concurrency=MathFloor(options.concurrency);let highWaterMark=concurrency-1;if((options===null||options===void 0?void 0:options.highWaterMark)!=null)highWaterMark=MathFloor(options.highWaterMark);return validateInteger(concurrency,\"options.concurrency\",1),validateInteger(highWaterMark,\"options.highWaterMark\",0),highWaterMark+=concurrency,async function*(){let signal=require_util().AbortSignalAny([options===null||options===void 0?void 0:options.signal].filter(Boolean2)),stream=this,queue=[],signalOpt={signal},next,resume,done=!1,cnt=0;function onCatch(){done=!0,afterItemProcessed()}function afterItemProcessed(){cnt-=1,maybeResume()}function maybeResume(){if(resume&&!done&&cnt<concurrency&&queue.length<highWaterMark)resume(),resume=null}async function pump(){try{for await(let val of stream){if(done)return;if(signal.aborted)throw new AbortError;try{if(val=fn(val,signalOpt),val===kEmpty)continue;val=PromiseResolve(val)}catch(err){val=PromiseReject(err)}if(cnt+=1,PromisePrototypeThen(val,afterItemProcessed,onCatch),queue.push(val),next)next(),next=null;if(!done&&(queue.length>=highWaterMark||cnt>=concurrency))await new Promise2((resolve)=>{resume=resolve})}queue.push(kEof)}catch(err){let val=PromiseReject(err);PromisePrototypeThen(val,afterItemProcessed,onCatch),queue.push(val)}finally{if(done=!0,next)next(),next=null}}pump();try{while(!0){while(queue.length>0){let val=await queue[0];if(val===kEof)return;if(signal.aborted)throw new AbortError;if(val!==kEmpty)yield val;queue.shift(),maybeResume()}await new Promise2((resolve)=>{next=resolve})}}finally{if(done=!0,resume)resume(),resume=null}}.call(this)}function asIndexedPairs(options=void 0){if(options!=null)validateObject(options,\"options\");if((options===null||options===void 0?void 0:options.signal)!=null)validateAbortSignal(options.signal,\"options.signal\");return async function*(){let index=0;for await(let val of this){var _options$signal;if(options!==null&&options!==void 0&&(_options$signal=options.signal)!==null&&_options$signal!==void 0&&_options$signal.aborted)throw new AbortError({cause:options.signal.reason});yield[index++,val]}}.call(this)}async function some(fn,options=void 0){for await(let unused of filter.call(this,fn,options))return!0;return!1}async function every(fn,options=void 0){if(typeof fn!==\"function\")throw new ERR_INVALID_ARG_TYPE(\"fn\",[\"Function\",\"AsyncFunction\"],fn);return!await some.call(this,async(...args)=>{return!await fn(...args)},options)}async function find(fn,options){for await(let result of filter.call(this,fn,options))return result;return}async function forEach(fn,options){if(typeof fn!==\"function\")throw new ERR_INVALID_ARG_TYPE(\"fn\",[\"Function\",\"AsyncFunction\"],fn);async function forEachFn(value,options2){return await fn(value,options2),kEmpty}for await(let unused of map.call(this,forEachFn,options));}function filter(fn,options){if(typeof fn!==\"function\")throw new ERR_INVALID_ARG_TYPE(\"fn\",[\"Function\",\"AsyncFunction\"],fn);async function filterFn(value,options2){if(await fn(value,options2))return value;return kEmpty}return map.call(this,filterFn,options)}class ReduceAwareErrMissingArgs extends ERR_MISSING_ARGS{constructor(){super(\"reduce\");this.message=\"Reduce of an empty stream requires an initial value\"}}async function reduce(reducer,initialValue,options){var _options$signal2;if(typeof reducer!==\"function\")throw new ERR_INVALID_ARG_TYPE(\"reducer\",[\"Function\",\"AsyncFunction\"],reducer);if(options!=null)validateObject(options,\"options\");if((options===null||options===void 0?void 0:options.signal)!=null)validateAbortSignal(options.signal,\"options.signal\");let hasInitialValue=arguments.length>1;if(options!==null&&options!==void 0&&(_options$signal2=options.signal)!==null&&_options$signal2!==void 0&&_options$signal2.aborted){let err=new AbortError(void 0,{cause:options.signal.reason});throw this.once(\"error\",()=>{}),await finished(this.destroy(err)),err}let ac=new AbortController,signal=ac.signal;if(options!==null&&options!==void 0&&options.signal){let opts={once:!0,[kWeakHandler]:this,[kResistStopPropagation]:!0};options.signal.addEventListener(\"abort\",()=>ac.abort(),opts)}let gotAnyItemFromStream=!1;try{for await(let value of this){var _options$signal3;if(gotAnyItemFromStream=!0,options!==null&&options!==void 0&&(_options$signal3=options.signal)!==null&&_options$signal3!==void 0&&_options$signal3.aborted)throw new AbortError;if(!hasInitialValue)initialValue=value,hasInitialValue=!0;else initialValue=await reducer(initialValue,value,{signal})}if(!gotAnyItemFromStream&&!hasInitialValue)throw new ReduceAwareErrMissingArgs}finally{ac.abort()}return initialValue}async function toArray(options){if(options!=null)validateObject(options,\"options\");if((options===null||options===void 0?void 0:options.signal)!=null)validateAbortSignal(options.signal,\"options.signal\");let result=[];for await(let val of this){var _options$signal4;if(options!==null&&options!==void 0&&(_options$signal4=options.signal)!==null&&_options$signal4!==void 0&&_options$signal4.aborted)throw new AbortError(void 0,{cause:options.signal.reason});ArrayPrototypePush(result,val)}return result}function flatMap(fn,options){let values=map.call(this,fn,options);return async function*(){for await(let val of values)yield*val}.call(this)}function toIntegerOrInfinity(number){if(number=Number2(number),NumberIsNaN(number))return 0;if(number<0)throw new ERR_OUT_OF_RANGE(\"number\",\">= 0\",number);return number}function drop(number,options=void 0){if(options!=null)validateObject(options,\"options\");if((options===null||options===void 0?void 0:options.signal)!=null)validateAbortSignal(options.signal,\"options.signal\");return number=toIntegerOrInfinity(number),async function*(){var _options$signal5;if(options!==null&&options!==void 0&&(_options$signal5=options.signal)!==null&&_options$signal5!==void 0&&_options$signal5.aborted)throw new AbortError;for await(let val of this){var _options$signal6;if(options!==null&&options!==void 0&&(_options$signal6=options.signal)!==null&&_options$signal6!==void 0&&_options$signal6.aborted)throw new AbortError;if(number--<=0)yield val}}.call(this)}function take(number,options=void 0){if(options!=null)validateObject(options,\"options\");if((options===null||options===void 0?void 0:options.signal)!=null)validateAbortSignal(options.signal,\"options.signal\");return number=toIntegerOrInfinity(number),async function*(){var _options$signal7;if(options!==null&&options!==void 0&&(_options$signal7=options.signal)!==null&&_options$signal7!==void 0&&_options$signal7.aborted)throw new AbortError;for await(let val of this){var _options$signal8;if(options!==null&&options!==void 0&&(_options$signal8=options.signal)!==null&&_options$signal8!==void 0&&_options$signal8.aborted)throw new AbortError;if(number-- >0)yield val;if(number<=0)return}}.call(this)}module2.exports.streamReturningOperators={asIndexedPairs:deprecate(asIndexedPairs,\"readable.asIndexedPairs will be removed in a future version.\"),drop,filter,flatMap,map,take,compose};module2.exports.promiseReturningOperators={every,forEach,reduce,toArray,some,find}});var require_promises=__commonJS((exports2,module2)=>{var{ArrayPrototypePop,Promise:Promise2}=require_primordials(),{isIterable,isNodeStream,isWebStream}=require_utils(),{pipelineImpl:pl}=require_pipeline(),{finished}=require_end_of_stream();require_stream();function pipeline(...streams){return new Promise2((resolve,reject)=>{let signal,end,lastArg=streams[streams.length-1];if(lastArg&&typeof lastArg===\"object\"&&!isNodeStream(lastArg)&&!isIterable(lastArg)&&!isWebStream(lastArg)){let options=ArrayPrototypePop(streams);signal=options.signal,end=options.end}pl(streams,(err,value)=>{if(err)reject(err);else resolve(value)},{signal,end})})}module2.exports={finished,pipeline}});var require_stream=__commonJS((exports2,module2)=>{var{Buffer}=require(\"buffer\"),{ObjectDefineProperty,ObjectKeys,ReflectApply}=require_primordials(),{promisify:{custom:customPromisify}}=require_util(),{streamReturningOperators,promiseReturningOperators}=require_operators(),{codes:{ERR_ILLEGAL_CONSTRUCTOR}}=require_errors(),compose=require_compose(),{setDefaultHighWaterMark,getDefaultHighWaterMark}=require_state(),{pipeline}=require_pipeline(),{destroyer}=require_destroy(),eos=require_end_of_stream(),promises=require_promises(),utils=require_utils(),Stream=module2.exports=require_legacy().Stream;Stream.isDestroyed=utils.isDestroyed;Stream.isDisturbed=utils.isDisturbed;Stream.isErrored=utils.isErrored;Stream.isReadable=utils.isReadable;Stream.isWritable=utils.isWritable;Stream.Readable=require_readable();for(let key of ObjectKeys(streamReturningOperators)){let fn=function(...args){if(new.target)throw ERR_ILLEGAL_CONSTRUCTOR();return Stream.Readable.from(ReflectApply(op,this,args))},op=streamReturningOperators[key];ObjectDefineProperty(fn,\"name\",{__proto__:null,value:op.name}),ObjectDefineProperty(fn,\"length\",{__proto__:null,value:op.length}),ObjectDefineProperty(Stream.Readable.prototype,key,{__proto__:null,value:fn,enumerable:!1,configurable:!0,writable:!0})}for(let key of ObjectKeys(promiseReturningOperators)){let fn=function(...args){if(new.target)throw ERR_ILLEGAL_CONSTRUCTOR();return ReflectApply(op,this,args)},op=promiseReturningOperators[key];ObjectDefineProperty(fn,\"name\",{__proto__:null,value:op.name}),ObjectDefineProperty(fn,\"length\",{__proto__:null,value:op.length}),ObjectDefineProperty(Stream.Readable.prototype,key,{__proto__:null,value:fn,enumerable:!1,configurable:!0,writable:!0})}Stream.Writable=require_writable();Stream.Duplex=require_duplex();Stream.Transform=require_transform();Stream.PassThrough=require_passthrough();Stream.pipeline=pipeline;var{addAbortSignal}=require_add_abort_signal();Stream.addAbortSignal=addAbortSignal;Stream.finished=eos;Stream.destroy=destroyer;Stream.compose=compose;Stream.setDefaultHighWaterMark=setDefaultHighWaterMark;Stream.getDefaultHighWaterMark=getDefaultHighWaterMark;ObjectDefineProperty(Stream,\"promises\",{__proto__:null,configurable:!0,enumerable:!0,get(){return promises}});ObjectDefineProperty(pipeline,customPromisify,{__proto__:null,enumerable:!0,get(){return promises.pipeline}});ObjectDefineProperty(eos,customPromisify,{__proto__:null,enumerable:!0,get(){return promises.finished}});Stream.Stream=Stream;Stream._isUint8Array=function(value){return value instanceof Uint8Array};Stream._uint8ArrayToBuffer=function(chunk){return Buffer.from(chunk.buffer,chunk.byteOffset,chunk.byteLength)}});var require_ours=__commonJS((exports2,module2)=>{var Stream=require(\"stream\");{let CustomStream=require_stream(),promises=require_promises(),originalDestroy=CustomStream.Readable.destroy;module2.exports=CustomStream.Readable,module2.exports._uint8ArrayToBuffer=CustomStream._uint8ArrayToBuffer,module2.exports._isUint8Array=CustomStream._isUint8Array,module2.exports.isDisturbed=CustomStream.isDisturbed,module2.exports.isErrored=CustomStream.isErrored,module2.exports.isReadable=CustomStream.isReadable,module2.exports.Readable=CustomStream.Readable,module2.exports.Writable=CustomStream.Writable,module2.exports.Duplex=CustomStream.Duplex,module2.exports.Transform=CustomStream.Transform,module2.exports.PassThrough=CustomStream.PassThrough,module2.exports.addAbortSignal=CustomStream.addAbortSignal,module2.exports.finished=CustomStream.finished,module2.exports.destroy=CustomStream.destroy,module2.exports.destroy=originalDestroy,module2.exports.pipeline=CustomStream.pipeline,module2.exports.compose=CustomStream.compose,Object.defineProperty(CustomStream,\"promises\",{configurable:!0,enumerable:!0,get(){return promises}}),module2.exports.Stream=CustomStream.Stream}module2.exports.default=module2.exports});module.exports=require_ours();",
16
- "var __create=Object.create;var{getPrototypeOf:__getProtoOf,defineProperty:__defProp,getOwnPropertyNames:__getOwnPropNames}=Object;var __hasOwnProp=Object.prototype.hasOwnProperty;var __toESM=(mod,isNodeMode,target)=>{target=mod!=null?__create(__getProtoOf(mod)):{};let to=isNodeMode||!mod||!mod.__esModule?__defProp(target,\"default\",{value:mod,enumerable:!0}):target;for(let key of __getOwnPropNames(mod))if(!__hasOwnProp.call(to,key))__defProp(to,key,{get:()=>mod[key],enumerable:!0});return to};var __commonJS=(cb,mod)=>()=>(mod||cb((mod={exports:{}}).exports,mod),mod.exports);var __require=('');var require_randombytes=__commonJS((exports,module)=>{module.exports=require(\"crypto\").randomBytes});var require_create_hash=__commonJS((exports,module)=>{module.exports=require(\"crypto\").createHash});var require_create_hmac=__commonJS((exports,module)=>{module.exports=require(\"crypto\").createHmac});var require_algorithms=__commonJS((exports,module)=>{module.exports={sha224WithRSAEncryption:{sign:\"rsa\",hash:\"sha224\",id:\"302d300d06096086480165030402040500041c\"},\"RSA-SHA224\":{sign:\"ecdsa/rsa\",hash:\"sha224\",id:\"302d300d06096086480165030402040500041c\"},sha256WithRSAEncryption:{sign:\"rsa\",hash:\"sha256\",id:\"3031300d060960864801650304020105000420\"},\"RSA-SHA256\":{sign:\"ecdsa/rsa\",hash:\"sha256\",id:\"3031300d060960864801650304020105000420\"},sha384WithRSAEncryption:{sign:\"rsa\",hash:\"sha384\",id:\"3041300d060960864801650304020205000430\"},\"RSA-SHA384\":{sign:\"ecdsa/rsa\",hash:\"sha384\",id:\"3041300d060960864801650304020205000430\"},sha512WithRSAEncryption:{sign:\"rsa\",hash:\"sha512\",id:\"3051300d060960864801650304020305000440\"},\"RSA-SHA512\":{sign:\"ecdsa/rsa\",hash:\"sha512\",id:\"3051300d060960864801650304020305000440\"},\"RSA-SHA1\":{sign:\"rsa\",hash:\"sha1\",id:\"3021300906052b0e03021a05000414\"},\"ecdsa-with-SHA1\":{sign:\"ecdsa\",hash:\"sha1\",id:\"\"},sha256:{sign:\"ecdsa\",hash:\"sha256\",id:\"\"},sha224:{sign:\"ecdsa\",hash:\"sha224\",id:\"\"},sha384:{sign:\"ecdsa\",hash:\"sha384\",id:\"\"},sha512:{sign:\"ecdsa\",hash:\"sha512\",id:\"\"},\"DSA-SHA\":{sign:\"dsa\",hash:\"sha1\",id:\"\"},\"DSA-SHA1\":{sign:\"dsa\",hash:\"sha1\",id:\"\"},DSA:{sign:\"dsa\",hash:\"sha1\",id:\"\"},\"DSA-WITH-SHA224\":{sign:\"dsa\",hash:\"sha224\",id:\"\"},\"DSA-SHA224\":{sign:\"dsa\",hash:\"sha224\",id:\"\"},\"DSA-WITH-SHA256\":{sign:\"dsa\",hash:\"sha256\",id:\"\"},\"DSA-SHA256\":{sign:\"dsa\",hash:\"sha256\",id:\"\"},\"DSA-WITH-SHA384\":{sign:\"dsa\",hash:\"sha384\",id:\"\"},\"DSA-SHA384\":{sign:\"dsa\",hash:\"sha384\",id:\"\"},\"DSA-WITH-SHA512\":{sign:\"dsa\",hash:\"sha512\",id:\"\"},\"DSA-SHA512\":{sign:\"dsa\",hash:\"sha512\",id:\"\"},\"DSA-RIPEMD160\":{sign:\"dsa\",hash:\"rmd160\",id:\"\"},ripemd160WithRSA:{sign:\"rsa\",hash:\"rmd160\",id:\"3021300906052b2403020105000414\"},\"RSA-RIPEMD160\":{sign:\"rsa\",hash:\"rmd160\",id:\"3021300906052b2403020105000414\"},md5WithRSAEncryption:{sign:\"rsa\",hash:\"md5\",id:\"3020300c06082a864886f70d020505000410\"},\"RSA-MD5\":{sign:\"rsa\",hash:\"md5\",id:\"3020300c06082a864886f70d020505000410\"}}});var require_precondition=__commonJS((exports,module)=>{var $isFinite=isFinite,MAX_ALLOC=Math.pow(2,30)-1;module.exports=function(iterations,keylen){if(typeof iterations!==\"number\")throw TypeError(\"Iterations not a number\");if(iterations<0||!$isFinite(iterations))throw TypeError(\"Bad iterations\");if(typeof keylen!==\"number\")throw TypeError(\"Key length not a number\");if(keylen<0||keylen>MAX_ALLOC||keylen!==keylen)throw TypeError(\"Bad key length\")}});var require_default_encoding=__commonJS((exports,module)=>{var defaultEncoding;if(globalThis.process&&globalThis.process.browser)defaultEncoding=\"utf-8\";else if(globalThis.process&&globalThis.process.version)pVersionMajor=parseInt(process.version.split(\".\")[0].slice(1),10),defaultEncoding=pVersionMajor>=6?\"utf-8\":\"binary\";else defaultEncoding=\"utf-8\";var pVersionMajor;module.exports=defaultEncoding});var require_safe_buffer=__commonJS((exports,module)=>{/*! safe-buffer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> */var buffer=require(\"buffer\"),Buffer2=buffer.Buffer;function copyProps(src,dst){for(var key in src)dst[key]=src[key]}if(Buffer2.from&&Buffer2.alloc&&Buffer2.allocUnsafe&&Buffer2.allocUnsafeSlow)module.exports=buffer;else copyProps(buffer,exports),exports.Buffer=SafeBuffer;function SafeBuffer(arg,encodingOrOffset,length){return Buffer2(arg,encodingOrOffset,length)}SafeBuffer.prototype=Object.create(Buffer2.prototype);copyProps(Buffer2,SafeBuffer);SafeBuffer.from=function(arg,encodingOrOffset,length){if(typeof arg===\"number\")throw TypeError(\"Argument must not be a number\");return Buffer2(arg,encodingOrOffset,length)};SafeBuffer.alloc=function(size,fill,encoding){if(typeof size!==\"number\")throw TypeError(\"Argument must be a number\");var buf=Buffer2(size);if(fill!==void 0)if(typeof encoding===\"string\")buf.fill(fill,encoding);else buf.fill(fill);else buf.fill(0);return buf};SafeBuffer.allocUnsafe=function(size){if(typeof size!==\"number\")throw TypeError(\"Argument must be a number\");return Buffer2(size)};SafeBuffer.allocUnsafeSlow=function(size){if(typeof size!==\"number\")throw TypeError(\"Argument must be a number\");return buffer.SlowBuffer(size)}});var require_isarray=__commonJS((exports,module)=>{var toString={}.toString;module.exports=Array.isArray||function(arr){return toString.call(arr)==\"[object Array]\"}});var require_type=__commonJS((exports,module)=>{module.exports=TypeError});var require_es_object_atoms=__commonJS((exports,module)=>{module.exports=Object});var require_es_errors=__commonJS((exports,module)=>{module.exports=Error});var require_eval=__commonJS((exports,module)=>{module.exports=EvalError});var require_range=__commonJS((exports,module)=>{module.exports=RangeError});var require_ref=__commonJS((exports,module)=>{module.exports=ReferenceError});var require_syntax=__commonJS((exports,module)=>{module.exports=SyntaxError});var require_uri=__commonJS((exports,module)=>{module.exports=URIError});var require_abs=__commonJS((exports,module)=>{module.exports=Math.abs});var require_floor=__commonJS((exports,module)=>{module.exports=Math.floor});var require_max=__commonJS((exports,module)=>{module.exports=Math.max});var require_min=__commonJS((exports,module)=>{module.exports=Math.min});var require_pow=__commonJS((exports,module)=>{module.exports=Math.pow});var require_round=__commonJS((exports,module)=>{module.exports=Math.round});var require_isNaN=__commonJS((exports,module)=>{module.exports=Number.isNaN||function(a){return a!==a}});var require_sign=__commonJS((exports,module)=>{var $isNaN=require_isNaN();module.exports=function(number){if($isNaN(number)||number===0)return number;return number<0?-1:1}});var require_gOPD=__commonJS((exports,module)=>{module.exports=Object.getOwnPropertyDescriptor});var require_gopd=__commonJS((exports,module)=>{var $gOPD=require_gOPD();if($gOPD)try{$gOPD([],\"length\")}catch(e){$gOPD=null}module.exports=$gOPD});var require_es_define_property=__commonJS((exports,module)=>{var $defineProperty=Object.defineProperty||!1;if($defineProperty)try{$defineProperty({},\"a\",{value:1})}catch(e){$defineProperty=!1}module.exports=$defineProperty});var require_shams=__commonJS((exports,module)=>{module.exports=function(){if(typeof Symbol!==\"function\"||typeof Object.getOwnPropertySymbols!==\"function\")return!1;if(typeof Symbol.iterator===\"symbol\")return!0;var obj={},sym=Symbol(\"test\"),symObj=Object(sym);if(typeof sym===\"string\")return!1;if(Object.prototype.toString.call(sym)!==\"[object Symbol]\")return!1;if(Object.prototype.toString.call(symObj)!==\"[object Symbol]\")return!1;var symVal=42;obj[sym]=symVal;for(var _ in obj)return!1;if(typeof Object.keys===\"function\"&&Object.keys(obj).length!==0)return!1;if(typeof Object.getOwnPropertyNames===\"function\"&&Object.getOwnPropertyNames(obj).length!==0)return!1;var syms=Object.getOwnPropertySymbols(obj);if(syms.length!==1||syms[0]!==sym)return!1;if(!Object.prototype.propertyIsEnumerable.call(obj,sym))return!1;if(typeof Object.getOwnPropertyDescriptor===\"function\"){var descriptor=Object.getOwnPropertyDescriptor(obj,sym);if(descriptor.value!==symVal||descriptor.enumerable!==!0)return!1}return!0}});var require_has_symbols=__commonJS((exports,module)=>{var origSymbol=typeof Symbol<\"u\"&&Symbol,hasSymbolSham=require_shams();module.exports=function(){if(typeof origSymbol!==\"function\")return!1;if(typeof Symbol!==\"function\")return!1;if(typeof origSymbol(\"foo\")!==\"symbol\")return!1;if(typeof Symbol(\"bar\")!==\"symbol\")return!1;return hasSymbolSham()}});var require_Reflect_getPrototypeOf=__commonJS((exports,module)=>{module.exports=typeof Reflect<\"u\"&&Reflect.getPrototypeOf||null});var require_Object_getPrototypeOf=__commonJS((exports,module)=>{var $Object=require_es_object_atoms();module.exports=$Object.getPrototypeOf||null});var require_implementation=__commonJS((exports,module)=>{var ERROR_MESSAGE=\"Function.prototype.bind called on incompatible \",toStr=Object.prototype.toString,max=Math.max,funcType=\"[object Function]\",concatty=function(a,b){var arr=[];for(var i=0;i<a.length;i+=1)arr[i]=a[i];for(var j=0;j<b.length;j+=1)arr[j+a.length]=b[j];return arr},slicy=function(arrLike,offset){var arr=[];for(var i=offset||0,j=0;i<arrLike.length;i+=1,j+=1)arr[j]=arrLike[i];return arr},joiny=function(arr,joiner){var str=\"\";for(var i=0;i<arr.length;i+=1)if(str+=arr[i],i+1<arr.length)str+=joiner;return str};module.exports=function(that){var target=this;if(typeof target!==\"function\"||toStr.apply(target)!==funcType)throw TypeError(ERROR_MESSAGE+target);var args=slicy(arguments,1),bound,binder=function(){if(this instanceof bound){var result=target.apply(this,concatty(args,arguments));if(Object(result)===result)return result;return this}return target.apply(that,concatty(args,arguments))},boundLength=max(0,target.length-args.length),boundArgs=[];for(var i=0;i<boundLength;i++)boundArgs[i]=\"$\"+i;if(bound=Function(\"binder\",\"return function (\"+joiny(boundArgs,\",\")+\"){ return binder.apply(this,arguments); }\")(binder),target.prototype){var Empty=function(){};Empty.prototype=target.prototype,bound.prototype=new Empty,Empty.prototype=null}return bound}});var require_function_bind=__commonJS((exports,module)=>{var implementation=require_implementation();module.exports=Function.prototype.bind||implementation});var require_functionCall=__commonJS((exports,module)=>{module.exports=Function.prototype.call});var require_functionApply=__commonJS((exports,module)=>{module.exports=Function.prototype.apply});var require_reflectApply=__commonJS((exports,module)=>{module.exports=typeof Reflect<\"u\"&&Reflect&&Reflect.apply});var require_actualApply=__commonJS((exports,module)=>{var bind=require_function_bind(),$apply=require_functionApply(),$call=require_functionCall(),$reflectApply=require_reflectApply();module.exports=$reflectApply||bind.call($call,$apply)});var require_call_bind_apply_helpers=__commonJS((exports,module)=>{var bind=require_function_bind(),$TypeError=require_type(),$call=require_functionCall(),$actualApply=require_actualApply();module.exports=function(args){if(args.length<1||typeof args[0]!==\"function\")throw new $TypeError(\"a function is required\");return $actualApply(bind,$call,args)}});var require_get=__commonJS((exports,module)=>{var callBind=require_call_bind_apply_helpers(),gOPD=require_gopd(),hasProtoAccessor;try{hasProtoAccessor=[].__proto__===Array.prototype}catch(e){if(!e||typeof e!==\"object\"||!(\"code\"in e)||e.code!==\"ERR_PROTO_ACCESS\")throw e}var desc=!!hasProtoAccessor&&gOPD&&gOPD(Object.prototype,\"__proto__\"),$Object=Object,$getPrototypeOf=$Object.getPrototypeOf;module.exports=desc&&typeof desc.get===\"function\"?callBind([desc.get]):typeof $getPrototypeOf===\"function\"?function(value){return $getPrototypeOf(value==null?value:$Object(value))}:!1});var require_get_proto=__commonJS((exports,module)=>{var reflectGetProto=require_Reflect_getPrototypeOf(),originalGetProto=require_Object_getPrototypeOf(),getDunderProto=require_get();module.exports=reflectGetProto?function(O){return reflectGetProto(O)}:originalGetProto?function(O){if(!O||typeof O!==\"object\"&&typeof O!==\"function\")throw TypeError(\"getProto: not an object\");return originalGetProto(O)}:getDunderProto?function(O){return getDunderProto(O)}:null});var require_hasown=__commonJS((exports,module)=>{var call=Function.prototype.call,$hasOwn=Object.prototype.hasOwnProperty,bind=require_function_bind();module.exports=bind.call(call,$hasOwn)});var require_get_intrinsic=__commonJS((exports,module)=>{var undefined2,$Object=require_es_object_atoms(),$Error=require_es_errors(),$EvalError=require_eval(),$RangeError=require_range(),$ReferenceError=require_ref(),$SyntaxError=require_syntax(),$TypeError=require_type(),$URIError=require_uri(),abs=require_abs(),floor=require_floor(),max=require_max(),min=require_min(),pow=require_pow(),round=require_round(),sign=require_sign(),$Function=Function,getEvalledConstructor=function(expressionSyntax){try{return $Function('\"use strict\"; return ('+expressionSyntax+\").constructor;\")()}catch(e){}},$gOPD=require_gopd(),$defineProperty=require_es_define_property(),throwTypeError=function(){throw new $TypeError},ThrowTypeError=$gOPD?function(){try{return arguments.callee,throwTypeError}catch(calleeThrows){try{return $gOPD(arguments,\"callee\").get}catch(gOPDthrows){return throwTypeError}}}():throwTypeError,hasSymbols=require_has_symbols()(),getProto=require_get_proto(),$ObjectGPO=require_Object_getPrototypeOf(),$ReflectGPO=require_Reflect_getPrototypeOf(),$apply=require_functionApply(),$call=require_functionCall(),needsEval={},TypedArray=typeof Uint8Array>\"u\"||!getProto?undefined2:getProto(Uint8Array),INTRINSICS={__proto__:null,\"%AggregateError%\":typeof AggregateError>\"u\"?undefined2:AggregateError,\"%Array%\":Array,\"%ArrayBuffer%\":typeof ArrayBuffer>\"u\"?undefined2:ArrayBuffer,\"%ArrayIteratorPrototype%\":hasSymbols&&getProto?getProto([][Symbol.iterator]()):undefined2,\"%AsyncFromSyncIteratorPrototype%\":undefined2,\"%AsyncFunction%\":needsEval,\"%AsyncGenerator%\":needsEval,\"%AsyncGeneratorFunction%\":needsEval,\"%AsyncIteratorPrototype%\":needsEval,\"%Atomics%\":typeof Atomics>\"u\"?undefined2:Atomics,\"%BigInt%\":typeof BigInt>\"u\"?undefined2:BigInt,\"%BigInt64Array%\":typeof BigInt64Array>\"u\"?undefined2:BigInt64Array,\"%BigUint64Array%\":typeof BigUint64Array>\"u\"?undefined2:BigUint64Array,\"%Boolean%\":Boolean,\"%DataView%\":typeof DataView>\"u\"?undefined2:DataView,\"%Date%\":Date,\"%decodeURI%\":decodeURI,\"%decodeURIComponent%\":decodeURIComponent,\"%encodeURI%\":encodeURI,\"%encodeURIComponent%\":encodeURIComponent,\"%Error%\":$Error,\"%eval%\":eval,\"%EvalError%\":$EvalError,\"%Float16Array%\":typeof Float16Array>\"u\"?undefined2:Float16Array,\"%Float32Array%\":typeof Float32Array>\"u\"?undefined2:Float32Array,\"%Float64Array%\":typeof Float64Array>\"u\"?undefined2:Float64Array,\"%FinalizationRegistry%\":typeof FinalizationRegistry>\"u\"?undefined2:FinalizationRegistry,\"%Function%\":$Function,\"%GeneratorFunction%\":needsEval,\"%Int8Array%\":typeof Int8Array>\"u\"?undefined2:Int8Array,\"%Int16Array%\":typeof Int16Array>\"u\"?undefined2:Int16Array,\"%Int32Array%\":typeof Int32Array>\"u\"?undefined2:Int32Array,\"%isFinite%\":isFinite,\"%isNaN%\":isNaN,\"%IteratorPrototype%\":hasSymbols&&getProto?getProto(getProto([][Symbol.iterator]())):undefined2,\"%JSON%\":typeof JSON===\"object\"?JSON:undefined2,\"%Map%\":typeof Map>\"u\"?undefined2:Map,\"%MapIteratorPrototype%\":typeof Map>\"u\"||!hasSymbols||!getProto?undefined2:getProto(new Map()[Symbol.iterator]()),\"%Math%\":Math,\"%Number%\":Number,\"%Object%\":$Object,\"%Object.getOwnPropertyDescriptor%\":$gOPD,\"%parseFloat%\":parseFloat,\"%parseInt%\":parseInt,\"%Promise%\":typeof Promise>\"u\"?undefined2:Promise,\"%Proxy%\":typeof Proxy>\"u\"?undefined2:Proxy,\"%RangeError%\":$RangeError,\"%ReferenceError%\":$ReferenceError,\"%Reflect%\":typeof Reflect>\"u\"?undefined2:Reflect,\"%RegExp%\":RegExp,\"%Set%\":typeof Set>\"u\"?undefined2:Set,\"%SetIteratorPrototype%\":typeof Set>\"u\"||!hasSymbols||!getProto?undefined2:getProto(new Set()[Symbol.iterator]()),\"%SharedArrayBuffer%\":typeof SharedArrayBuffer>\"u\"?undefined2:SharedArrayBuffer,\"%String%\":String,\"%StringIteratorPrototype%\":hasSymbols&&getProto?getProto(\"\"[Symbol.iterator]()):undefined2,\"%Symbol%\":hasSymbols?Symbol:undefined2,\"%SyntaxError%\":$SyntaxError,\"%ThrowTypeError%\":ThrowTypeError,\"%TypedArray%\":TypedArray,\"%TypeError%\":$TypeError,\"%Uint8Array%\":typeof Uint8Array>\"u\"?undefined2:Uint8Array,\"%Uint8ClampedArray%\":typeof Uint8ClampedArray>\"u\"?undefined2:Uint8ClampedArray,\"%Uint16Array%\":typeof Uint16Array>\"u\"?undefined2:Uint16Array,\"%Uint32Array%\":typeof Uint32Array>\"u\"?undefined2:Uint32Array,\"%URIError%\":$URIError,\"%WeakMap%\":typeof WeakMap>\"u\"?undefined2:WeakMap,\"%WeakRef%\":typeof WeakRef>\"u\"?undefined2:WeakRef,\"%WeakSet%\":typeof WeakSet>\"u\"?undefined2:WeakSet,\"%Function.prototype.call%\":$call,\"%Function.prototype.apply%\":$apply,\"%Object.defineProperty%\":$defineProperty,\"%Object.getPrototypeOf%\":$ObjectGPO,\"%Math.abs%\":abs,\"%Math.floor%\":floor,\"%Math.max%\":max,\"%Math.min%\":min,\"%Math.pow%\":pow,\"%Math.round%\":round,\"%Math.sign%\":sign,\"%Reflect.getPrototypeOf%\":$ReflectGPO};if(getProto)try{null.error}catch(e){errorProto=getProto(getProto(e)),INTRINSICS[\"%Error.prototype%\"]=errorProto}var errorProto,doEval=function doEval(name){var value;if(name===\"%AsyncFunction%\")value=getEvalledConstructor(\"async function () {}\");else if(name===\"%GeneratorFunction%\")value=getEvalledConstructor(\"function* () {}\");else if(name===\"%AsyncGeneratorFunction%\")value=getEvalledConstructor(\"async function* () {}\");else if(name===\"%AsyncGenerator%\"){var fn=doEval(\"%AsyncGeneratorFunction%\");if(fn)value=fn.prototype}else if(name===\"%AsyncIteratorPrototype%\"){var gen=doEval(\"%AsyncGenerator%\");if(gen&&getProto)value=getProto(gen.prototype)}return INTRINSICS[name]=value,value},LEGACY_ALIASES={__proto__:null,\"%ArrayBufferPrototype%\":[\"ArrayBuffer\",\"prototype\"],\"%ArrayPrototype%\":[\"Array\",\"prototype\"],\"%ArrayProto_entries%\":[\"Array\",\"prototype\",\"entries\"],\"%ArrayProto_forEach%\":[\"Array\",\"prototype\",\"forEach\"],\"%ArrayProto_keys%\":[\"Array\",\"prototype\",\"keys\"],\"%ArrayProto_values%\":[\"Array\",\"prototype\",\"values\"],\"%AsyncFunctionPrototype%\":[\"AsyncFunction\",\"prototype\"],\"%AsyncGenerator%\":[\"AsyncGeneratorFunction\",\"prototype\"],\"%AsyncGeneratorPrototype%\":[\"AsyncGeneratorFunction\",\"prototype\",\"prototype\"],\"%BooleanPrototype%\":[\"Boolean\",\"prototype\"],\"%DataViewPrototype%\":[\"DataView\",\"prototype\"],\"%DatePrototype%\":[\"Date\",\"prototype\"],\"%ErrorPrototype%\":[\"Error\",\"prototype\"],\"%EvalErrorPrototype%\":[\"EvalError\",\"prototype\"],\"%Float32ArrayPrototype%\":[\"Float32Array\",\"prototype\"],\"%Float64ArrayPrototype%\":[\"Float64Array\",\"prototype\"],\"%FunctionPrototype%\":[\"Function\",\"prototype\"],\"%Generator%\":[\"GeneratorFunction\",\"prototype\"],\"%GeneratorPrototype%\":[\"GeneratorFunction\",\"prototype\",\"prototype\"],\"%Int8ArrayPrototype%\":[\"Int8Array\",\"prototype\"],\"%Int16ArrayPrototype%\":[\"Int16Array\",\"prototype\"],\"%Int32ArrayPrototype%\":[\"Int32Array\",\"prototype\"],\"%JSONParse%\":[\"JSON\",\"parse\"],\"%JSONStringify%\":[\"JSON\",\"stringify\"],\"%MapPrototype%\":[\"Map\",\"prototype\"],\"%NumberPrototype%\":[\"Number\",\"prototype\"],\"%ObjectPrototype%\":[\"Object\",\"prototype\"],\"%ObjProto_toString%\":[\"Object\",\"prototype\",\"toString\"],\"%ObjProto_valueOf%\":[\"Object\",\"prototype\",\"valueOf\"],\"%PromisePrototype%\":[\"Promise\",\"prototype\"],\"%PromiseProto_then%\":[\"Promise\",\"prototype\",\"then\"],\"%Promise_all%\":[\"Promise\",\"all\"],\"%Promise_reject%\":[\"Promise\",\"reject\"],\"%Promise_resolve%\":[\"Promise\",\"resolve\"],\"%RangeErrorPrototype%\":[\"RangeError\",\"prototype\"],\"%ReferenceErrorPrototype%\":[\"ReferenceError\",\"prototype\"],\"%RegExpPrototype%\":[\"RegExp\",\"prototype\"],\"%SetPrototype%\":[\"Set\",\"prototype\"],\"%SharedArrayBufferPrototype%\":[\"SharedArrayBuffer\",\"prototype\"],\"%StringPrototype%\":[\"String\",\"prototype\"],\"%SymbolPrototype%\":[\"Symbol\",\"prototype\"],\"%SyntaxErrorPrototype%\":[\"SyntaxError\",\"prototype\"],\"%TypedArrayPrototype%\":[\"TypedArray\",\"prototype\"],\"%TypeErrorPrototype%\":[\"TypeError\",\"prototype\"],\"%Uint8ArrayPrototype%\":[\"Uint8Array\",\"prototype\"],\"%Uint8ClampedArrayPrototype%\":[\"Uint8ClampedArray\",\"prototype\"],\"%Uint16ArrayPrototype%\":[\"Uint16Array\",\"prototype\"],\"%Uint32ArrayPrototype%\":[\"Uint32Array\",\"prototype\"],\"%URIErrorPrototype%\":[\"URIError\",\"prototype\"],\"%WeakMapPrototype%\":[\"WeakMap\",\"prototype\"],\"%WeakSetPrototype%\":[\"WeakSet\",\"prototype\"]},bind=require_function_bind(),hasOwn=require_hasown(),$concat=bind.call($call,Array.prototype.concat),$spliceApply=bind.call($apply,Array.prototype.splice),$replace=bind.call($call,String.prototype.replace),$strSlice=bind.call($call,String.prototype.slice),$exec=bind.call($call,RegExp.prototype.exec),rePropName=/[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g,reEscapeChar=/\\\\(\\\\)?/g,stringToPath=function(string){var first=$strSlice(string,0,1),last=$strSlice(string,-1);if(first===\"%\"&&last!==\"%\")throw new $SyntaxError(\"invalid intrinsic syntax, expected closing `%`\");else if(last===\"%\"&&first!==\"%\")throw new $SyntaxError(\"invalid intrinsic syntax, expected opening `%`\");var result=[];return $replace(string,rePropName,function(match,number,quote,subString){result[result.length]=quote?$replace(subString,reEscapeChar,\"$1\"):number||match}),result},getBaseIntrinsic=function(name,allowMissing){var intrinsicName=name,alias;if(hasOwn(LEGACY_ALIASES,intrinsicName))alias=LEGACY_ALIASES[intrinsicName],intrinsicName=\"%\"+alias[0]+\"%\";if(hasOwn(INTRINSICS,intrinsicName)){var value=INTRINSICS[intrinsicName];if(value===needsEval)value=doEval(intrinsicName);if(typeof value>\"u\"&&!allowMissing)throw new $TypeError(\"intrinsic \"+name+\" exists, but is not available. Please file an issue!\");return{alias,name:intrinsicName,value}}throw new $SyntaxError(\"intrinsic \"+name+\" does not exist!\")};module.exports=function(name,allowMissing){if(typeof name!==\"string\"||name.length===0)throw new $TypeError(\"intrinsic name must be a non-empty string\");if(arguments.length>1&&typeof allowMissing!==\"boolean\")throw new $TypeError('\"allowMissing\" argument must be a boolean');if($exec(/^%?[^%]*%?$/,name)===null)throw new $SyntaxError(\"`%` may not be present anywhere but at the beginning and end of the intrinsic name\");var parts=stringToPath(name),intrinsicBaseName=parts.length>0?parts[0]:\"\",intrinsic=getBaseIntrinsic(\"%\"+intrinsicBaseName+\"%\",allowMissing),intrinsicRealName=intrinsic.name,value=intrinsic.value,skipFurtherCaching=!1,alias=intrinsic.alias;if(alias)intrinsicBaseName=alias[0],$spliceApply(parts,$concat([0,1],alias));for(var i=1,isOwn=!0;i<parts.length;i+=1){var part=parts[i],first=$strSlice(part,0,1),last=$strSlice(part,-1);if((first==='\"'||first===\"'\"||first===\"`\"||(last==='\"'||last===\"'\"||last===\"`\"))&&first!==last)throw new $SyntaxError(\"property names with quotes must have matching quotes\");if(part===\"constructor\"||!isOwn)skipFurtherCaching=!0;if(intrinsicBaseName+=\".\"+part,intrinsicRealName=\"%\"+intrinsicBaseName+\"%\",hasOwn(INTRINSICS,intrinsicRealName))value=INTRINSICS[intrinsicRealName];else if(value!=null){if(!(part in value)){if(!allowMissing)throw new $TypeError(\"base intrinsic for \"+name+\" exists, but the property is not available.\");return}if($gOPD&&i+1>=parts.length){var desc=$gOPD(value,part);if(isOwn=!!desc,isOwn&&\"get\"in desc&&!(\"originalValue\"in desc.get))value=desc.get;else value=value[part]}else isOwn=hasOwn(value,part),value=value[part];if(isOwn&&!skipFurtherCaching)INTRINSICS[intrinsicRealName]=value}}return value}});var require_call_bound=__commonJS((exports,module)=>{var GetIntrinsic=require_get_intrinsic(),callBindBasic=require_call_bind_apply_helpers(),$indexOf=callBindBasic([GetIntrinsic(\"%String.prototype.indexOf%\")]);module.exports=function(name,allowMissing){var intrinsic=GetIntrinsic(name,!!allowMissing);if(typeof intrinsic===\"function\"&&$indexOf(name,\".prototype.\")>-1)return callBindBasic([intrinsic]);return intrinsic}});var require_is_callable=__commonJS((exports,module)=>{var fnToStr=Function.prototype.toString,reflectApply=typeof Reflect===\"object\"&&Reflect!==null&&Reflect.apply,badArrayLike,isCallableMarker;if(typeof reflectApply===\"function\"&&typeof Object.defineProperty===\"function\")try{badArrayLike=Object.defineProperty({},\"length\",{get:function(){throw isCallableMarker}}),isCallableMarker={},reflectApply(function(){throw 42},null,badArrayLike)}catch(_){if(_!==isCallableMarker)reflectApply=null}else reflectApply=null;var constructorRegex=/^\\s*class\\b/,isES6ClassFn=function(value){try{var fnStr=fnToStr.call(value);return constructorRegex.test(fnStr)}catch(e){return!1}},tryFunctionObject=function(value){try{if(isES6ClassFn(value))return!1;return fnToStr.call(value),!0}catch(e){return!1}},toStr=Object.prototype.toString,objectClass=\"[object Object]\",fnClass=\"[object Function]\",genClass=\"[object GeneratorFunction]\",ddaClass=\"[object HTMLAllCollection]\",ddaClass2=\"[object HTML document.all class]\",ddaClass3=\"[object HTMLCollection]\",hasToStringTag=typeof Symbol===\"function\"&&!!Symbol.toStringTag,isIE68=!(0 in[,]),isDDA=function(){return!1};if(typeof document===\"object\"){if(all=document.all,toStr.call(all)===toStr.call(document.all))isDDA=function(value){if((isIE68||!value)&&(typeof value>\"u\"||typeof value===\"object\"))try{var str=toStr.call(value);return(str===ddaClass||str===ddaClass2||str===ddaClass3||str===objectClass)&&value(\"\")==null}catch(e){}return!1}}var all;module.exports=reflectApply?function(value){if(isDDA(value))return!0;if(!value)return!1;if(typeof value!==\"function\"&&typeof value!==\"object\")return!1;try{reflectApply(value,null,badArrayLike)}catch(e){if(e!==isCallableMarker)return!1}return!isES6ClassFn(value)&&tryFunctionObject(value)}:function(value){if(isDDA(value))return!0;if(!value)return!1;if(typeof value!==\"function\"&&typeof value!==\"object\")return!1;if(hasToStringTag)return tryFunctionObject(value);if(isES6ClassFn(value))return!1;var strClass=toStr.call(value);if(strClass!==fnClass&&strClass!==genClass&&!/^\\[object HTML/.test(strClass))return!1;return tryFunctionObject(value)}});var require_for_each=__commonJS((exports,module)=>{var isCallable=require_is_callable(),toStr=Object.prototype.toString,hasOwnProperty=Object.prototype.hasOwnProperty,forEachArray=function(array,iterator,receiver){for(var i=0,len=array.length;i<len;i++)if(hasOwnProperty.call(array,i))if(receiver==null)iterator(array[i],i,array);else iterator.call(receiver,array[i],i,array)},forEachString=function(string,iterator,receiver){for(var i=0,len=string.length;i<len;i++)if(receiver==null)iterator(string.charAt(i),i,string);else iterator.call(receiver,string.charAt(i),i,string)},forEachObject=function(object,iterator,receiver){for(var k in object)if(hasOwnProperty.call(object,k))if(receiver==null)iterator(object[k],k,object);else iterator.call(receiver,object[k],k,object)};function isArray(x){return toStr.call(x)===\"[object Array]\"}module.exports=function(list,iterator,thisArg){if(!isCallable(iterator))throw TypeError(\"iterator must be a function\");var receiver;if(arguments.length>=3)receiver=thisArg;if(isArray(list))forEachArray(list,iterator,receiver);else if(typeof list===\"string\")forEachString(list,iterator,receiver);else forEachObject(list,iterator,receiver)}});var require_possible_typed_array_names=__commonJS((exports,module)=>{module.exports=[\"Float16Array\",\"Float32Array\",\"Float64Array\",\"Int8Array\",\"Int16Array\",\"Int32Array\",\"Uint8Array\",\"Uint8ClampedArray\",\"Uint16Array\",\"Uint32Array\",\"BigInt64Array\",\"BigUint64Array\"]});var require_available_typed_arrays=__commonJS((exports,module)=>{var possibleNames=require_possible_typed_array_names(),g=typeof globalThis>\"u\"?globalThis:globalThis;module.exports=function(){var out=[];for(var i=0;i<possibleNames.length;i++)if(typeof g[possibleNames[i]]===\"function\")out[out.length]=possibleNames[i];return out}});var require_define_data_property=__commonJS((exports,module)=>{var $defineProperty=require_es_define_property(),$SyntaxError=require_syntax(),$TypeError=require_type(),gopd=require_gopd();module.exports=function(obj,property,value){if(!obj||typeof obj!==\"object\"&&typeof obj!==\"function\")throw new $TypeError(\"`obj` must be an object or a function`\");if(typeof property!==\"string\"&&typeof property!==\"symbol\")throw new $TypeError(\"`property` must be a string or a symbol`\");if(arguments.length>3&&typeof arguments[3]!==\"boolean\"&&arguments[3]!==null)throw new $TypeError(\"`nonEnumerable`, if provided, must be a boolean or null\");if(arguments.length>4&&typeof arguments[4]!==\"boolean\"&&arguments[4]!==null)throw new $TypeError(\"`nonWritable`, if provided, must be a boolean or null\");if(arguments.length>5&&typeof arguments[5]!==\"boolean\"&&arguments[5]!==null)throw new $TypeError(\"`nonConfigurable`, if provided, must be a boolean or null\");if(arguments.length>6&&typeof arguments[6]!==\"boolean\")throw new $TypeError(\"`loose`, if provided, must be a boolean\");var nonEnumerable=arguments.length>3?arguments[3]:null,nonWritable=arguments.length>4?arguments[4]:null,nonConfigurable=arguments.length>5?arguments[5]:null,loose=arguments.length>6?arguments[6]:!1,desc=!!gopd&&gopd(obj,property);if($defineProperty)$defineProperty(obj,property,{configurable:nonConfigurable===null&&desc?desc.configurable:!nonConfigurable,enumerable:nonEnumerable===null&&desc?desc.enumerable:!nonEnumerable,value,writable:nonWritable===null&&desc?desc.writable:!nonWritable});else if(loose||!nonEnumerable&&!nonWritable&&!nonConfigurable)obj[property]=value;else throw new $SyntaxError(\"This environment does not support defining a property as non-configurable, non-writable, or non-enumerable.\")}});var require_has_property_descriptors=__commonJS((exports,module)=>{var $defineProperty=require_es_define_property(),hasPropertyDescriptors=function(){return!!$defineProperty};hasPropertyDescriptors.hasArrayLengthDefineBug=function(){if(!$defineProperty)return null;try{return $defineProperty([],\"length\",{value:1}).length!==1}catch(e){return!0}};module.exports=hasPropertyDescriptors});var require_set_function_length=__commonJS((exports,module)=>{var GetIntrinsic=require_get_intrinsic(),define=require_define_data_property(),hasDescriptors=require_has_property_descriptors()(),gOPD=require_gopd(),$TypeError=require_type(),$floor=GetIntrinsic(\"%Math.floor%\");module.exports=function(fn,length){if(typeof fn!==\"function\")throw new $TypeError(\"`fn` is not a function\");if(typeof length!==\"number\"||length<0||length>4294967295||$floor(length)!==length)throw new $TypeError(\"`length` must be a positive 32-bit integer\");var loose=arguments.length>2&&!!arguments[2],functionLengthIsConfigurable=!0,functionLengthIsWritable=!0;if(\"length\"in fn&&gOPD){var desc=gOPD(fn,\"length\");if(desc&&!desc.configurable)functionLengthIsConfigurable=!1;if(desc&&!desc.writable)functionLengthIsWritable=!1}if(functionLengthIsConfigurable||functionLengthIsWritable||!loose)if(hasDescriptors)define(fn,\"length\",length,!0,!0);else define(fn,\"length\",length);return fn}});var require_applyBind=__commonJS((exports,module)=>{var bind=require_function_bind(),$apply=require_functionApply(),actualApply=require_actualApply();module.exports=function(){return actualApply(bind,$apply,arguments)}});var require_call_bind=__commonJS((exports,module)=>{var setFunctionLength=require_set_function_length(),$defineProperty=require_es_define_property(),callBindBasic=require_call_bind_apply_helpers(),applyBind=require_applyBind();module.exports=function(originalFunction){var func=callBindBasic(arguments),adjustedLength=originalFunction.length-(arguments.length-1);return setFunctionLength(func,1+(adjustedLength>0?adjustedLength:0),!0)};if($defineProperty)$defineProperty(module.exports,\"apply\",{value:applyBind});else module.exports.apply=applyBind});var require_shams2=__commonJS((exports,module)=>{var hasSymbols=require_shams();module.exports=function(){return hasSymbols()&&!!Symbol.toStringTag}});var require_which_typed_array=__commonJS((exports,module)=>{var forEach=require_for_each(),availableTypedArrays=require_available_typed_arrays(),callBind=require_call_bind(),callBound=require_call_bound(),gOPD=require_gopd(),getProto=require_get_proto(),$toString=callBound(\"Object.prototype.toString\"),hasToStringTag=require_shams2()(),g=typeof globalThis>\"u\"?globalThis:globalThis,typedArrays=availableTypedArrays(),$slice=callBound(\"String.prototype.slice\"),$indexOf=callBound(\"Array.prototype.indexOf\",!0)||function(array,value){for(var i=0;i<array.length;i+=1)if(array[i]===value)return i;return-1},cache={__proto__:null};if(hasToStringTag&&gOPD&&getProto)forEach(typedArrays,function(typedArray){var arr=new g[typedArray];if(Symbol.toStringTag in arr&&getProto){var proto=getProto(arr),descriptor=gOPD(proto,Symbol.toStringTag);if(!descriptor&&proto){var superProto=getProto(proto);descriptor=gOPD(superProto,Symbol.toStringTag)}cache[\"$\"+typedArray]=callBind(descriptor.get)}});else forEach(typedArrays,function(typedArray){var arr=new g[typedArray],fn=arr.slice||arr.set;if(fn)cache[\"$\"+typedArray]=callBind(fn)});var tryTypedArrays=function(value){var found=!1;return forEach(cache,function(getter,typedArray){if(!found)try{if(\"$\"+getter(value)===typedArray)found=$slice(typedArray,1)}catch(e){}}),found},trySlices=function(value){var found=!1;return forEach(cache,function(getter,name){if(!found)try{getter(value),found=$slice(name,1)}catch(e){}}),found};module.exports=function(value){if(!value||typeof value!==\"object\")return!1;if(!hasToStringTag){var tag=$slice($toString(value),8,-1);if($indexOf(typedArrays,tag)>-1)return tag;if(tag!==\"Object\")return!1;return trySlices(value)}if(!gOPD)return null;return tryTypedArrays(value)}});var require_is_typed_array=__commonJS((exports,module)=>{var whichTypedArray=require_which_typed_array();module.exports=function(value){return!!whichTypedArray(value)}});var require_typed_array_buffer=__commonJS((exports,module)=>{var $TypeError=require_type(),callBound=require_call_bound(),$typedArrayBuffer=callBound(\"TypedArray.prototype.buffer\",!0),isTypedArray=require_is_typed_array();module.exports=$typedArrayBuffer||function(x){if(!isTypedArray(x))throw new $TypeError(\"Not a Typed Array\");return x.buffer}});var require_to_buffer=__commonJS((exports,module)=>{var Buffer2=require_safe_buffer().Buffer,isArray=require_isarray(),typedArrayBuffer=require_typed_array_buffer(),isView=ArrayBuffer.isView||function(obj){try{return typedArrayBuffer(obj),!0}catch(e){return!1}},useUint8Array=typeof Uint8Array<\"u\",useArrayBuffer=typeof ArrayBuffer<\"u\"&&typeof Uint8Array<\"u\",useFromArrayBuffer=useArrayBuffer&&(Buffer2.prototype instanceof Uint8Array||Buffer2.TYPED_ARRAY_SUPPORT);module.exports=function(data,encoding){if(Buffer2.isBuffer(data)){if(data.constructor&&!(\"isBuffer\"in data))return Buffer2.from(data);return data}if(typeof data===\"string\")return Buffer2.from(data,encoding);if(useArrayBuffer&&isView(data)){if(data.byteLength===0)return Buffer2.alloc(0);if(useFromArrayBuffer){var res=Buffer2.from(data.buffer,data.byteOffset,data.byteLength);if(res.byteLength===data.byteLength)return res}var uint8=data instanceof Uint8Array?data:new Uint8Array(data.buffer,data.byteOffset,data.byteLength),result=Buffer2.from(uint8);if(result.length===data.byteLength)return result}if(useUint8Array&&data instanceof Uint8Array)return Buffer2.from(data);var isArr=isArray(data);if(isArr)for(var i=0;i<data.length;i+=1){var x=data[i];if(typeof x!==\"number\"||x<0||x>255||~~x!==x)throw RangeError(\"Array items must be numbers in the range 0-255.\")}if(isArr||Buffer2.isBuffer(data)&&data.constructor&&typeof data.constructor.isBuffer===\"function\"&&data.constructor.isBuffer(data))return Buffer2.from(data);throw TypeError('The \"data\" argument must be a string, an Array, a Buffer, a Uint8Array, or a DataView.')}});var require_to_buffer2=__commonJS((exports,module)=>{var Buffer2=require_safe_buffer().Buffer,toBuffer=require_to_buffer(),useUint8Array=typeof Uint8Array<\"u\",useArrayBuffer=useUint8Array&&typeof ArrayBuffer<\"u\",isView=useArrayBuffer&&ArrayBuffer.isView;module.exports=function(thing,encoding,name){if(typeof thing===\"string\"||Buffer2.isBuffer(thing)||useUint8Array&&thing instanceof Uint8Array||isView&&isView(thing))return toBuffer(thing,encoding);throw TypeError(name+\" must be a string, a Buffer, a Uint8Array, or a DataView\")}});var require_sync=__commonJS((exports,module)=>{var sizes={__proto__:null,md5:16,sha1:20,sha224:28,sha256:32,sha384:48,sha512:64,\"sha512-256\":32,rmd160:20,ripemd160:20},mapping={__proto__:null,\"sha-1\":\"sha1\",\"sha-224\":\"sha224\",\"sha-256\":\"sha256\",\"sha-384\":\"sha384\",\"sha-512\":\"sha512\",\"ripemd-160\":\"ripemd160\"},createHmac=require_create_hmac(),Buffer2=require_safe_buffer().Buffer,checkParameters=require_precondition(),defaultEncoding=require_default_encoding(),toBuffer=require_to_buffer2();function pbkdf2(password,salt,iterations,keylen,digest){checkParameters(iterations,keylen),password=toBuffer(password,defaultEncoding,\"Password\"),salt=toBuffer(salt,defaultEncoding,\"Salt\");var lowerDigest=(digest||\"sha1\").toLowerCase(),mappedDigest=mapping[lowerDigest]||lowerDigest,size=sizes[mappedDigest];if(typeof size!==\"number\"||!size)throw TypeError(\"Digest algorithm not supported: \"+digest);var DK=Buffer2.allocUnsafe(keylen),block1=Buffer2.allocUnsafe(salt.length+4);salt.copy(block1,0,0,salt.length);var destPos=0,hLen=size,l=Math.ceil(keylen/hLen);for(var i=1;i<=l;i++){block1.writeUInt32BE(i,salt.length);var T=createHmac(mappedDigest,password).update(block1).digest(),U=T;for(var j=1;j<iterations;j++){U=createHmac(mappedDigest,password).update(U).digest();for(var k=0;k<hLen;k++)T[k]^=U[k]}T.copy(DK,destPos),destPos+=hLen}return DK}module.exports=pbkdf2});var require_async=__commonJS((exports,module)=>{var Buffer2=require_safe_buffer().Buffer,checkParameters=require_precondition(),defaultEncoding=require_default_encoding(),sync=require_sync(),toBuffer=require_to_buffer2(),ZERO_BUF,subtle=globalThis.crypto&&globalThis.crypto.subtle,toBrowser={sha:\"SHA-1\",\"sha-1\":\"SHA-1\",sha1:\"SHA-1\",sha256:\"SHA-256\",\"sha-256\":\"SHA-256\",sha384:\"SHA-384\",\"sha-384\":\"SHA-384\",\"sha-512\":\"SHA-512\",sha512:\"SHA-512\"},checks=[],nextTick;function getNextTick(){if(nextTick)return nextTick;if(globalThis.process&&globalThis.process.nextTick)nextTick=globalThis.process.nextTick;else if(globalThis.queueMicrotask)nextTick=globalThis.queueMicrotask;else if(globalThis.setImmediate)nextTick=globalThis.setImmediate;else nextTick=globalThis.setTimeout;return nextTick}function browserPbkdf2(password,salt,iterations,length,algo){return subtle.importKey(\"raw\",password,{name:\"PBKDF2\"},!1,[\"deriveBits\"]).then(function(key){return subtle.deriveBits({name:\"PBKDF2\",salt,iterations,hash:{name:algo}},key,length<<3)}).then(function(res){return Buffer2.from(res)})}function checkNative(algo){if(globalThis.process&&!globalThis.process.browser)return Promise.resolve(!1);if(!subtle||!subtle.importKey||!subtle.deriveBits)return Promise.resolve(!1);if(checks[algo]!==void 0)return checks[algo];ZERO_BUF=ZERO_BUF||Buffer2.alloc(8);var prom=browserPbkdf2(ZERO_BUF,ZERO_BUF,10,128,algo).then(function(){return!0},function(){return!1});return checks[algo]=prom,prom}function resolvePromise(promise,callback){promise.then(function(out){getNextTick()(function(){callback(null,out)})},function(e){getNextTick()(function(){callback(e)})})}module.exports=function(password,salt,iterations,keylen,digest,callback){if(typeof digest===\"function\")callback=digest,digest=void 0;if(checkParameters(iterations,keylen),password=toBuffer(password,defaultEncoding,\"Password\"),salt=toBuffer(salt,defaultEncoding,\"Salt\"),typeof callback!==\"function\")throw Error(\"No callback provided to pbkdf2\");digest=digest||\"sha1\";var algo=toBrowser[digest.toLowerCase()];if(!algo||typeof globalThis.Promise!==\"function\"){getNextTick()(function(){var out;try{out=sync(password,salt,iterations,keylen,digest)}catch(e){callback(e);return}callback(null,out)});return}resolvePromise(checkNative(algo).then(function(resp){if(resp)return browserPbkdf2(password,salt,iterations,keylen,algo);return sync(password,salt,iterations,keylen,digest)}),callback)}});var require_pbkdf2=__commonJS((exports)=>{var nativeImpl=require(\"crypto\"),checkParameters=require_precondition(),defaultEncoding=require_default_encoding(),toBuffer=require_to_buffer2();function nativePBKDF2(password,salt,iterations,keylen,digest,callback){if(checkParameters(iterations,keylen),password=toBuffer(password,defaultEncoding,\"Password\"),salt=toBuffer(salt,defaultEncoding,\"Salt\"),typeof digest===\"function\")callback=digest,digest=\"sha1\";if(typeof callback!==\"function\")throw Error(\"No callback provided to pbkdf2\");return nativeImpl.pbkdf2(password,salt,iterations,keylen,digest,callback)}function nativePBKDF2Sync(password,salt,iterations,keylen,digest){return checkParameters(iterations,keylen),password=toBuffer(password,defaultEncoding,\"Password\"),salt=toBuffer(salt,defaultEncoding,\"Salt\"),digest=digest||\"sha1\",nativeImpl.pbkdf2Sync(password,salt,iterations,keylen,digest)}if(!nativeImpl.pbkdf2Sync||nativeImpl.pbkdf2Sync.toString().indexOf(\"keylen, digest\")===-1)exports.pbkdf2Sync=require_sync(),exports.pbkdf2=require_async();else exports.pbkdf2Sync=nativePBKDF2Sync,exports.pbkdf2=nativePBKDF2});var require_browserify_cipher=__commonJS((exports)=>{var crypto2=require(\"crypto\");exports.createCipher=exports.Cipher=crypto2.createCipher;exports.createCipheriv=exports.Cipheriv=crypto2.createCipheriv;exports.createDecipher=exports.Decipher=crypto2.createDecipher;exports.createDecipheriv=exports.Decipheriv=crypto2.createDecipheriv;exports.listCiphers=exports.getCiphers=crypto2.getCiphers});var require_diffie_hellman=__commonJS((exports)=>{var crypto2=require(\"crypto\");exports.DiffieHellmanGroup=crypto2.DiffieHellmanGroup;exports.createDiffieHellmanGroup=crypto2.createDiffieHellmanGroup;exports.getDiffieHellman=crypto2.getDiffieHellman;exports.createDiffieHellman=crypto2.createDiffieHellman;exports.DiffieHellman=crypto2.DiffieHellman});var require_browserify_sign=__commonJS((exports)=>{var crypto2=require(\"crypto\");exports.createSign=crypto2.createSign;exports.Sign=crypto2.Sign;exports.createVerify=crypto2.createVerify;exports.Verify=crypto2.Verify});var require_package=__commonJS((exports,module)=>{module.exports={name:\"elliptic\",version:\"6.6.1\",description:\"EC cryptography\",main:\"lib/elliptic.js\",files:[\"lib\"],scripts:{lint:\"eslint lib test\",\"lint:fix\":\"npm run lint -- --fix\",unit:\"istanbul test _mocha --reporter=spec test/index.js\",test:\"npm run lint && npm run unit\",version:\"grunt dist && git add dist/\"},repository:{type:\"git\",url:\"git@github.com:indutny/elliptic\"},keywords:[\"EC\",\"Elliptic\",\"curve\",\"Cryptography\"],author:\"Fedor Indutny <fedor@indutny.com>\",license:\"MIT\",bugs:{url:\"https://github.com/indutny/elliptic/issues\"},homepage:\"https://github.com/indutny/elliptic\",devDependencies:{brfs:\"^2.0.2\",coveralls:\"^3.1.0\",eslint:\"^7.6.0\",grunt:\"^1.2.1\",\"grunt-browserify\":\"^5.3.0\",\"grunt-cli\":\"^1.3.2\",\"grunt-contrib-connect\":\"^3.0.0\",\"grunt-contrib-copy\":\"^1.0.0\",\"grunt-contrib-uglify\":\"^5.0.0\",\"grunt-mocha-istanbul\":\"^5.0.2\",\"grunt-saucelabs\":\"^9.0.1\",istanbul:\"^0.4.5\",mocha:\"^8.0.1\"},dependencies:{\"bn.js\":\"^4.11.9\",brorand:\"^1.1.0\",\"hash.js\":\"^1.0.0\",\"hmac-drbg\":\"^1.0.1\",inherits:\"^2.0.4\",\"minimalistic-assert\":\"^1.0.1\",\"minimalistic-crypto-utils\":\"^1.0.1\"}}});var require_bn=__commonJS((exports,module)=>{(function(module2,exports2){function assert(val,msg){if(!val)throw Error(msg||\"Assertion failed\")}function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype,ctor.prototype=new TempCtor,ctor.prototype.constructor=ctor}function BN(number,base,endian){if(BN.isBN(number))return number;if(this.negative=0,this.words=null,this.length=0,this.red=null,number!==null){if(base===\"le\"||base===\"be\")endian=base,base=10;this._init(number||0,base||10,endian||\"be\")}}if(typeof module2===\"object\")module2.exports=BN;else exports2.BN=BN;BN.BN=BN,BN.wordSize=26;var Buffer2;try{if(typeof window<\"u\"&&typeof window.Buffer<\"u\")Buffer2=window.Buffer;else Buffer2=require(\"buffer\").Buffer}catch(e){}BN.isBN=function(num){if(num instanceof BN)return!0;return num!==null&&typeof num===\"object\"&&num.constructor.wordSize===BN.wordSize&&Array.isArray(num.words)},BN.max=function(left,right){if(left.cmp(right)>0)return left;return right},BN.min=function(left,right){if(left.cmp(right)<0)return left;return right},BN.prototype._init=function(number,base,endian){if(typeof number===\"number\")return this._initNumber(number,base,endian);if(typeof number===\"object\")return this._initArray(number,base,endian);if(base===\"hex\")base=16;assert(base===(base|0)&&base>=2&&base<=36),number=number.toString().replace(/\\s+/g,\"\");var start=0;if(number[0]===\"-\")start++,this.negative=1;if(start<number.length){if(base===16)this._parseHex(number,start,endian);else if(this._parseBase(number,base,start),endian===\"le\")this._initArray(this.toArray(),base,endian)}},BN.prototype._initNumber=function(number,base,endian){if(number<0)this.negative=1,number=-number;if(number<67108864)this.words=[number&67108863],this.length=1;else if(number<4503599627370496)this.words=[number&67108863,number/67108864&67108863],this.length=2;else assert(number<9007199254740992),this.words=[number&67108863,number/67108864&67108863,1],this.length=3;if(endian!==\"le\")return;this._initArray(this.toArray(),base,endian)},BN.prototype._initArray=function(number,base,endian){if(assert(typeof number.length===\"number\"),number.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(number.length/3),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var j,w,off=0;if(endian===\"be\"){for(i=number.length-1,j=0;i>=0;i-=3)if(w=number[i]|number[i-1]<<8|number[i-2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}else if(endian===\"le\"){for(i=0,j=0;i<number.length;i+=3)if(w=number[i]|number[i+1]<<8|number[i+2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}return this.strip()};function parseHex4Bits(string,index){var c=string.charCodeAt(index);if(c>=65&&c<=70)return c-55;else if(c>=97&&c<=102)return c-87;else return c-48&15}function parseHexByte(string,lowerBound,index){var r=parseHex4Bits(string,index);if(index-1>=lowerBound)r|=parseHex4Bits(string,index-1)<<4;return r}BN.prototype._parseHex=function(number,start,endian){this.length=Math.ceil((number.length-start)/6),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var off=0,j=0,w;if(endian===\"be\")for(i=number.length-1;i>=start;i-=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8;else{var parseLength=number.length-start;for(i=parseLength%2===0?start+1:start;i<number.length;i+=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8}this.strip()};function parseBase(str,start,end,mul){var r=0,len=Math.min(str.length,end);for(var i=start;i<len;i++){var c=str.charCodeAt(i)-48;if(r*=mul,c>=49)r+=c-49+10;else if(c>=17)r+=c-17+10;else r+=c}return r}BN.prototype._parseBase=function(number,base,start){this.words=[0],this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base)limbLen++;limbLen--,limbPow=limbPow/base|0;var total=number.length-start,mod=total%limbLen,end=Math.min(total,total-mod)+start,word=0;for(var i=start;i<end;i+=limbLen)if(word=parseBase(number,i,i+limbLen,base),this.imuln(limbPow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word);if(mod!==0){var pow=1;word=parseBase(number,i,number.length,base);for(i=0;i<mod;i++)pow*=base;if(this.imuln(pow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word)}this.strip()},BN.prototype.copy=function(dest){dest.words=Array(this.length);for(var i=0;i<this.length;i++)dest.words[i]=this.words[i];dest.length=this.length,dest.negative=this.negative,dest.red=this.red},BN.prototype.clone=function(){var r=new BN(null);return this.copy(r),r},BN.prototype._expand=function(size){while(this.length<size)this.words[this.length++]=0;return this},BN.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},BN.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},BN.prototype.inspect=function(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var zeros=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(BN.prototype.toString=function(base,padding){base=base||10,padding=padding|0||1;var out;if(base===16||base===\"hex\"){out=\"\";var off=0,carry=0;for(var i=0;i<this.length;i++){var w=this.words[i],word=((w<<off|carry)&16777215).toString(16);if(carry=w>>>24-off&16777215,off+=2,off>=26)off-=26,i--;if(carry!==0||i!==this.length-1)out=zeros[6-word.length]+word+out;else out=word+out}if(carry!==0)out=carry.toString(16)+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base],groupBase=groupBases[base];out=\"\";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modn(groupBase).toString(base);if(c=c.idivn(groupBase),!c.isZero())out=zeros[groupSize-r.length]+r+out;else out=r+out}if(this.isZero())out=\"0\"+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}assert(!1,\"Base should be between 2 and 36\")},BN.prototype.toNumber=function(){var ret=this.words[0];if(this.length===2)ret+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)ret+=4503599627370496+this.words[1]*67108864;else if(this.length>2)assert(!1,\"Number can only safely store up to 53 bits\");return this.negative!==0?-ret:ret},BN.prototype.toJSON=function(){return this.toString(16)},BN.prototype.toBuffer=function(endian,length){return assert(typeof Buffer2<\"u\"),this.toArrayLike(Buffer2,endian,length)},BN.prototype.toArray=function(endian,length){return this.toArrayLike(Array,endian,length)},BN.prototype.toArrayLike=function(ArrayType,endian,length){var byteLength=this.byteLength(),reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,\"byte array longer than desired length\"),assert(reqLength>0,\"Requested array length <= 0\"),this.strip();var littleEndian=endian===\"le\",res=new ArrayType(reqLength),b,i,q=this.clone();if(!littleEndian){for(i=0;i<reqLength-byteLength;i++)res[i]=0;for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[reqLength-i-1]=b}else{for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[i]=b;for(;i<reqLength;i++)res[i]=0}return res},Math.clz32)BN.prototype._countBits=function(w){return 32-Math.clz32(w)};else BN.prototype._countBits=function(w){var t=w,r=0;if(t>=4096)r+=13,t>>>=13;if(t>=64)r+=7,t>>>=7;if(t>=8)r+=4,t>>>=4;if(t>=2)r+=2,t>>>=2;return r+t};BN.prototype._zeroBits=function(w){if(w===0)return 26;var t=w,r=0;if((t&8191)===0)r+=13,t>>>=13;if((t&127)===0)r+=7,t>>>=7;if((t&15)===0)r+=4,t>>>=4;if((t&3)===0)r+=2,t>>>=2;if((t&1)===0)r++;return r},BN.prototype.bitLength=function(){var w=this.words[this.length-1],hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=Array(num.bitLength());for(var bit=0;bit<w.length;bit++){var off=bit/26|0,wbit=bit%26;w[bit]=(num.words[off]&1<<wbit)>>>wbit}return w}BN.prototype.zeroBits=function(){if(this.isZero())return 0;var r=0;for(var i=0;i<this.length;i++){var b=this._zeroBits(this.words[i]);if(r+=b,b!==26)break}return r},BN.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},BN.prototype.toTwos=function(width){if(this.negative!==0)return this.abs().inotn(width).iaddn(1);return this.clone()},BN.prototype.fromTwos=function(width){if(this.testn(width-1))return this.notn(width).iaddn(1).ineg();return this.clone()},BN.prototype.isNeg=function(){return this.negative!==0},BN.prototype.neg=function(){return this.clone().ineg()},BN.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},BN.prototype.iuor=function(num){while(this.length<num.length)this.words[this.length++]=0;for(var i=0;i<num.length;i++)this.words[i]=this.words[i]|num.words[i];return this.strip()},BN.prototype.ior=function(num){return assert((this.negative|num.negative)===0),this.iuor(num)},BN.prototype.or=function(num){if(this.length>num.length)return this.clone().ior(num);return num.clone().ior(this)},BN.prototype.uor=function(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)},BN.prototype.iuand=function(num){var b;if(this.length>num.length)b=num;else b=this;for(var i=0;i<b.length;i++)this.words[i]=this.words[i]&num.words[i];return this.length=b.length,this.strip()},BN.prototype.iand=function(num){return assert((this.negative|num.negative)===0),this.iuand(num)},BN.prototype.and=function(num){if(this.length>num.length)return this.clone().iand(num);return num.clone().iand(this)},BN.prototype.uand=function(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)},BN.prototype.iuxor=function(num){var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;for(var i=0;i<b.length;i++)this.words[i]=a.words[i]^b.words[i];if(this!==a)for(;i<a.length;i++)this.words[i]=a.words[i];return this.length=a.length,this.strip()},BN.prototype.ixor=function(num){return assert((this.negative|num.negative)===0),this.iuxor(num)},BN.prototype.xor=function(num){if(this.length>num.length)return this.clone().ixor(num);return num.clone().ixor(this)},BN.prototype.uxor=function(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)},BN.prototype.inotn=function(width){assert(typeof width===\"number\"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0,bitsLeft=width%26;if(this._expand(bytesNeeded),bitsLeft>0)bytesNeeded--;for(var i=0;i<bytesNeeded;i++)this.words[i]=~this.words[i]&67108863;if(bitsLeft>0)this.words[i]=~this.words[i]&67108863>>26-bitsLeft;return this.strip()},BN.prototype.notn=function(width){return this.clone().inotn(width)},BN.prototype.setn=function(bit,val){assert(typeof bit===\"number\"&&bit>=0);var off=bit/26|0,wbit=bit%26;if(this._expand(off+1),val)this.words[off]=this.words[off]|1<<wbit;else this.words[off]=this.words[off]&~(1<<wbit);return this.strip()},BN.prototype.iadd=function(num){var r;if(this.negative!==0&&num.negative===0)return this.negative=0,r=this.isub(num),this.negative^=1,this._normSign();else if(this.negative===0&&num.negative!==0)return num.negative=0,r=this.isub(num),num.negative=1,r._normSign();var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)+(b.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;if(this.length=a.length,carry!==0)this.words[this.length]=carry,this.length++;else if(a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];return this},BN.prototype.add=function(num){var res;if(num.negative!==0&&this.negative===0)return num.negative=0,res=this.sub(num),num.negative^=1,res;else if(num.negative===0&&this.negative!==0)return this.negative=0,res=num.sub(this),this.negative=1,res;if(this.length>num.length)return this.clone().iadd(num);return num.clone().iadd(this)},BN.prototype.isub=function(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);return num.negative=1,r._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(num),this.negative=1,this._normSign();var cmp=this.cmp(num);if(cmp===0)return this.negative=0,this.length=1,this.words[0]=0,this;var a,b;if(cmp>0)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)-(b.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;if(carry===0&&i<a.length&&a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];if(this.length=Math.max(this.length,i),a!==this)this.negative=1;return this.strip()},BN.prototype.sub=function(num){return this.clone().isub(num)};function smallMulTo(self2,num,out){out.negative=num.negative^self2.negative;var len=self2.length+num.length|0;out.length=len,len=len-1|0;var a=self2.words[0]|0,b=num.words[0]|0,r=a*b,lo=r&67108863,carry=r/67108864|0;out.words[0]=lo;for(var k=1;k<len;k++){var ncarry=carry>>>26,rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j|0;a=self2.words[i]|0,b=num.words[j]|0,r=a*b+rword,ncarry+=r/67108864|0,rword=r&67108863}out.words[k]=rword|0,carry=ncarry|0}if(carry!==0)out.words[k]=carry|0;else out.length--;return out.strip()}var comb10MulTo=function(self2,num,out){var a=self2.words,b=num.words,o=out.words,c=0,lo,mid,hi,a0=a[0]|0,al0=a0&8191,ah0=a0>>>13,a1=a[1]|0,al1=a1&8191,ah1=a1>>>13,a2=a[2]|0,al2=a2&8191,ah2=a2>>>13,a3=a[3]|0,al3=a3&8191,ah3=a3>>>13,a4=a[4]|0,al4=a4&8191,ah4=a4>>>13,a5=a[5]|0,al5=a5&8191,ah5=a5>>>13,a6=a[6]|0,al6=a6&8191,ah6=a6>>>13,a7=a[7]|0,al7=a7&8191,ah7=a7>>>13,a8=a[8]|0,al8=a8&8191,ah8=a8>>>13,a9=a[9]|0,al9=a9&8191,ah9=a9>>>13,b0=b[0]|0,bl0=b0&8191,bh0=b0>>>13,b1=b[1]|0,bl1=b1&8191,bh1=b1>>>13,b2=b[2]|0,bl2=b2&8191,bh2=b2>>>13,b3=b[3]|0,bl3=b3&8191,bh3=b3>>>13,b4=b[4]|0,bl4=b4&8191,bh4=b4>>>13,b5=b[5]|0,bl5=b5&8191,bh5=b5>>>13,b6=b[6]|0,bl6=b6&8191,bh6=b6>>>13,b7=b[7]|0,bl7=b7&8191,bh7=b7>>>13,b8=b[8]|0,bl8=b8&8191,bh8=b8>>>13,b9=b[9]|0,bl9=b9&8191,bh9=b9>>>13;out.negative=self2.negative^num.negative,out.length=19,lo=Math.imul(al0,bl0),mid=Math.imul(al0,bh0),mid=mid+Math.imul(ah0,bl0)|0,hi=Math.imul(ah0,bh0);var w0=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w0>>>26)|0,w0&=67108863,lo=Math.imul(al1,bl0),mid=Math.imul(al1,bh0),mid=mid+Math.imul(ah1,bl0)|0,hi=Math.imul(ah1,bh0),lo=lo+Math.imul(al0,bl1)|0,mid=mid+Math.imul(al0,bh1)|0,mid=mid+Math.imul(ah0,bl1)|0,hi=hi+Math.imul(ah0,bh1)|0;var w1=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w1>>>26)|0,w1&=67108863,lo=Math.imul(al2,bl0),mid=Math.imul(al2,bh0),mid=mid+Math.imul(ah2,bl0)|0,hi=Math.imul(ah2,bh0),lo=lo+Math.imul(al1,bl1)|0,mid=mid+Math.imul(al1,bh1)|0,mid=mid+Math.imul(ah1,bl1)|0,hi=hi+Math.imul(ah1,bh1)|0,lo=lo+Math.imul(al0,bl2)|0,mid=mid+Math.imul(al0,bh2)|0,mid=mid+Math.imul(ah0,bl2)|0,hi=hi+Math.imul(ah0,bh2)|0;var w2=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w2>>>26)|0,w2&=67108863,lo=Math.imul(al3,bl0),mid=Math.imul(al3,bh0),mid=mid+Math.imul(ah3,bl0)|0,hi=Math.imul(ah3,bh0),lo=lo+Math.imul(al2,bl1)|0,mid=mid+Math.imul(al2,bh1)|0,mid=mid+Math.imul(ah2,bl1)|0,hi=hi+Math.imul(ah2,bh1)|0,lo=lo+Math.imul(al1,bl2)|0,mid=mid+Math.imul(al1,bh2)|0,mid=mid+Math.imul(ah1,bl2)|0,hi=hi+Math.imul(ah1,bh2)|0,lo=lo+Math.imul(al0,bl3)|0,mid=mid+Math.imul(al0,bh3)|0,mid=mid+Math.imul(ah0,bl3)|0,hi=hi+Math.imul(ah0,bh3)|0;var w3=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w3>>>26)|0,w3&=67108863,lo=Math.imul(al4,bl0),mid=Math.imul(al4,bh0),mid=mid+Math.imul(ah4,bl0)|0,hi=Math.imul(ah4,bh0),lo=lo+Math.imul(al3,bl1)|0,mid=mid+Math.imul(al3,bh1)|0,mid=mid+Math.imul(ah3,bl1)|0,hi=hi+Math.imul(ah3,bh1)|0,lo=lo+Math.imul(al2,bl2)|0,mid=mid+Math.imul(al2,bh2)|0,mid=mid+Math.imul(ah2,bl2)|0,hi=hi+Math.imul(ah2,bh2)|0,lo=lo+Math.imul(al1,bl3)|0,mid=mid+Math.imul(al1,bh3)|0,mid=mid+Math.imul(ah1,bl3)|0,hi=hi+Math.imul(ah1,bh3)|0,lo=lo+Math.imul(al0,bl4)|0,mid=mid+Math.imul(al0,bh4)|0,mid=mid+Math.imul(ah0,bl4)|0,hi=hi+Math.imul(ah0,bh4)|0;var w4=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w4>>>26)|0,w4&=67108863,lo=Math.imul(al5,bl0),mid=Math.imul(al5,bh0),mid=mid+Math.imul(ah5,bl0)|0,hi=Math.imul(ah5,bh0),lo=lo+Math.imul(al4,bl1)|0,mid=mid+Math.imul(al4,bh1)|0,mid=mid+Math.imul(ah4,bl1)|0,hi=hi+Math.imul(ah4,bh1)|0,lo=lo+Math.imul(al3,bl2)|0,mid=mid+Math.imul(al3,bh2)|0,mid=mid+Math.imul(ah3,bl2)|0,hi=hi+Math.imul(ah3,bh2)|0,lo=lo+Math.imul(al2,bl3)|0,mid=mid+Math.imul(al2,bh3)|0,mid=mid+Math.imul(ah2,bl3)|0,hi=hi+Math.imul(ah2,bh3)|0,lo=lo+Math.imul(al1,bl4)|0,mid=mid+Math.imul(al1,bh4)|0,mid=mid+Math.imul(ah1,bl4)|0,hi=hi+Math.imul(ah1,bh4)|0,lo=lo+Math.imul(al0,bl5)|0,mid=mid+Math.imul(al0,bh5)|0,mid=mid+Math.imul(ah0,bl5)|0,hi=hi+Math.imul(ah0,bh5)|0;var w5=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w5>>>26)|0,w5&=67108863,lo=Math.imul(al6,bl0),mid=Math.imul(al6,bh0),mid=mid+Math.imul(ah6,bl0)|0,hi=Math.imul(ah6,bh0),lo=lo+Math.imul(al5,bl1)|0,mid=mid+Math.imul(al5,bh1)|0,mid=mid+Math.imul(ah5,bl1)|0,hi=hi+Math.imul(ah5,bh1)|0,lo=lo+Math.imul(al4,bl2)|0,mid=mid+Math.imul(al4,bh2)|0,mid=mid+Math.imul(ah4,bl2)|0,hi=hi+Math.imul(ah4,bh2)|0,lo=lo+Math.imul(al3,bl3)|0,mid=mid+Math.imul(al3,bh3)|0,mid=mid+Math.imul(ah3,bl3)|0,hi=hi+Math.imul(ah3,bh3)|0,lo=lo+Math.imul(al2,bl4)|0,mid=mid+Math.imul(al2,bh4)|0,mid=mid+Math.imul(ah2,bl4)|0,hi=hi+Math.imul(ah2,bh4)|0,lo=lo+Math.imul(al1,bl5)|0,mid=mid+Math.imul(al1,bh5)|0,mid=mid+Math.imul(ah1,bl5)|0,hi=hi+Math.imul(ah1,bh5)|0,lo=lo+Math.imul(al0,bl6)|0,mid=mid+Math.imul(al0,bh6)|0,mid=mid+Math.imul(ah0,bl6)|0,hi=hi+Math.imul(ah0,bh6)|0;var w6=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w6>>>26)|0,w6&=67108863,lo=Math.imul(al7,bl0),mid=Math.imul(al7,bh0),mid=mid+Math.imul(ah7,bl0)|0,hi=Math.imul(ah7,bh0),lo=lo+Math.imul(al6,bl1)|0,mid=mid+Math.imul(al6,bh1)|0,mid=mid+Math.imul(ah6,bl1)|0,hi=hi+Math.imul(ah6,bh1)|0,lo=lo+Math.imul(al5,bl2)|0,mid=mid+Math.imul(al5,bh2)|0,mid=mid+Math.imul(ah5,bl2)|0,hi=hi+Math.imul(ah5,bh2)|0,lo=lo+Math.imul(al4,bl3)|0,mid=mid+Math.imul(al4,bh3)|0,mid=mid+Math.imul(ah4,bl3)|0,hi=hi+Math.imul(ah4,bh3)|0,lo=lo+Math.imul(al3,bl4)|0,mid=mid+Math.imul(al3,bh4)|0,mid=mid+Math.imul(ah3,bl4)|0,hi=hi+Math.imul(ah3,bh4)|0,lo=lo+Math.imul(al2,bl5)|0,mid=mid+Math.imul(al2,bh5)|0,mid=mid+Math.imul(ah2,bl5)|0,hi=hi+Math.imul(ah2,bh5)|0,lo=lo+Math.imul(al1,bl6)|0,mid=mid+Math.imul(al1,bh6)|0,mid=mid+Math.imul(ah1,bl6)|0,hi=hi+Math.imul(ah1,bh6)|0,lo=lo+Math.imul(al0,bl7)|0,mid=mid+Math.imul(al0,bh7)|0,mid=mid+Math.imul(ah0,bl7)|0,hi=hi+Math.imul(ah0,bh7)|0;var w7=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w7>>>26)|0,w7&=67108863,lo=Math.imul(al8,bl0),mid=Math.imul(al8,bh0),mid=mid+Math.imul(ah8,bl0)|0,hi=Math.imul(ah8,bh0),lo=lo+Math.imul(al7,bl1)|0,mid=mid+Math.imul(al7,bh1)|0,mid=mid+Math.imul(ah7,bl1)|0,hi=hi+Math.imul(ah7,bh1)|0,lo=lo+Math.imul(al6,bl2)|0,mid=mid+Math.imul(al6,bh2)|0,mid=mid+Math.imul(ah6,bl2)|0,hi=hi+Math.imul(ah6,bh2)|0,lo=lo+Math.imul(al5,bl3)|0,mid=mid+Math.imul(al5,bh3)|0,mid=mid+Math.imul(ah5,bl3)|0,hi=hi+Math.imul(ah5,bh3)|0,lo=lo+Math.imul(al4,bl4)|0,mid=mid+Math.imul(al4,bh4)|0,mid=mid+Math.imul(ah4,bl4)|0,hi=hi+Math.imul(ah4,bh4)|0,lo=lo+Math.imul(al3,bl5)|0,mid=mid+Math.imul(al3,bh5)|0,mid=mid+Math.imul(ah3,bl5)|0,hi=hi+Math.imul(ah3,bh5)|0,lo=lo+Math.imul(al2,bl6)|0,mid=mid+Math.imul(al2,bh6)|0,mid=mid+Math.imul(ah2,bl6)|0,hi=hi+Math.imul(ah2,bh6)|0,lo=lo+Math.imul(al1,bl7)|0,mid=mid+Math.imul(al1,bh7)|0,mid=mid+Math.imul(ah1,bl7)|0,hi=hi+Math.imul(ah1,bh7)|0,lo=lo+Math.imul(al0,bl8)|0,mid=mid+Math.imul(al0,bh8)|0,mid=mid+Math.imul(ah0,bl8)|0,hi=hi+Math.imul(ah0,bh8)|0;var w8=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w8>>>26)|0,w8&=67108863,lo=Math.imul(al9,bl0),mid=Math.imul(al9,bh0),mid=mid+Math.imul(ah9,bl0)|0,hi=Math.imul(ah9,bh0),lo=lo+Math.imul(al8,bl1)|0,mid=mid+Math.imul(al8,bh1)|0,mid=mid+Math.imul(ah8,bl1)|0,hi=hi+Math.imul(ah8,bh1)|0,lo=lo+Math.imul(al7,bl2)|0,mid=mid+Math.imul(al7,bh2)|0,mid=mid+Math.imul(ah7,bl2)|0,hi=hi+Math.imul(ah7,bh2)|0,lo=lo+Math.imul(al6,bl3)|0,mid=mid+Math.imul(al6,bh3)|0,mid=mid+Math.imul(ah6,bl3)|0,hi=hi+Math.imul(ah6,bh3)|0,lo=lo+Math.imul(al5,bl4)|0,mid=mid+Math.imul(al5,bh4)|0,mid=mid+Math.imul(ah5,bl4)|0,hi=hi+Math.imul(ah5,bh4)|0,lo=lo+Math.imul(al4,bl5)|0,mid=mid+Math.imul(al4,bh5)|0,mid=mid+Math.imul(ah4,bl5)|0,hi=hi+Math.imul(ah4,bh5)|0,lo=lo+Math.imul(al3,bl6)|0,mid=mid+Math.imul(al3,bh6)|0,mid=mid+Math.imul(ah3,bl6)|0,hi=hi+Math.imul(ah3,bh6)|0,lo=lo+Math.imul(al2,bl7)|0,mid=mid+Math.imul(al2,bh7)|0,mid=mid+Math.imul(ah2,bl7)|0,hi=hi+Math.imul(ah2,bh7)|0,lo=lo+Math.imul(al1,bl8)|0,mid=mid+Math.imul(al1,bh8)|0,mid=mid+Math.imul(ah1,bl8)|0,hi=hi+Math.imul(ah1,bh8)|0,lo=lo+Math.imul(al0,bl9)|0,mid=mid+Math.imul(al0,bh9)|0,mid=mid+Math.imul(ah0,bl9)|0,hi=hi+Math.imul(ah0,bh9)|0;var w9=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w9>>>26)|0,w9&=67108863,lo=Math.imul(al9,bl1),mid=Math.imul(al9,bh1),mid=mid+Math.imul(ah9,bl1)|0,hi=Math.imul(ah9,bh1),lo=lo+Math.imul(al8,bl2)|0,mid=mid+Math.imul(al8,bh2)|0,mid=mid+Math.imul(ah8,bl2)|0,hi=hi+Math.imul(ah8,bh2)|0,lo=lo+Math.imul(al7,bl3)|0,mid=mid+Math.imul(al7,bh3)|0,mid=mid+Math.imul(ah7,bl3)|0,hi=hi+Math.imul(ah7,bh3)|0,lo=lo+Math.imul(al6,bl4)|0,mid=mid+Math.imul(al6,bh4)|0,mid=mid+Math.imul(ah6,bl4)|0,hi=hi+Math.imul(ah6,bh4)|0,lo=lo+Math.imul(al5,bl5)|0,mid=mid+Math.imul(al5,bh5)|0,mid=mid+Math.imul(ah5,bl5)|0,hi=hi+Math.imul(ah5,bh5)|0,lo=lo+Math.imul(al4,bl6)|0,mid=mid+Math.imul(al4,bh6)|0,mid=mid+Math.imul(ah4,bl6)|0,hi=hi+Math.imul(ah4,bh6)|0,lo=lo+Math.imul(al3,bl7)|0,mid=mid+Math.imul(al3,bh7)|0,mid=mid+Math.imul(ah3,bl7)|0,hi=hi+Math.imul(ah3,bh7)|0,lo=lo+Math.imul(al2,bl8)|0,mid=mid+Math.imul(al2,bh8)|0,mid=mid+Math.imul(ah2,bl8)|0,hi=hi+Math.imul(ah2,bh8)|0,lo=lo+Math.imul(al1,bl9)|0,mid=mid+Math.imul(al1,bh9)|0,mid=mid+Math.imul(ah1,bl9)|0,hi=hi+Math.imul(ah1,bh9)|0;var w10=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w10>>>26)|0,w10&=67108863,lo=Math.imul(al9,bl2),mid=Math.imul(al9,bh2),mid=mid+Math.imul(ah9,bl2)|0,hi=Math.imul(ah9,bh2),lo=lo+Math.imul(al8,bl3)|0,mid=mid+Math.imul(al8,bh3)|0,mid=mid+Math.imul(ah8,bl3)|0,hi=hi+Math.imul(ah8,bh3)|0,lo=lo+Math.imul(al7,bl4)|0,mid=mid+Math.imul(al7,bh4)|0,mid=mid+Math.imul(ah7,bl4)|0,hi=hi+Math.imul(ah7,bh4)|0,lo=lo+Math.imul(al6,bl5)|0,mid=mid+Math.imul(al6,bh5)|0,mid=mid+Math.imul(ah6,bl5)|0,hi=hi+Math.imul(ah6,bh5)|0,lo=lo+Math.imul(al5,bl6)|0,mid=mid+Math.imul(al5,bh6)|0,mid=mid+Math.imul(ah5,bl6)|0,hi=hi+Math.imul(ah5,bh6)|0,lo=lo+Math.imul(al4,bl7)|0,mid=mid+Math.imul(al4,bh7)|0,mid=mid+Math.imul(ah4,bl7)|0,hi=hi+Math.imul(ah4,bh7)|0,lo=lo+Math.imul(al3,bl8)|0,mid=mid+Math.imul(al3,bh8)|0,mid=mid+Math.imul(ah3,bl8)|0,hi=hi+Math.imul(ah3,bh8)|0,lo=lo+Math.imul(al2,bl9)|0,mid=mid+Math.imul(al2,bh9)|0,mid=mid+Math.imul(ah2,bl9)|0,hi=hi+Math.imul(ah2,bh9)|0;var w11=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w11>>>26)|0,w11&=67108863,lo=Math.imul(al9,bl3),mid=Math.imul(al9,bh3),mid=mid+Math.imul(ah9,bl3)|0,hi=Math.imul(ah9,bh3),lo=lo+Math.imul(al8,bl4)|0,mid=mid+Math.imul(al8,bh4)|0,mid=mid+Math.imul(ah8,bl4)|0,hi=hi+Math.imul(ah8,bh4)|0,lo=lo+Math.imul(al7,bl5)|0,mid=mid+Math.imul(al7,bh5)|0,mid=mid+Math.imul(ah7,bl5)|0,hi=hi+Math.imul(ah7,bh5)|0,lo=lo+Math.imul(al6,bl6)|0,mid=mid+Math.imul(al6,bh6)|0,mid=mid+Math.imul(ah6,bl6)|0,hi=hi+Math.imul(ah6,bh6)|0,lo=lo+Math.imul(al5,bl7)|0,mid=mid+Math.imul(al5,bh7)|0,mid=mid+Math.imul(ah5,bl7)|0,hi=hi+Math.imul(ah5,bh7)|0,lo=lo+Math.imul(al4,bl8)|0,mid=mid+Math.imul(al4,bh8)|0,mid=mid+Math.imul(ah4,bl8)|0,hi=hi+Math.imul(ah4,bh8)|0,lo=lo+Math.imul(al3,bl9)|0,mid=mid+Math.imul(al3,bh9)|0,mid=mid+Math.imul(ah3,bl9)|0,hi=hi+Math.imul(ah3,bh9)|0;var w12=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w12>>>26)|0,w12&=67108863,lo=Math.imul(al9,bl4),mid=Math.imul(al9,bh4),mid=mid+Math.imul(ah9,bl4)|0,hi=Math.imul(ah9,bh4),lo=lo+Math.imul(al8,bl5)|0,mid=mid+Math.imul(al8,bh5)|0,mid=mid+Math.imul(ah8,bl5)|0,hi=hi+Math.imul(ah8,bh5)|0,lo=lo+Math.imul(al7,bl6)|0,mid=mid+Math.imul(al7,bh6)|0,mid=mid+Math.imul(ah7,bl6)|0,hi=hi+Math.imul(ah7,bh6)|0,lo=lo+Math.imul(al6,bl7)|0,mid=mid+Math.imul(al6,bh7)|0,mid=mid+Math.imul(ah6,bl7)|0,hi=hi+Math.imul(ah6,bh7)|0,lo=lo+Math.imul(al5,bl8)|0,mid=mid+Math.imul(al5,bh8)|0,mid=mid+Math.imul(ah5,bl8)|0,hi=hi+Math.imul(ah5,bh8)|0,lo=lo+Math.imul(al4,bl9)|0,mid=mid+Math.imul(al4,bh9)|0,mid=mid+Math.imul(ah4,bl9)|0,hi=hi+Math.imul(ah4,bh9)|0;var w13=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w13>>>26)|0,w13&=67108863,lo=Math.imul(al9,bl5),mid=Math.imul(al9,bh5),mid=mid+Math.imul(ah9,bl5)|0,hi=Math.imul(ah9,bh5),lo=lo+Math.imul(al8,bl6)|0,mid=mid+Math.imul(al8,bh6)|0,mid=mid+Math.imul(ah8,bl6)|0,hi=hi+Math.imul(ah8,bh6)|0,lo=lo+Math.imul(al7,bl7)|0,mid=mid+Math.imul(al7,bh7)|0,mid=mid+Math.imul(ah7,bl7)|0,hi=hi+Math.imul(ah7,bh7)|0,lo=lo+Math.imul(al6,bl8)|0,mid=mid+Math.imul(al6,bh8)|0,mid=mid+Math.imul(ah6,bl8)|0,hi=hi+Math.imul(ah6,bh8)|0,lo=lo+Math.imul(al5,bl9)|0,mid=mid+Math.imul(al5,bh9)|0,mid=mid+Math.imul(ah5,bl9)|0,hi=hi+Math.imul(ah5,bh9)|0;var w14=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w14>>>26)|0,w14&=67108863,lo=Math.imul(al9,bl6),mid=Math.imul(al9,bh6),mid=mid+Math.imul(ah9,bl6)|0,hi=Math.imul(ah9,bh6),lo=lo+Math.imul(al8,bl7)|0,mid=mid+Math.imul(al8,bh7)|0,mid=mid+Math.imul(ah8,bl7)|0,hi=hi+Math.imul(ah8,bh7)|0,lo=lo+Math.imul(al7,bl8)|0,mid=mid+Math.imul(al7,bh8)|0,mid=mid+Math.imul(ah7,bl8)|0,hi=hi+Math.imul(ah7,bh8)|0,lo=lo+Math.imul(al6,bl9)|0,mid=mid+Math.imul(al6,bh9)|0,mid=mid+Math.imul(ah6,bl9)|0,hi=hi+Math.imul(ah6,bh9)|0;var w15=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w15>>>26)|0,w15&=67108863,lo=Math.imul(al9,bl7),mid=Math.imul(al9,bh7),mid=mid+Math.imul(ah9,bl7)|0,hi=Math.imul(ah9,bh7),lo=lo+Math.imul(al8,bl8)|0,mid=mid+Math.imul(al8,bh8)|0,mid=mid+Math.imul(ah8,bl8)|0,hi=hi+Math.imul(ah8,bh8)|0,lo=lo+Math.imul(al7,bl9)|0,mid=mid+Math.imul(al7,bh9)|0,mid=mid+Math.imul(ah7,bl9)|0,hi=hi+Math.imul(ah7,bh9)|0;var w16=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w16>>>26)|0,w16&=67108863,lo=Math.imul(al9,bl8),mid=Math.imul(al9,bh8),mid=mid+Math.imul(ah9,bl8)|0,hi=Math.imul(ah9,bh8),lo=lo+Math.imul(al8,bl9)|0,mid=mid+Math.imul(al8,bh9)|0,mid=mid+Math.imul(ah8,bl9)|0,hi=hi+Math.imul(ah8,bh9)|0;var w17=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w17>>>26)|0,w17&=67108863,lo=Math.imul(al9,bl9),mid=Math.imul(al9,bh9),mid=mid+Math.imul(ah9,bl9)|0,hi=Math.imul(ah9,bh9);var w18=(c+lo|0)+((mid&8191)<<13)|0;if(c=(hi+(mid>>>13)|0)+(w18>>>26)|0,w18&=67108863,o[0]=w0,o[1]=w1,o[2]=w2,o[3]=w3,o[4]=w4,o[5]=w5,o[6]=w6,o[7]=w7,o[8]=w8,o[9]=w9,o[10]=w10,o[11]=w11,o[12]=w12,o[13]=w13,o[14]=w14,o[15]=w15,o[16]=w16,o[17]=w17,o[18]=w18,c!==0)o[19]=c,out.length++;return out};if(!Math.imul)comb10MulTo=smallMulTo;function bigMulTo(self2,num,out){out.negative=num.negative^self2.negative,out.length=self2.length+num.length;var carry=0,hncarry=0;for(var k=0;k<out.length-1;k++){var ncarry=hncarry;hncarry=0;var rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j,a=self2.words[i]|0,b=num.words[j]|0,r=a*b,lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0,lo=lo+rword|0,rword=lo&67108863,ncarry=ncarry+(lo>>>26)|0,hncarry+=ncarry>>>26,ncarry&=67108863}out.words[k]=rword,carry=ncarry,ncarry=hncarry}if(carry!==0)out.words[k]=carry;else out.length--;return out.strip()}function jumboMulTo(self2,num,out){var fftm=new FFTM;return fftm.mulp(self2,num,out)}BN.prototype.mulTo=function(num,out){var res,len=this.length+num.length;if(this.length===10&&num.length===10)res=comb10MulTo(this,num,out);else if(len<63)res=smallMulTo(this,num,out);else if(len<1024)res=bigMulTo(this,num,out);else res=jumboMulTo(this,num,out);return res};function FFTM(x,y){this.x=x,this.y=y}FFTM.prototype.makeRBT=function(N){var t=Array(N),l=BN.prototype._countBits(N)-1;for(var i=0;i<N;i++)t[i]=this.revBin(i,l,N);return t},FFTM.prototype.revBin=function(x,l,N){if(x===0||x===N-1)return x;var rb=0;for(var i=0;i<l;i++)rb|=(x&1)<<l-i-1,x>>=1;return rb},FFTM.prototype.permute=function(rbt,rws,iws,rtws,itws,N){for(var i=0;i<N;i++)rtws[i]=rws[rbt[i]],itws[i]=iws[rbt[i]]},FFTM.prototype.transform=function(rws,iws,rtws,itws,N,rbt){this.permute(rbt,rws,iws,rtws,itws,N);for(var s=1;s<N;s<<=1){var l=s<<1,rtwdf=Math.cos(2*Math.PI/l),itwdf=Math.sin(2*Math.PI/l);for(var p=0;p<N;p+=l){var rtwdf_=rtwdf,itwdf_=itwdf;for(var j=0;j<s;j++){var re=rtws[p+j],ie=itws[p+j],ro=rtws[p+j+s],io=itws[p+j+s],rx=rtwdf_*ro-itwdf_*io;if(io=rtwdf_*io+itwdf_*ro,ro=rx,rtws[p+j]=re+ro,itws[p+j]=ie+io,rtws[p+j+s]=re-ro,itws[p+j+s]=ie-io,j!==l)rx=rtwdf*rtwdf_-itwdf*itwdf_,itwdf_=rtwdf*itwdf_+itwdf*rtwdf_,rtwdf_=rx}}}},FFTM.prototype.guessLen13b=function(n,m){var N=Math.max(m,n)|1,odd=N&1,i=0;for(N=N/2|0;N;N=N>>>1)i++;return 1<<i+1+odd},FFTM.prototype.conjugate=function(rws,iws,N){if(N<=1)return;for(var i=0;i<N/2;i++){var t=rws[i];rws[i]=rws[N-i-1],rws[N-i-1]=t,t=iws[i],iws[i]=-iws[N-i-1],iws[N-i-1]=-t}},FFTM.prototype.normalize13b=function(ws,N){var carry=0;for(var i=0;i<N/2;i++){var w=Math.round(ws[2*i+1]/N)*8192+Math.round(ws[2*i]/N)+carry;if(ws[i]=w&67108863,w<67108864)carry=0;else carry=w/67108864|0}return ws},FFTM.prototype.convert13b=function(ws,len,rws,N){var carry=0;for(var i=0;i<len;i++)carry=carry+(ws[i]|0),rws[2*i]=carry&8191,carry=carry>>>13,rws[2*i+1]=carry&8191,carry=carry>>>13;for(i=2*len;i<N;++i)rws[i]=0;assert(carry===0),assert((carry&-8192)===0)},FFTM.prototype.stub=function(N){var ph=Array(N);for(var i=0;i<N;i++)ph[i]=0;return ph},FFTM.prototype.mulp=function(x,y,out){var N=2*this.guessLen13b(x.length,y.length),rbt=this.makeRBT(N),_=this.stub(N),rws=Array(N),rwst=Array(N),iwst=Array(N),nrws=Array(N),nrwst=Array(N),niwst=Array(N),rmws=out.words;rmws.length=N,this.convert13b(x.words,x.length,rws,N),this.convert13b(y.words,y.length,nrws,N),this.transform(rws,_,rwst,iwst,N,rbt),this.transform(nrws,_,nrwst,niwst,N,rbt);for(var i=0;i<N;i++){var rx=rwst[i]*nrwst[i]-iwst[i]*niwst[i];iwst[i]=rwst[i]*niwst[i]+iwst[i]*nrwst[i],rwst[i]=rx}return this.conjugate(rwst,iwst,N),this.transform(rwst,iwst,rmws,_,N,rbt),this.conjugate(rmws,_,N),this.normalize13b(rmws,N),out.negative=x.negative^y.negative,out.length=x.length+y.length,out.strip()},BN.prototype.mul=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),this.mulTo(num,out)},BN.prototype.mulf=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),jumboMulTo(this,num,out)},BN.prototype.imul=function(num){return this.clone().mulTo(num,this)},BN.prototype.imuln=function(num){assert(typeof num===\"number\"),assert(num<67108864);var carry=0;for(var i=0;i<this.length;i++){var w=(this.words[i]|0)*num,lo=(w&67108863)+(carry&67108863);carry>>=26,carry+=w/67108864|0,carry+=lo>>>26,this.words[i]=lo&67108863}if(carry!==0)this.words[i]=carry,this.length++;return this.length=num===0?1:this.length,this},BN.prototype.muln=function(num){return this.clone().imuln(num)},BN.prototype.sqr=function(){return this.mul(this)},BN.prototype.isqr=function(){return this.imul(this.clone())},BN.prototype.pow=function(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i<w.length;i++,res=res.sqr())if(w[i]!==0)break;if(++i<w.length)for(var q=res.sqr();i<w.length;i++,q=q.sqr()){if(w[i]===0)continue;res=res.mul(q)}return res},BN.prototype.iushln=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26,carryMask=67108863>>>26-r<<26-r,i;if(r!==0){var carry=0;for(i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask,c=(this.words[i]|0)-newCarry<<r;this.words[i]=c|carry,carry=newCarry>>>26-r}if(carry)this.words[i]=carry,this.length++}if(s!==0){for(i=this.length-1;i>=0;i--)this.words[i+s]=this.words[i];for(i=0;i<s;i++)this.words[i]=0;this.length+=s}return this.strip()},BN.prototype.ishln=function(bits){return assert(this.negative===0),this.iushln(bits)},BN.prototype.iushrn=function(bits,hint,extended){assert(typeof bits===\"number\"&&bits>=0);var h;if(hint)h=(hint-hint%26)/26;else h=0;var r=bits%26,s=Math.min((bits-r)/26,this.length),mask=67108863^67108863>>>r<<r,maskedWords=extended;if(h-=s,h=Math.max(0,h),maskedWords){for(var i=0;i<s;i++)maskedWords.words[i]=this.words[i];maskedWords.length=s}if(s===0);else if(this.length>s){this.length-=s;for(i=0;i<this.length;i++)this.words[i]=this.words[i+s]}else this.words[0]=0,this.length=1;var carry=0;for(i=this.length-1;i>=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r,carry=word&mask}if(maskedWords&&carry!==0)maskedWords.words[maskedWords.length++]=carry;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},BN.prototype.ishrn=function(bits,hint,extended){return assert(this.negative===0),this.iushrn(bits,hint,extended)},BN.prototype.shln=function(bits){return this.clone().ishln(bits)},BN.prototype.ushln=function(bits){return this.clone().iushln(bits)},BN.prototype.shrn=function(bits){return this.clone().ishrn(bits)},BN.prototype.ushrn=function(bits){return this.clone().iushrn(bits)},BN.prototype.testn=function(bit){assert(typeof bit===\"number\"&&bit>=0);var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return!1;var w=this.words[s];return!!(w&q)},BN.prototype.imaskn=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26;if(assert(this.negative===0,\"imaskn works only with positive numbers\"),this.length<=s)return this;if(r!==0)s++;if(this.length=Math.min(s,this.length),r!==0){var mask=67108863^67108863>>>r<<r;this.words[this.length-1]&=mask}return this.strip()},BN.prototype.maskn=function(bits){return this.clone().imaskn(bits)},BN.prototype.iaddn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.isubn(-num);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<num)return this.words[0]=num-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(num),this.negative=1,this}return this._iaddn(num)},BN.prototype._iaddn=function(num){this.words[0]+=num;for(var i=0;i<this.length&&this.words[i]>=67108864;i++)if(this.words[i]-=67108864,i===this.length-1)this.words[i+1]=1;else this.words[i+1]++;return this.length=Math.max(this.length,i+1),this},BN.prototype.isubn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.iaddn(-num);if(this.negative!==0)return this.negative=0,this.iaddn(num),this.negative=1,this;if(this.words[0]-=num,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var i=0;i<this.length&&this.words[i]<0;i++)this.words[i]+=67108864,this.words[i+1]-=1;return this.strip()},BN.prototype.addn=function(num){return this.clone().iaddn(num)},BN.prototype.subn=function(num){return this.clone().isubn(num)},BN.prototype.iabs=function(){return this.negative=0,this},BN.prototype.abs=function(){return this.clone().iabs()},BN.prototype._ishlnsubmul=function(num,mul,shift){var len=num.length+shift,i;this._expand(len);var w,carry=0;for(i=0;i<num.length;i++){w=(this.words[i+shift]|0)+carry;var right=(num.words[i]|0)*mul;w-=right&67108863,carry=(w>>26)-(right/67108864|0),this.words[i+shift]=w&67108863}for(;i<this.length-shift;i++)w=(this.words[i+shift]|0)+carry,carry=w>>26,this.words[i+shift]=w&67108863;if(carry===0)return this.strip();assert(carry===-1),carry=0;for(i=0;i<this.length;i++)w=-(this.words[i]|0)+carry,carry=w>>26,this.words[i]=w&67108863;return this.negative=1,this.strip()},BN.prototype._wordDiv=function(num,mode){var shift=this.length-num.length,a=this.clone(),b=num,bhi=b.words[b.length-1]|0,bhiBits=this._countBits(bhi);if(shift=26-bhiBits,shift!==0)b=b.ushln(shift),a.iushln(shift),bhi=b.words[b.length-1]|0;var m=a.length-b.length,q;if(mode!==\"mod\"){q=new BN(null),q.length=m+1,q.words=Array(q.length);for(var i=0;i<q.length;i++)q.words[i]=0}var diff=a.clone()._ishlnsubmul(b,1,m);if(diff.negative===0){if(a=diff,q)q.words[m]=1}for(var j=m-1;j>=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863),a._ishlnsubmul(b,qj,j);while(a.negative!==0)if(qj--,a.negative=0,a._ishlnsubmul(b,1,j),!a.isZero())a.negative^=1;if(q)q.words[j]=qj}if(q)q.strip();if(a.strip(),mode!==\"div\"&&shift!==0)a.iushrn(shift);return{div:q||null,mod:a}},BN.prototype.divmod=function(num,mode,positive){if(assert(!num.isZero()),this.isZero())return{div:new BN(0),mod:new BN(0)};var div,mod,res;if(this.negative!==0&&num.negative===0){if(res=this.neg().divmod(num,mode),mode!==\"mod\")div=res.div.neg();if(mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.iadd(num)}return{div,mod}}if(this.negative===0&&num.negative!==0){if(res=this.divmod(num.neg(),mode),mode!==\"mod\")div=res.div.neg();return{div,mod:res.mod}}if((this.negative&num.negative)!==0){if(res=this.neg().divmod(num.neg(),mode),mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.isub(num)}return{div:res.div,mod}}if(num.length>this.length||this.cmp(num)<0)return{div:new BN(0),mod:this};if(num.length===1){if(mode===\"div\")return{div:this.divn(num.words[0]),mod:null};if(mode===\"mod\")return{div:null,mod:new BN(this.modn(num.words[0]))};return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))}}return this._wordDiv(num,mode)},BN.prototype.div=function(num){return this.divmod(num,\"div\",!1).div},BN.prototype.mod=function(num){return this.divmod(num,\"mod\",!1).mod},BN.prototype.umod=function(num){return this.divmod(num,\"mod\",!0).mod},BN.prototype.divRound=function(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod,half=num.ushrn(1),r2=num.andln(1),cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)},BN.prototype.modn=function(num){assert(num<=67108863);var p=67108864%num,acc=0;for(var i=this.length-1;i>=0;i--)acc=(p*acc+(this.words[i]|0))%num;return acc},BN.prototype.idivn=function(num){assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0,carry=w%num}return this.strip()},BN.prototype.divn=function(num){return this.clone().idivn(num)},BN.prototype.egcd=function(p){assert(p.negative===0),assert(!p.isZero());var x=this,y=p.clone();if(x.negative!==0)x=x.umod(p);else x=x.clone();var A=new BN(1),B=new BN(0),C=new BN(0),D=new BN(1),g=0;while(x.isEven()&&y.isEven())x.iushrn(1),y.iushrn(1),++g;var yp=y.clone(),xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd())A.iadd(yp),B.isub(xp);A.iushrn(1),B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd())C.iadd(yp),D.isub(xp);C.iushrn(1),D.iushrn(1)}}if(x.cmp(y)>=0)x.isub(y),A.isub(C),B.isub(D);else y.isub(x),C.isub(A),D.isub(B)}return{a:C,b:D,gcd:y.iushln(g)}},BN.prototype._invmp=function(p){assert(p.negative===0),assert(!p.isZero());var a=this,b=p.clone();if(a.negative!==0)a=a.umod(p);else a=a.clone();var x1=new BN(1),x2=new BN(0),delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd())x1.iadd(delta);x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd())x2.iadd(delta);x2.iushrn(1)}}if(a.cmp(b)>=0)a.isub(b),x1.isub(x2);else b.isub(a),x2.isub(x1)}var res;if(a.cmpn(1)===0)res=x1;else res=x2;if(res.cmpn(0)<0)res.iadd(p);return res},BN.prototype.gcd=function(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone(),b=num.clone();a.negative=0,b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++)a.iushrn(1),b.iushrn(1);do{while(a.isEven())a.iushrn(1);while(b.isEven())b.iushrn(1);var r=a.cmp(b);if(r<0){var t=a;a=b,b=t}else if(r===0||b.cmpn(1)===0)break;a.isub(b)}while(!0);return b.iushln(shift)},BN.prototype.invm=function(num){return this.egcd(num).a.umod(num)},BN.prototype.isEven=function(){return(this.words[0]&1)===0},BN.prototype.isOdd=function(){return(this.words[0]&1)===1},BN.prototype.andln=function(num){return this.words[0]&num},BN.prototype.bincn=function(bit){assert(typeof bit===\"number\");var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return this._expand(s+1),this.words[s]|=q,this;var carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i]|0;w+=carry,carry=w>>>26,w&=67108863,this.words[i]=w}if(carry!==0)this.words[i]=carry,this.length++;return this},BN.prototype.isZero=function(){return this.length===1&&this.words[0]===0},BN.prototype.cmpn=function(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this.strip();var res;if(this.length>1)res=1;else{if(negative)num=-num;assert(num<=67108863,\"Number is too big\");var w=this.words[0]|0;res=w===num?0:w<num?-1:1}if(this.negative!==0)return-res|0;return res},BN.prototype.cmp=function(num){if(this.negative!==0&&num.negative===0)return-1;if(this.negative===0&&num.negative!==0)return 1;var res=this.ucmp(num);if(this.negative!==0)return-res|0;return res},BN.prototype.ucmp=function(num){if(this.length>num.length)return 1;if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i]|0,b=num.words[i]|0;if(a===b)continue;if(a<b)res=-1;else if(a>b)res=1;break}return res},BN.prototype.gtn=function(num){return this.cmpn(num)===1},BN.prototype.gt=function(num){return this.cmp(num)===1},BN.prototype.gten=function(num){return this.cmpn(num)>=0},BN.prototype.gte=function(num){return this.cmp(num)>=0},BN.prototype.ltn=function(num){return this.cmpn(num)===-1},BN.prototype.lt=function(num){return this.cmp(num)===-1},BN.prototype.lten=function(num){return this.cmpn(num)<=0},BN.prototype.lte=function(num){return this.cmp(num)<=0},BN.prototype.eqn=function(num){return this.cmpn(num)===0},BN.prototype.eq=function(num){return this.cmp(num)===0},BN.red=function(num){return new Red(num)},BN.prototype.toRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),assert(this.negative===0,\"red works only with positives\"),ctx.convertTo(this)._forceRed(ctx)},BN.prototype.fromRed=function(){return assert(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},BN.prototype._forceRed=function(ctx){return this.red=ctx,this},BN.prototype.forceRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),this._forceRed(ctx)},BN.prototype.redAdd=function(num){return assert(this.red,\"redAdd works only with red numbers\"),this.red.add(this,num)},BN.prototype.redIAdd=function(num){return assert(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,num)},BN.prototype.redSub=function(num){return assert(this.red,\"redSub works only with red numbers\"),this.red.sub(this,num)},BN.prototype.redISub=function(num){return assert(this.red,\"redISub works only with red numbers\"),this.red.isub(this,num)},BN.prototype.redShl=function(num){return assert(this.red,\"redShl works only with red numbers\"),this.red.shl(this,num)},BN.prototype.redMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.mul(this,num)},BN.prototype.redIMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.imul(this,num)},BN.prototype.redSqr=function(){return assert(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},BN.prototype.redISqr=function(){return assert(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},BN.prototype.redSqrt=function(){return assert(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},BN.prototype.redInvm=function(){return assert(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},BN.prototype.redNeg=function(){return assert(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},BN.prototype.redPow=function(num){return assert(this.red&&!num.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name,this.p=new BN(p,16),this.n=this.p.bitLength(),this.k=new BN(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}MPrime.prototype._tmp=function(){var tmp=new BN(null);return tmp.words=Array(Math.ceil(this.n/13)),tmp},MPrime.prototype.ireduce=function(num){var r=num,rlen;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),rlen=r.bitLength();while(rlen>this.n);var cmp=rlen<this.n?-1:r.ucmp(this.p);if(cmp===0)r.words[0]=0,r.length=1;else if(cmp>0)r.isub(this.p);else if(r.strip!==void 0)r.strip();else r._strip();return r},MPrime.prototype.split=function(input,out){input.iushrn(this.n,0,out)},MPrime.prototype.imulK=function(num){return num.imul(this.k)};function K256(){MPrime.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}inherits(K256,MPrime),K256.prototype.split=function(input,output){var mask=4194303,outLen=Math.min(input.length,9);for(var i=0;i<outLen;i++)output.words[i]=input.words[i];if(output.length=outLen,input.length<=9){input.words[0]=0,input.length=1;return}var prev=input.words[9];output.words[output.length++]=prev&mask;for(i=10;i<input.length;i++){var next=input.words[i]|0;input.words[i-10]=(next&mask)<<4|prev>>>22,prev=next}if(prev>>>=22,input.words[i-10]=prev,prev===0&&input.length>10)input.length-=10;else input.length-=9},K256.prototype.imulK=function(num){num.words[num.length]=0,num.words[num.length+1]=0,num.length+=2;var lo=0;for(var i=0;i<num.length;i++){var w=num.words[i]|0;lo+=w*977,num.words[i]=lo&67108863,lo=w*64+(lo/67108864|0)}if(num.words[num.length-1]===0){if(num.length--,num.words[num.length-1]===0)num.length--}return num};function P224(){MPrime.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}inherits(P224,MPrime);function P192(){MPrime.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}inherits(P192,MPrime);function P25519(){MPrime.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}inherits(P25519,MPrime),P25519.prototype.imulK=function(num){var carry=0;for(var i=0;i<num.length;i++){var hi=(num.words[i]|0)*19+carry,lo=hi&67108863;hi>>>=26,num.words[i]=lo,carry=hi}if(carry!==0)num.words[num.length++]=carry;return num},BN._prime=function(name){if(primes[name])return primes[name];var prime;if(name===\"k256\")prime=new K256;else if(name===\"p224\")prime=new P224;else if(name===\"p192\")prime=new P192;else if(name===\"p25519\")prime=new P25519;else throw Error(\"Unknown prime \"+name);return primes[name]=prime,prime};function Red(m){if(typeof m===\"string\"){var prime=BN._prime(m);this.m=prime.p,this.prime=prime}else assert(m.gtn(1),\"modulus must be greater than 1\"),this.m=m,this.prime=null}Red.prototype._verify1=function(a){assert(a.negative===0,\"red works only with positives\"),assert(a.red,\"red works only with red numbers\")},Red.prototype._verify2=function(a,b){assert((a.negative|b.negative)===0,\"red works only with positives\"),assert(a.red&&a.red===b.red,\"red works only with red numbers\")},Red.prototype.imod=function(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.umod(this.m)._forceRed(this)},Red.prototype.neg=function(a){if(a.isZero())return a.clone();return this.m.sub(a)._forceRed(this)},Red.prototype.add=function(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res._forceRed(this)},Red.prototype.iadd=function(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res},Red.prototype.sub=function(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res._forceRed(this)},Red.prototype.isub=function(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res},Red.prototype.shl=function(a,num){return this._verify1(a),this.imod(a.ushln(num))},Red.prototype.imul=function(a,b){return this._verify2(a,b),this.imod(a.imul(b))},Red.prototype.mul=function(a,b){return this._verify2(a,b),this.imod(a.mul(b))},Red.prototype.isqr=function(a){return this.imul(a,a.clone())},Red.prototype.sqr=function(a){return this.mul(a,a)},Red.prototype.sqrt=function(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);if(assert(mod3%2===1),mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1),s=0;while(!q.isZero()&&q.andln(1)===0)s++,q.iushrn(1);assert(!q.isZero());var one=new BN(1).toRed(this),nOne=one.redNeg(),lpow=this.m.subn(1).iushrn(1),z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0)z.redIAdd(nOne);var c=this.pow(z,q),r=this.pow(a,q.addn(1).iushrn(1)),t=this.pow(a,q),m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++)tmp=tmp.redSqr();assert(i<m);var b=this.pow(c,new BN(1).iushln(m-i-1));r=r.redMul(b),c=b.redSqr(),t=t.redMul(c),m=i}return r},Red.prototype.invm=function(a){var inv=a._invmp(this.m);if(inv.negative!==0)return inv.negative=0,this.imod(inv).redNeg();else return this.imod(inv)},Red.prototype.pow=function(a,num){if(num.isZero())return new BN(1).toRed(this);if(num.cmpn(1)===0)return a.clone();var windowSize=4,wnd=Array(1<<windowSize);wnd[0]=new BN(1).toRed(this),wnd[1]=a;for(var i=2;i<wnd.length;i++)wnd[i]=this.mul(wnd[i-1],a);var res=wnd[0],current=0,currentLen=0,start=num.bitLength()%26;if(start===0)start=26;for(i=num.length-1;i>=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0])res=this.sqr(res);if(bit===0&&current===0){currentLen=0;continue}if(current<<=1,current|=bit,currentLen++,currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]),currentLen=0,current=0}start=26}return res},Red.prototype.convertTo=function(num){var r=num.umod(this.m);return r===num?r.clone():r},Red.prototype.convertFrom=function(num){var res=num.clone();return res.red=null,res},BN.mont=function(num){return new Mont(num)};function Mont(m){if(Red.call(this,m),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new BN(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}inherits(Mont,Red),Mont.prototype.convertTo=function(num){return this.imod(num.ushln(this.shift))},Mont.prototype.convertFrom=function(num){var r=this.imod(num.mul(this.rinv));return r.red=null,r},Mont.prototype.imul=function(a,b){if(a.isZero()||b.isZero())return a.words[0]=0,a.length=1,a;var t=a.imul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.mul=function(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.invm=function(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(typeof module>\"u\"||module,exports)});var require_minimalistic_assert=__commonJS((exports,module)=>{module.exports=assert;function assert(val,msg){if(!val)throw Error(msg||\"Assertion failed\")}assert.equal=function(l,r,msg){if(l!=r)throw Error(msg||\"Assertion failed: \"+l+\" != \"+r)}});var require_utils=__commonJS((exports)=>{var utils=exports;function toArray(msg,enc){if(Array.isArray(msg))return msg.slice();if(!msg)return[];var res=[];if(typeof msg!==\"string\"){for(var i=0;i<msg.length;i++)res[i]=msg[i]|0;return res}if(enc===\"hex\"){if(msg=msg.replace(/[^a-z0-9]+/ig,\"\"),msg.length%2!==0)msg=\"0\"+msg;for(var i=0;i<msg.length;i+=2)res.push(parseInt(msg[i]+msg[i+1],16))}else for(var i=0;i<msg.length;i++){var c=msg.charCodeAt(i),hi=c>>8,lo=c&255;if(hi)res.push(hi,lo);else res.push(lo)}return res}utils.toArray=toArray;function zero2(word){if(word.length===1)return\"0\"+word;else return word}utils.zero2=zero2;function toHex(msg){var res=\"\";for(var i=0;i<msg.length;i++)res+=zero2(msg[i].toString(16));return res}utils.toHex=toHex;utils.encode=function(arr,enc){if(enc===\"hex\")return toHex(arr);else return arr}});var require_utils2=__commonJS((exports)=>{var utils=exports,BN=require_bn(),minAssert=require_minimalistic_assert(),minUtils=require_utils();utils.assert=minAssert;utils.toArray=minUtils.toArray;utils.zero2=minUtils.zero2;utils.toHex=minUtils.toHex;utils.encode=minUtils.encode;function getNAF(num,w,bits){var naf=Array(Math.max(num.bitLength(),bits)+1),i;for(i=0;i<naf.length;i+=1)naf[i]=0;var ws=1<<w+1,k=num.clone();for(i=0;i<naf.length;i++){var z,mod=k.andln(ws-1);if(k.isOdd()){if(mod>(ws>>1)-1)z=(ws>>1)-mod;else z=mod;k.isubn(z)}else z=0;naf[i]=z,k.iushrn(1)}return naf}utils.getNAF=getNAF;function getJSF(k1,k2){var jsf=[[],[]];k1=k1.clone(),k2=k2.clone();var d1=0,d2=0,m8;while(k1.cmpn(-d1)>0||k2.cmpn(-d2)>0){var m14=k1.andln(3)+d1&3,m24=k2.andln(3)+d2&3;if(m14===3)m14=-1;if(m24===3)m24=-1;var u1;if((m14&1)===0)u1=0;else if(m8=k1.andln(7)+d1&7,(m8===3||m8===5)&&m24===2)u1=-m14;else u1=m14;jsf[0].push(u1);var u2;if((m24&1)===0)u2=0;else if(m8=k2.andln(7)+d2&7,(m8===3||m8===5)&&m14===2)u2=-m24;else u2=m24;if(jsf[1].push(u2),2*d1===u1+1)d1=1-d1;if(2*d2===u2+1)d2=1-d2;k1.iushrn(1),k2.iushrn(1)}return jsf}utils.getJSF=getJSF;function cachedProperty(obj,name,computer){var key=\"_\"+name;obj.prototype[name]=function(){return this[key]!==void 0?this[key]:this[key]=computer.call(this)}}utils.cachedProperty=cachedProperty;function parseBytes(bytes){return typeof bytes===\"string\"?utils.toArray(bytes,\"hex\"):bytes}utils.parseBytes=parseBytes;function intFromLE(bytes){return new BN(bytes,\"hex\",\"le\")}utils.intFromLE=intFromLE});var require_brorand=__commonJS((exports,module)=>{var r;module.exports=function(len){if(!r)r=new Rand(null);return r.generate(len)};function Rand(rand){this.rand=rand}module.exports.Rand=Rand;Rand.prototype.generate=function(len){return this._rand(len)};Rand.prototype._rand=function(n){if(this.rand.getBytes)return this.rand.getBytes(n);var res=new Uint8Array(n);for(var i=0;i<res.length;i++)res[i]=this.rand.getByte();return res};if(typeof self===\"object\"){if(self.crypto&&self.crypto.getRandomValues)Rand.prototype._rand=function(n){var arr=new Uint8Array(n);return self.crypto.getRandomValues(arr),arr};else if(self.msCrypto&&self.msCrypto.getRandomValues)Rand.prototype._rand=function(n){var arr=new Uint8Array(n);return self.msCrypto.getRandomValues(arr),arr};else if(typeof window===\"object\")Rand.prototype._rand=function(){throw Error(\"Not implemented yet\")}}else try{if(crypto2=require(\"crypto\"),typeof crypto2.randomBytes!==\"function\")throw Error(\"Not supported\");Rand.prototype._rand=function(n){return crypto2.randomBytes(n)}}catch(e){}var crypto2});var require_base=__commonJS((exports,module)=>{var BN=require_bn(),utils=require_utils2(),getNAF=utils.getNAF,getJSF=utils.getJSF,assert=utils.assert;function BaseCurve(type,conf){this.type=type,this.p=new BN(conf.p,16),this.red=conf.prime?BN.red(conf.prime):BN.mont(this.p),this.zero=new BN(0).toRed(this.red),this.one=new BN(1).toRed(this.red),this.two=new BN(2).toRed(this.red),this.n=conf.n&&new BN(conf.n,16),this.g=conf.g&&this.pointFromJSON(conf.g,conf.gRed),this._wnafT1=[,,,,],this._wnafT2=[,,,,],this._wnafT3=[,,,,],this._wnafT4=[,,,,],this._bitLength=this.n?this.n.bitLength():0;var adjustCount=this.n&&this.p.div(this.n);if(!adjustCount||adjustCount.cmpn(100)>0)this.redN=null;else this._maxwellTrick=!0,this.redN=this.n.toRed(this.red)}module.exports=BaseCurve;BaseCurve.prototype.point=function(){throw Error(\"Not implemented\")};BaseCurve.prototype.validate=function(){throw Error(\"Not implemented\")};BaseCurve.prototype._fixedNafMul=function(p,k){assert(p.precomputed);var doubles=p._getDoubles(),naf=getNAF(k,1,this._bitLength),I=(1<<doubles.step+1)-(doubles.step%2===0?2:1);I/=3;var repr=[],j,nafW;for(j=0;j<naf.length;j+=doubles.step){nafW=0;for(var l=j+doubles.step-1;l>=j;l--)nafW=(nafW<<1)+naf[l];repr.push(nafW)}var a=this.jpoint(null,null,null),b=this.jpoint(null,null,null);for(var i=I;i>0;i--){for(j=0;j<repr.length;j++)if(nafW=repr[j],nafW===i)b=b.mixedAdd(doubles.points[j]);else if(nafW===-i)b=b.mixedAdd(doubles.points[j].neg());a=a.add(b)}return a.toP()};BaseCurve.prototype._wnafMul=function(p,k){var w=4,nafPoints=p._getNAFPoints(w);w=nafPoints.wnd;var wnd=nafPoints.points,naf=getNAF(k,w,this._bitLength),acc=this.jpoint(null,null,null);for(var i=naf.length-1;i>=0;i--){for(var l=0;i>=0&&naf[i]===0;i--)l++;if(i>=0)l++;if(acc=acc.dblp(l),i<0)break;var z=naf[i];if(assert(z!==0),p.type===\"affine\")if(z>0)acc=acc.mixedAdd(wnd[z-1>>1]);else acc=acc.mixedAdd(wnd[-z-1>>1].neg());else if(z>0)acc=acc.add(wnd[z-1>>1]);else acc=acc.add(wnd[-z-1>>1].neg())}return p.type===\"affine\"?acc.toP():acc};BaseCurve.prototype._wnafMulAdd=function(defW,points,coeffs,len,jacobianResult){var wndWidth=this._wnafT1,wnd=this._wnafT2,naf=this._wnafT3,max=0,i,j,p;for(i=0;i<len;i++){p=points[i];var nafPoints=p._getNAFPoints(defW);wndWidth[i]=nafPoints.wnd,wnd[i]=nafPoints.points}for(i=len-1;i>=1;i-=2){var a=i-1,b=i;if(wndWidth[a]!==1||wndWidth[b]!==1){naf[a]=getNAF(coeffs[a],wndWidth[a],this._bitLength),naf[b]=getNAF(coeffs[b],wndWidth[b],this._bitLength),max=Math.max(naf[a].length,max),max=Math.max(naf[b].length,max);continue}var comb=[points[a],null,null,points[b]];if(points[a].y.cmp(points[b].y)===0)comb[1]=points[a].add(points[b]),comb[2]=points[a].toJ().mixedAdd(points[b].neg());else if(points[a].y.cmp(points[b].y.redNeg())===0)comb[1]=points[a].toJ().mixedAdd(points[b]),comb[2]=points[a].add(points[b].neg());else comb[1]=points[a].toJ().mixedAdd(points[b]),comb[2]=points[a].toJ().mixedAdd(points[b].neg());var index=[-3,-1,-5,-7,0,7,5,1,3],jsf=getJSF(coeffs[a],coeffs[b]);max=Math.max(jsf[0].length,max),naf[a]=Array(max),naf[b]=Array(max);for(j=0;j<max;j++){var ja=jsf[0][j]|0,jb=jsf[1][j]|0;naf[a][j]=index[(ja+1)*3+(jb+1)],naf[b][j]=0,wnd[a]=comb}}var acc=this.jpoint(null,null,null),tmp=this._wnafT4;for(i=max;i>=0;i--){var k=0;while(i>=0){var zero=!0;for(j=0;j<len;j++)if(tmp[j]=naf[j][i]|0,tmp[j]!==0)zero=!1;if(!zero)break;k++,i--}if(i>=0)k++;if(acc=acc.dblp(k),i<0)break;for(j=0;j<len;j++){var z=tmp[j];if(z===0)continue;else if(z>0)p=wnd[j][z-1>>1];else if(z<0)p=wnd[j][-z-1>>1].neg();if(p.type===\"affine\")acc=acc.mixedAdd(p);else acc=acc.add(p)}}for(i=0;i<len;i++)wnd[i]=null;if(jacobianResult)return acc;else return acc.toP()};function BasePoint(curve,type){this.curve=curve,this.type=type,this.precomputed=null}BaseCurve.BasePoint=BasePoint;BasePoint.prototype.eq=function(){throw Error(\"Not implemented\")};BasePoint.prototype.validate=function(){return this.curve.validate(this)};BaseCurve.prototype.decodePoint=function(bytes,enc){bytes=utils.toArray(bytes,enc);var len=this.p.byteLength();if((bytes[0]===4||bytes[0]===6||bytes[0]===7)&&bytes.length-1===2*len){if(bytes[0]===6)assert(bytes[bytes.length-1]%2===0);else if(bytes[0]===7)assert(bytes[bytes.length-1]%2===1);var res=this.point(bytes.slice(1,1+len),bytes.slice(1+len,1+2*len));return res}else if((bytes[0]===2||bytes[0]===3)&&bytes.length-1===len)return this.pointFromX(bytes.slice(1,1+len),bytes[0]===3);throw Error(\"Unknown point format\")};BasePoint.prototype.encodeCompressed=function(enc){return this.encode(enc,!0)};BasePoint.prototype._encode=function(compact){var len=this.curve.p.byteLength(),x=this.getX().toArray(\"be\",len);if(compact)return[this.getY().isEven()?2:3].concat(x);return[4].concat(x,this.getY().toArray(\"be\",len))};BasePoint.prototype.encode=function(enc,compact){return utils.encode(this._encode(compact),enc)};BasePoint.prototype.precompute=function(power){if(this.precomputed)return this;var precomputed={doubles:null,naf:null,beta:null};return precomputed.naf=this._getNAFPoints(8),precomputed.doubles=this._getDoubles(4,power),precomputed.beta=this._getBeta(),this.precomputed=precomputed,this};BasePoint.prototype._hasDoubles=function(k){if(!this.precomputed)return!1;var doubles=this.precomputed.doubles;if(!doubles)return!1;return doubles.points.length>=Math.ceil((k.bitLength()+1)/doubles.step)};BasePoint.prototype._getDoubles=function(step,power){if(this.precomputed&&this.precomputed.doubles)return this.precomputed.doubles;var doubles=[this],acc=this;for(var i=0;i<power;i+=step){for(var j=0;j<step;j++)acc=acc.dbl();doubles.push(acc)}return{step,points:doubles}};BasePoint.prototype._getNAFPoints=function(wnd){if(this.precomputed&&this.precomputed.naf)return this.precomputed.naf;var res=[this],max=(1<<wnd)-1,dbl=max===1?null:this.dbl();for(var i=1;i<max;i++)res[i]=res[i-1].add(dbl);return{wnd,points:res}};BasePoint.prototype._getBeta=function(){return null};BasePoint.prototype.dblp=function(k){var r=this;for(var i=0;i<k;i++)r=r.dbl();return r}});var require_inherits_browser=__commonJS((exports,module)=>{if(typeof Object.create===\"function\")module.exports=function(ctor,superCtor){if(superCtor)ctor.super_=superCtor,ctor.prototype=Object.create(superCtor.prototype,{constructor:{value:ctor,enumerable:!1,writable:!0,configurable:!0}})};else module.exports=function(ctor,superCtor){if(superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype,ctor.prototype=new TempCtor,ctor.prototype.constructor=ctor}}});var require_inherits=__commonJS((exports,module)=>{try{if(util=require(\"util\"),typeof util.inherits!==\"function\")throw\"\";module.exports=util.inherits}catch(e){module.exports=require_inherits_browser()}var util});var require_short=__commonJS((exports,module)=>{var utils=require_utils2(),BN=require_bn(),inherits=require_inherits(),Base=require_base(),assert=utils.assert;function ShortCurve(conf){Base.call(this,\"short\",conf),this.a=new BN(conf.a,16).toRed(this.red),this.b=new BN(conf.b,16).toRed(this.red),this.tinv=this.two.redInvm(),this.zeroA=this.a.fromRed().cmpn(0)===0,this.threeA=this.a.fromRed().sub(this.p).cmpn(-3)===0,this.endo=this._getEndomorphism(conf),this._endoWnafT1=[,,,,],this._endoWnafT2=[,,,,]}inherits(ShortCurve,Base);module.exports=ShortCurve;ShortCurve.prototype._getEndomorphism=function(conf){if(!this.zeroA||!this.g||!this.n||this.p.modn(3)!==1)return;var beta,lambda;if(conf.beta)beta=new BN(conf.beta,16).toRed(this.red);else{var betas=this._getEndoRoots(this.p);beta=betas[0].cmp(betas[1])<0?betas[0]:betas[1],beta=beta.toRed(this.red)}if(conf.lambda)lambda=new BN(conf.lambda,16);else{var lambdas=this._getEndoRoots(this.n);if(this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta))===0)lambda=lambdas[0];else lambda=lambdas[1],assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta))===0)}var basis;if(conf.basis)basis=conf.basis.map(function(vec){return{a:new BN(vec.a,16),b:new BN(vec.b,16)}});else basis=this._getEndoBasis(lambda);return{beta,lambda,basis}};ShortCurve.prototype._getEndoRoots=function(num){var red=num===this.p?this.red:BN.mont(num),tinv=new BN(2).toRed(red).redInvm(),ntinv=tinv.redNeg(),s=new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv),l1=ntinv.redAdd(s).fromRed(),l2=ntinv.redSub(s).fromRed();return[l1,l2]};ShortCurve.prototype._getEndoBasis=function(lambda){var aprxSqrt=this.n.ushrn(Math.floor(this.n.bitLength()/2)),u=lambda,v=this.n.clone(),x1=new BN(1),y1=new BN(0),x2=new BN(0),y2=new BN(1),a0,b0,a1,b1,a2,b2,prevR,i=0,r,x;while(u.cmpn(0)!==0){var q=v.div(u);r=v.sub(q.mul(u)),x=x2.sub(q.mul(x1));var y=y2.sub(q.mul(y1));if(!a1&&r.cmp(aprxSqrt)<0)a0=prevR.neg(),b0=x1,a1=r.neg(),b1=x;else if(a1&&++i===2)break;prevR=r,v=u,u=r,x2=x1,x1=x,y2=y1,y1=y}a2=r.neg(),b2=x;var len1=a1.sqr().add(b1.sqr()),len2=a2.sqr().add(b2.sqr());if(len2.cmp(len1)>=0)a2=a0,b2=b0;if(a1.negative)a1=a1.neg(),b1=b1.neg();if(a2.negative)a2=a2.neg(),b2=b2.neg();return[{a:a1,b:b1},{a:a2,b:b2}]};ShortCurve.prototype._endoSplit=function(k){var basis=this.endo.basis,v1=basis[0],v2=basis[1],c1=v2.b.mul(k).divRound(this.n),c2=v1.b.neg().mul(k).divRound(this.n),p1=c1.mul(v1.a),p2=c2.mul(v2.a),q1=c1.mul(v1.b),q2=c2.mul(v2.b),k1=k.sub(p1).sub(p2),k2=q1.add(q2).neg();return{k1,k2}};ShortCurve.prototype.pointFromX=function(x,odd){if(x=new BN(x,16),!x.red)x=x.toRed(this.red);var y2=x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b),y=y2.redSqrt();if(y.redSqr().redSub(y2).cmp(this.zero)!==0)throw Error(\"invalid point\");var isOdd=y.fromRed().isOdd();if(odd&&!isOdd||!odd&&isOdd)y=y.redNeg();return this.point(x,y)};ShortCurve.prototype.validate=function(point){if(point.inf)return!0;var{x,y}=point,ax=this.a.redMul(x),rhs=x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);return y.redSqr().redISub(rhs).cmpn(0)===0};ShortCurve.prototype._endoWnafMulAdd=function(points,coeffs,jacobianResult){var npoints=this._endoWnafT1,ncoeffs=this._endoWnafT2;for(var i=0;i<points.length;i++){var split=this._endoSplit(coeffs[i]),p=points[i],beta=p._getBeta();if(split.k1.negative)split.k1.ineg(),p=p.neg(!0);if(split.k2.negative)split.k2.ineg(),beta=beta.neg(!0);npoints[i*2]=p,npoints[i*2+1]=beta,ncoeffs[i*2]=split.k1,ncoeffs[i*2+1]=split.k2}var res=this._wnafMulAdd(1,npoints,ncoeffs,i*2,jacobianResult);for(var j=0;j<i*2;j++)npoints[j]=null,ncoeffs[j]=null;return res};function Point(curve,x,y,isRed){if(Base.BasePoint.call(this,curve,\"affine\"),x===null&&y===null)this.x=null,this.y=null,this.inf=!0;else{if(this.x=new BN(x,16),this.y=new BN(y,16),isRed)this.x.forceRed(this.curve.red),this.y.forceRed(this.curve.red);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);this.inf=!1}}inherits(Point,Base.BasePoint);ShortCurve.prototype.point=function(x,y,isRed){return new Point(this,x,y,isRed)};ShortCurve.prototype.pointFromJSON=function(obj,red){return Point.fromJSON(this,obj,red)};Point.prototype._getBeta=function(){if(!this.curve.endo)return;var pre=this.precomputed;if(pre&&pre.beta)return pre.beta;var beta=this.curve.point(this.x.redMul(this.curve.endo.beta),this.y);if(pre){var curve=this.curve,endoMul=function(p){return curve.point(p.x.redMul(curve.endo.beta),p.y)};pre.beta=beta,beta.precomputed={beta:null,naf:pre.naf&&{wnd:pre.naf.wnd,points:pre.naf.points.map(endoMul)},doubles:pre.doubles&&{step:pre.doubles.step,points:pre.doubles.points.map(endoMul)}}}return beta};Point.prototype.toJSON=function(){if(!this.precomputed)return[this.x,this.y];return[this.x,this.y,this.precomputed&&{doubles:this.precomputed.doubles&&{step:this.precomputed.doubles.step,points:this.precomputed.doubles.points.slice(1)},naf:this.precomputed.naf&&{wnd:this.precomputed.naf.wnd,points:this.precomputed.naf.points.slice(1)}}]};Point.fromJSON=function(curve,obj,red){if(typeof obj===\"string\")obj=JSON.parse(obj);var res=curve.point(obj[0],obj[1],red);if(!obj[2])return res;function obj2point(obj2){return curve.point(obj2[0],obj2[1],red)}var pre=obj[2];return res.precomputed={beta:null,doubles:pre.doubles&&{step:pre.doubles.step,points:[res].concat(pre.doubles.points.map(obj2point))},naf:pre.naf&&{wnd:pre.naf.wnd,points:[res].concat(pre.naf.points.map(obj2point))}},res};Point.prototype.inspect=function(){if(this.isInfinity())return\"<EC Point Infinity>\";return\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\">\"};Point.prototype.isInfinity=function(){return this.inf};Point.prototype.add=function(p){if(this.inf)return p;if(p.inf)return this;if(this.eq(p))return this.dbl();if(this.neg().eq(p))return this.curve.point(null,null);if(this.x.cmp(p.x)===0)return this.curve.point(null,null);var c=this.y.redSub(p.y);if(c.cmpn(0)!==0)c=c.redMul(this.x.redSub(p.x).redInvm());var nx=c.redSqr().redISub(this.x).redISub(p.x),ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.dbl=function(){if(this.inf)return this;var ys1=this.y.redAdd(this.y);if(ys1.cmpn(0)===0)return this.curve.point(null,null);var a=this.curve.a,x2=this.x.redSqr(),dyinv=ys1.redInvm(),c=x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv),nx=c.redSqr().redISub(this.x.redAdd(this.x)),ny=c.redMul(this.x.redSub(nx)).redISub(this.y);return this.curve.point(nx,ny)};Point.prototype.getX=function(){return this.x.fromRed()};Point.prototype.getY=function(){return this.y.fromRed()};Point.prototype.mul=function(k){if(k=new BN(k,16),this.isInfinity())return this;else if(this._hasDoubles(k))return this.curve._fixedNafMul(this,k);else if(this.curve.endo)return this.curve._endoWnafMulAdd([this],[k]);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function(k1,p2,k2){var points=[this,p2],coeffs=[k1,k2];if(this.curve.endo)return this.curve._endoWnafMulAdd(points,coeffs);else return this.curve._wnafMulAdd(1,points,coeffs,2)};Point.prototype.jmulAdd=function(k1,p2,k2){var points=[this,p2],coeffs=[k1,k2];if(this.curve.endo)return this.curve._endoWnafMulAdd(points,coeffs,!0);else return this.curve._wnafMulAdd(1,points,coeffs,2,!0)};Point.prototype.eq=function(p){return this===p||this.inf===p.inf&&(this.inf||this.x.cmp(p.x)===0&&this.y.cmp(p.y)===0)};Point.prototype.neg=function(_precompute){if(this.inf)return this;var res=this.curve.point(this.x,this.y.redNeg());if(_precompute&&this.precomputed){var pre=this.precomputed,negate=function(p){return p.neg()};res.precomputed={naf:pre.naf&&{wnd:pre.naf.wnd,points:pre.naf.points.map(negate)},doubles:pre.doubles&&{step:pre.doubles.step,points:pre.doubles.points.map(negate)}}}return res};Point.prototype.toJ=function(){if(this.inf)return this.curve.jpoint(null,null,null);var res=this.curve.jpoint(this.x,this.y,this.curve.one);return res};function JPoint(curve,x,y,z){if(Base.BasePoint.call(this,curve,\"jacobian\"),x===null&&y===null&&z===null)this.x=this.curve.one,this.y=this.curve.one,this.z=new BN(0);else this.x=new BN(x,16),this.y=new BN(y,16),this.z=new BN(z,16);if(!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);this.zOne=this.z===this.curve.one}inherits(JPoint,Base.BasePoint);ShortCurve.prototype.jpoint=function(x,y,z){return new JPoint(this,x,y,z)};JPoint.prototype.toP=function(){if(this.isInfinity())return this.curve.point(null,null);var zinv=this.z.redInvm(),zinv2=zinv.redSqr(),ax=this.x.redMul(zinv2),ay=this.y.redMul(zinv2).redMul(zinv);return this.curve.point(ax,ay)};JPoint.prototype.neg=function(){return this.curve.jpoint(this.x,this.y.redNeg(),this.z)};JPoint.prototype.add=function(p){if(this.isInfinity())return p;if(p.isInfinity())return this;var pz2=p.z.redSqr(),z2=this.z.redSqr(),u1=this.x.redMul(pz2),u2=p.x.redMul(z2),s1=this.y.redMul(pz2.redMul(p.z)),s2=p.y.redMul(z2.redMul(this.z)),h=u1.redSub(u2),r=s1.redSub(s2);if(h.cmpn(0)===0)if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl();var h2=h.redSqr(),h3=h2.redMul(h),v=u1.redMul(h2),nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v),ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)),nz=this.z.redMul(p.z).redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.mixedAdd=function(p){if(this.isInfinity())return p.toJ();if(p.isInfinity())return this;var z2=this.z.redSqr(),u1=this.x,u2=p.x.redMul(z2),s1=this.y,s2=p.y.redMul(z2).redMul(this.z),h=u1.redSub(u2),r=s1.redSub(s2);if(h.cmpn(0)===0)if(r.cmpn(0)!==0)return this.curve.jpoint(null,null,null);else return this.dbl();var h2=h.redSqr(),h3=h2.redMul(h),v=u1.redMul(h2),nx=r.redSqr().redIAdd(h3).redISub(v).redISub(v),ny=r.redMul(v.redISub(nx)).redISub(s1.redMul(h3)),nz=this.z.redMul(h);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.dblp=function(pow){if(pow===0)return this;if(this.isInfinity())return this;if(!pow)return this.dbl();var i;if(this.curve.zeroA||this.curve.threeA){var r=this;for(i=0;i<pow;i++)r=r.dbl();return r}var a=this.curve.a,tinv=this.curve.tinv,jx=this.x,jy=this.y,jz=this.z,jz4=jz.redSqr().redSqr(),jyd=jy.redAdd(jy);for(i=0;i<pow;i++){var jx2=jx.redSqr(),jyd2=jyd.redSqr(),jyd4=jyd2.redSqr(),c=jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)),t1=jx.redMul(jyd2),nx=c.redSqr().redISub(t1.redAdd(t1)),t2=t1.redISub(nx),dny=c.redMul(t2);dny=dny.redIAdd(dny).redISub(jyd4);var nz=jyd.redMul(jz);if(i+1<pow)jz4=jz4.redMul(jyd4);jx=nx,jz=nz,jyd=dny}return this.curve.jpoint(jx,jyd.redMul(tinv),jz)};JPoint.prototype.dbl=function(){if(this.isInfinity())return this;if(this.curve.zeroA)return this._zeroDbl();else if(this.curve.threeA)return this._threeDbl();else return this._dbl()};JPoint.prototype._zeroDbl=function(){var nx,ny,nz;if(this.zOne){var xx=this.x.redSqr(),yy=this.y.redSqr(),yyyy=yy.redSqr(),s=this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);s=s.redIAdd(s);var m=xx.redAdd(xx).redIAdd(xx),t=m.redSqr().redISub(s).redISub(s),yyyy8=yyyy.redIAdd(yyyy);yyyy8=yyyy8.redIAdd(yyyy8),yyyy8=yyyy8.redIAdd(yyyy8),nx=t,ny=m.redMul(s.redISub(t)).redISub(yyyy8),nz=this.y.redAdd(this.y)}else{var a=this.x.redSqr(),b=this.y.redSqr(),c=b.redSqr(),d=this.x.redAdd(b).redSqr().redISub(a).redISub(c);d=d.redIAdd(d);var e=a.redAdd(a).redIAdd(a),f=e.redSqr(),c8=c.redIAdd(c);c8=c8.redIAdd(c8),c8=c8.redIAdd(c8),nx=f.redISub(d).redISub(d),ny=e.redMul(d.redISub(nx)).redISub(c8),nz=this.y.redMul(this.z),nz=nz.redIAdd(nz)}return this.curve.jpoint(nx,ny,nz)};JPoint.prototype._threeDbl=function(){var nx,ny,nz;if(this.zOne){var xx=this.x.redSqr(),yy=this.y.redSqr(),yyyy=yy.redSqr(),s=this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);s=s.redIAdd(s);var m=xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a),t=m.redSqr().redISub(s).redISub(s);nx=t;var yyyy8=yyyy.redIAdd(yyyy);yyyy8=yyyy8.redIAdd(yyyy8),yyyy8=yyyy8.redIAdd(yyyy8),ny=m.redMul(s.redISub(t)).redISub(yyyy8),nz=this.y.redAdd(this.y)}else{var delta=this.z.redSqr(),gamma=this.y.redSqr(),beta=this.x.redMul(gamma),alpha=this.x.redSub(delta).redMul(this.x.redAdd(delta));alpha=alpha.redAdd(alpha).redIAdd(alpha);var beta4=beta.redIAdd(beta);beta4=beta4.redIAdd(beta4);var beta8=beta4.redAdd(beta4);nx=alpha.redSqr().redISub(beta8),nz=this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);var ggamma8=gamma.redSqr();ggamma8=ggamma8.redIAdd(ggamma8),ggamma8=ggamma8.redIAdd(ggamma8),ggamma8=ggamma8.redIAdd(ggamma8),ny=alpha.redMul(beta4.redISub(nx)).redISub(ggamma8)}return this.curve.jpoint(nx,ny,nz)};JPoint.prototype._dbl=function(){var a=this.curve.a,jx=this.x,jy=this.y,jz=this.z,jz4=jz.redSqr().redSqr(),jx2=jx.redSqr(),jy2=jy.redSqr(),c=jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4)),jxd4=jx.redAdd(jx);jxd4=jxd4.redIAdd(jxd4);var t1=jxd4.redMul(jy2),nx=c.redSqr().redISub(t1.redAdd(t1)),t2=t1.redISub(nx),jyd8=jy2.redSqr();jyd8=jyd8.redIAdd(jyd8),jyd8=jyd8.redIAdd(jyd8),jyd8=jyd8.redIAdd(jyd8);var ny=c.redMul(t2).redISub(jyd8),nz=jy.redAdd(jy).redMul(jz);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.trpl=function(){if(!this.curve.zeroA)return this.dbl().add(this);var xx=this.x.redSqr(),yy=this.y.redSqr(),zz=this.z.redSqr(),yyyy=yy.redSqr(),m=xx.redAdd(xx).redIAdd(xx),mm=m.redSqr(),e=this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);e=e.redIAdd(e),e=e.redAdd(e).redIAdd(e),e=e.redISub(mm);var ee=e.redSqr(),t=yyyy.redIAdd(yyyy);t=t.redIAdd(t),t=t.redIAdd(t),t=t.redIAdd(t);var u=m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t),yyu4=yy.redMul(u);yyu4=yyu4.redIAdd(yyu4),yyu4=yyu4.redIAdd(yyu4);var nx=this.x.redMul(ee).redISub(yyu4);nx=nx.redIAdd(nx),nx=nx.redIAdd(nx);var ny=this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));ny=ny.redIAdd(ny),ny=ny.redIAdd(ny),ny=ny.redIAdd(ny);var nz=this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);return this.curve.jpoint(nx,ny,nz)};JPoint.prototype.mul=function(k,kbase){return k=new BN(k,kbase),this.curve._wnafMul(this,k)};JPoint.prototype.eq=function(p){if(p.type===\"affine\")return this.eq(p.toJ());if(this===p)return!0;var z2=this.z.redSqr(),pz2=p.z.redSqr();if(this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0)!==0)return!1;var z3=z2.redMul(this.z),pz3=pz2.redMul(p.z);return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0)===0};JPoint.prototype.eqXToP=function(x){var zs=this.z.redSqr(),rx=x.toRed(this.curve.red).redMul(zs);if(this.x.cmp(rx)===0)return!0;var xc=x.clone(),t=this.curve.redN.redMul(zs);for(;;){if(xc.iadd(this.curve.n),xc.cmp(this.curve.p)>=0)return!1;if(rx.redIAdd(t),this.x.cmp(rx)===0)return!0}};JPoint.prototype.inspect=function(){if(this.isInfinity())return\"<EC JPoint Infinity>\";return\"<EC JPoint x: \"+this.x.toString(16,2)+\" y: \"+this.y.toString(16,2)+\" z: \"+this.z.toString(16,2)+\">\"};JPoint.prototype.isInfinity=function(){return this.z.cmpn(0)===0}});var require_mont=__commonJS((exports,module)=>{var BN=require_bn(),inherits=require_inherits(),Base=require_base(),utils=require_utils2();function MontCurve(conf){Base.call(this,\"mont\",conf),this.a=new BN(conf.a,16).toRed(this.red),this.b=new BN(conf.b,16).toRed(this.red),this.i4=new BN(4).toRed(this.red).redInvm(),this.two=new BN(2).toRed(this.red),this.a24=this.i4.redMul(this.a.redAdd(this.two))}inherits(MontCurve,Base);module.exports=MontCurve;MontCurve.prototype.validate=function(point){var x=point.normalize().x,x2=x.redSqr(),rhs=x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x),y=rhs.redSqrt();return y.redSqr().cmp(rhs)===0};function Point(curve,x,z){if(Base.BasePoint.call(this,curve,\"projective\"),x===null&&z===null)this.x=this.curve.one,this.z=this.curve.zero;else{if(this.x=new BN(x,16),this.z=new BN(z,16),!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red)}}inherits(Point,Base.BasePoint);MontCurve.prototype.decodePoint=function(bytes,enc){return this.point(utils.toArray(bytes,enc),1)};MontCurve.prototype.point=function(x,z){return new Point(this,x,z)};MontCurve.prototype.pointFromJSON=function(obj){return Point.fromJSON(this,obj)};Point.prototype.precompute=function(){};Point.prototype._encode=function(){return this.getX().toArray(\"be\",this.curve.p.byteLength())};Point.fromJSON=function(curve,obj){return new Point(curve,obj[0],obj[1]||curve.one)};Point.prototype.inspect=function(){if(this.isInfinity())return\"<EC Point Infinity>\";return\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"};Point.prototype.isInfinity=function(){return this.z.cmpn(0)===0};Point.prototype.dbl=function(){var a=this.x.redAdd(this.z),aa=a.redSqr(),b=this.x.redSub(this.z),bb=b.redSqr(),c=aa.redSub(bb),nx=aa.redMul(bb),nz=c.redMul(bb.redAdd(this.curve.a24.redMul(c)));return this.curve.point(nx,nz)};Point.prototype.add=function(){throw Error(\"Not supported on Montgomery curve\")};Point.prototype.diffAdd=function(p,diff){var a=this.x.redAdd(this.z),b=this.x.redSub(this.z),c=p.x.redAdd(p.z),d=p.x.redSub(p.z),da=d.redMul(a),cb=c.redMul(b),nx=diff.z.redMul(da.redAdd(cb).redSqr()),nz=diff.x.redMul(da.redISub(cb).redSqr());return this.curve.point(nx,nz)};Point.prototype.mul=function(k){var t=k.clone(),a=this,b=this.curve.point(null,null),c=this;for(var bits=[];t.cmpn(0)!==0;t.iushrn(1))bits.push(t.andln(1));for(var i=bits.length-1;i>=0;i--)if(bits[i]===0)a=a.diffAdd(b,c),b=b.dbl();else b=a.diffAdd(b,c),a=a.dbl();return b};Point.prototype.mulAdd=function(){throw Error(\"Not supported on Montgomery curve\")};Point.prototype.jumlAdd=function(){throw Error(\"Not supported on Montgomery curve\")};Point.prototype.eq=function(other){return this.getX().cmp(other.getX())===0};Point.prototype.normalize=function(){return this.x=this.x.redMul(this.z.redInvm()),this.z=this.curve.one,this};Point.prototype.getX=function(){return this.normalize(),this.x.fromRed()}});var require_edwards=__commonJS((exports,module)=>{var utils=require_utils2(),BN=require_bn(),inherits=require_inherits(),Base=require_base(),assert=utils.assert;function EdwardsCurve(conf){this.twisted=(conf.a|0)!==1,this.mOneA=this.twisted&&(conf.a|0)===-1,this.extended=this.mOneA,Base.call(this,\"edwards\",conf),this.a=new BN(conf.a,16).umod(this.red.m),this.a=this.a.toRed(this.red),this.c=new BN(conf.c,16).toRed(this.red),this.c2=this.c.redSqr(),this.d=new BN(conf.d,16).toRed(this.red),this.dd=this.d.redAdd(this.d),assert(!this.twisted||this.c.fromRed().cmpn(1)===0),this.oneC=(conf.c|0)===1}inherits(EdwardsCurve,Base);module.exports=EdwardsCurve;EdwardsCurve.prototype._mulA=function(num){if(this.mOneA)return num.redNeg();else return this.a.redMul(num)};EdwardsCurve.prototype._mulC=function(num){if(this.oneC)return num;else return this.c.redMul(num)};EdwardsCurve.prototype.jpoint=function(x,y,z,t){return this.point(x,y,z,t)};EdwardsCurve.prototype.pointFromX=function(x,odd){if(x=new BN(x,16),!x.red)x=x.toRed(this.red);var x2=x.redSqr(),rhs=this.c2.redSub(this.a.redMul(x2)),lhs=this.one.redSub(this.c2.redMul(this.d).redMul(x2)),y2=rhs.redMul(lhs.redInvm()),y=y2.redSqrt();if(y.redSqr().redSub(y2).cmp(this.zero)!==0)throw Error(\"invalid point\");var isOdd=y.fromRed().isOdd();if(odd&&!isOdd||!odd&&isOdd)y=y.redNeg();return this.point(x,y)};EdwardsCurve.prototype.pointFromY=function(y,odd){if(y=new BN(y,16),!y.red)y=y.toRed(this.red);var y2=y.redSqr(),lhs=y2.redSub(this.c2),rhs=y2.redMul(this.d).redMul(this.c2).redSub(this.a),x2=lhs.redMul(rhs.redInvm());if(x2.cmp(this.zero)===0)if(odd)throw Error(\"invalid point\");else return this.point(this.zero,y);var x=x2.redSqrt();if(x.redSqr().redSub(x2).cmp(this.zero)!==0)throw Error(\"invalid point\");if(x.fromRed().isOdd()!==odd)x=x.redNeg();return this.point(x,y)};EdwardsCurve.prototype.validate=function(point){if(point.isInfinity())return!0;point.normalize();var x2=point.x.redSqr(),y2=point.y.redSqr(),lhs=x2.redMul(this.a).redAdd(y2),rhs=this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));return lhs.cmp(rhs)===0};function Point(curve,x,y,z,t){if(Base.BasePoint.call(this,curve,\"projective\"),x===null&&y===null&&z===null)this.x=this.curve.zero,this.y=this.curve.one,this.z=this.curve.one,this.t=this.curve.zero,this.zOne=!0;else{if(this.x=new BN(x,16),this.y=new BN(y,16),this.z=z?new BN(z,16):this.curve.one,this.t=t&&new BN(t,16),!this.x.red)this.x=this.x.toRed(this.curve.red);if(!this.y.red)this.y=this.y.toRed(this.curve.red);if(!this.z.red)this.z=this.z.toRed(this.curve.red);if(this.t&&!this.t.red)this.t=this.t.toRed(this.curve.red);if(this.zOne=this.z===this.curve.one,this.curve.extended&&!this.t){if(this.t=this.x.redMul(this.y),!this.zOne)this.t=this.t.redMul(this.z.redInvm())}}}inherits(Point,Base.BasePoint);EdwardsCurve.prototype.pointFromJSON=function(obj){return Point.fromJSON(this,obj)};EdwardsCurve.prototype.point=function(x,y,z,t){return new Point(this,x,y,z,t)};Point.fromJSON=function(curve,obj){return new Point(curve,obj[0],obj[1],obj[2])};Point.prototype.inspect=function(){if(this.isInfinity())return\"<EC Point Infinity>\";return\"<EC Point x: \"+this.x.fromRed().toString(16,2)+\" y: \"+this.y.fromRed().toString(16,2)+\" z: \"+this.z.fromRed().toString(16,2)+\">\"};Point.prototype.isInfinity=function(){return this.x.cmpn(0)===0&&(this.y.cmp(this.z)===0||this.zOne&&this.y.cmp(this.curve.c)===0)};Point.prototype._extDbl=function(){var a=this.x.redSqr(),b=this.y.redSqr(),c=this.z.redSqr();c=c.redIAdd(c);var d=this.curve._mulA(a),e=this.x.redAdd(this.y).redSqr().redISub(a).redISub(b),g=d.redAdd(b),f=g.redSub(c),h=d.redSub(b),nx=e.redMul(f),ny=g.redMul(h),nt=e.redMul(h),nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projDbl=function(){var b=this.x.redAdd(this.y).redSqr(),c=this.x.redSqr(),d=this.y.redSqr(),nx,ny,nz,e,h,j;if(this.curve.twisted){e=this.curve._mulA(c);var f=e.redAdd(d);if(this.zOne)nx=b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two)),ny=f.redMul(e.redSub(d)),nz=f.redSqr().redSub(f).redSub(f);else h=this.z.redSqr(),j=f.redSub(h).redISub(h),nx=b.redSub(c).redISub(d).redMul(j),ny=f.redMul(e.redSub(d)),nz=f.redMul(j)}else e=c.redAdd(d),h=this.curve._mulC(this.z).redSqr(),j=e.redSub(h).redSub(h),nx=this.curve._mulC(b.redISub(e)).redMul(j),ny=this.curve._mulC(e).redMul(c.redISub(d)),nz=e.redMul(j);return this.curve.point(nx,ny,nz)};Point.prototype.dbl=function(){if(this.isInfinity())return this;if(this.curve.extended)return this._extDbl();else return this._projDbl()};Point.prototype._extAdd=function(p){var a=this.y.redSub(this.x).redMul(p.y.redSub(p.x)),b=this.y.redAdd(this.x).redMul(p.y.redAdd(p.x)),c=this.t.redMul(this.curve.dd).redMul(p.t),d=this.z.redMul(p.z.redAdd(p.z)),e=b.redSub(a),f=d.redSub(c),g=d.redAdd(c),h=b.redAdd(a),nx=e.redMul(f),ny=g.redMul(h),nt=e.redMul(h),nz=f.redMul(g);return this.curve.point(nx,ny,nz,nt)};Point.prototype._projAdd=function(p){var a=this.z.redMul(p.z),b=a.redSqr(),c=this.x.redMul(p.x),d=this.y.redMul(p.y),e=this.curve.d.redMul(c).redMul(d),f=b.redSub(e),g=b.redAdd(e),tmp=this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d),nx=a.redMul(f).redMul(tmp),ny,nz;if(this.curve.twisted)ny=a.redMul(g).redMul(d.redSub(this.curve._mulA(c))),nz=f.redMul(g);else ny=a.redMul(g).redMul(d.redSub(c)),nz=this.curve._mulC(f).redMul(g);return this.curve.point(nx,ny,nz)};Point.prototype.add=function(p){if(this.isInfinity())return p;if(p.isInfinity())return this;if(this.curve.extended)return this._extAdd(p);else return this._projAdd(p)};Point.prototype.mul=function(k){if(this._hasDoubles(k))return this.curve._fixedNafMul(this,k);else return this.curve._wnafMul(this,k)};Point.prototype.mulAdd=function(k1,p,k2){return this.curve._wnafMulAdd(1,[this,p],[k1,k2],2,!1)};Point.prototype.jmulAdd=function(k1,p,k2){return this.curve._wnafMulAdd(1,[this,p],[k1,k2],2,!0)};Point.prototype.normalize=function(){if(this.zOne)return this;var zi=this.z.redInvm();if(this.x=this.x.redMul(zi),this.y=this.y.redMul(zi),this.t)this.t=this.t.redMul(zi);return this.z=this.curve.one,this.zOne=!0,this};Point.prototype.neg=function(){return this.curve.point(this.x.redNeg(),this.y,this.z,this.t&&this.t.redNeg())};Point.prototype.getX=function(){return this.normalize(),this.x.fromRed()};Point.prototype.getY=function(){return this.normalize(),this.y.fromRed()};Point.prototype.eq=function(other){return this===other||this.getX().cmp(other.getX())===0&&this.getY().cmp(other.getY())===0};Point.prototype.eqXToP=function(x){var rx=x.toRed(this.curve.red).redMul(this.z);if(this.x.cmp(rx)===0)return!0;var xc=x.clone(),t=this.curve.redN.redMul(this.z);for(;;){if(xc.iadd(this.curve.n),xc.cmp(this.curve.p)>=0)return!1;if(rx.redIAdd(t),this.x.cmp(rx)===0)return!0}};Point.prototype.toP=Point.prototype.normalize;Point.prototype.mixedAdd=Point.prototype.add});var require_curve=__commonJS((exports)=>{var curve=exports;curve.base=require_base();curve.short=require_short();curve.mont=require_mont();curve.edwards=require_edwards()});var require_utils3=__commonJS((exports)=>{var assert=require_minimalistic_assert(),inherits=require_inherits();exports.inherits=inherits;function isSurrogatePair(msg,i){if((msg.charCodeAt(i)&64512)!==55296)return!1;if(i<0||i+1>=msg.length)return!1;return(msg.charCodeAt(i+1)&64512)===56320}function toArray(msg,enc){if(Array.isArray(msg))return msg.slice();if(!msg)return[];var res=[];if(typeof msg===\"string\"){if(!enc){var p=0;for(var i=0;i<msg.length;i++){var c=msg.charCodeAt(i);if(c<128)res[p++]=c;else if(c<2048)res[p++]=c>>6|192,res[p++]=c&63|128;else if(isSurrogatePair(msg,i))c=65536+((c&1023)<<10)+(msg.charCodeAt(++i)&1023),res[p++]=c>>18|240,res[p++]=c>>12&63|128,res[p++]=c>>6&63|128,res[p++]=c&63|128;else res[p++]=c>>12|224,res[p++]=c>>6&63|128,res[p++]=c&63|128}}else if(enc===\"hex\"){if(msg=msg.replace(/[^a-z0-9]+/ig,\"\"),msg.length%2!==0)msg=\"0\"+msg;for(i=0;i<msg.length;i+=2)res.push(parseInt(msg[i]+msg[i+1],16))}}else for(i=0;i<msg.length;i++)res[i]=msg[i]|0;return res}exports.toArray=toArray;function toHex(msg){var res=\"\";for(var i=0;i<msg.length;i++)res+=zero2(msg[i].toString(16));return res}exports.toHex=toHex;function htonl(w){var res=w>>>24|w>>>8&65280|w<<8&16711680|(w&255)<<24;return res>>>0}exports.htonl=htonl;function toHex32(msg,endian){var res=\"\";for(var i=0;i<msg.length;i++){var w=msg[i];if(endian===\"little\")w=htonl(w);res+=zero8(w.toString(16))}return res}exports.toHex32=toHex32;function zero2(word){if(word.length===1)return\"0\"+word;else return word}exports.zero2=zero2;function zero8(word){if(word.length===7)return\"0\"+word;else if(word.length===6)return\"00\"+word;else if(word.length===5)return\"000\"+word;else if(word.length===4)return\"0000\"+word;else if(word.length===3)return\"00000\"+word;else if(word.length===2)return\"000000\"+word;else if(word.length===1)return\"0000000\"+word;else return word}exports.zero8=zero8;function join32(msg,start,end,endian){var len=end-start;assert(len%4===0);var res=Array(len/4);for(var i=0,k=start;i<res.length;i++,k+=4){var w;if(endian===\"big\")w=msg[k]<<24|msg[k+1]<<16|msg[k+2]<<8|msg[k+3];else w=msg[k+3]<<24|msg[k+2]<<16|msg[k+1]<<8|msg[k];res[i]=w>>>0}return res}exports.join32=join32;function split32(msg,endian){var res=Array(msg.length*4);for(var i=0,k=0;i<msg.length;i++,k+=4){var m=msg[i];if(endian===\"big\")res[k]=m>>>24,res[k+1]=m>>>16&255,res[k+2]=m>>>8&255,res[k+3]=m&255;else res[k+3]=m>>>24,res[k+2]=m>>>16&255,res[k+1]=m>>>8&255,res[k]=m&255}return res}exports.split32=split32;function rotr32(w,b){return w>>>b|w<<32-b}exports.rotr32=rotr32;function rotl32(w,b){return w<<b|w>>>32-b}exports.rotl32=rotl32;function sum32(a,b){return a+b>>>0}exports.sum32=sum32;function sum32_3(a,b,c){return a+b+c>>>0}exports.sum32_3=sum32_3;function sum32_4(a,b,c,d){return a+b+c+d>>>0}exports.sum32_4=sum32_4;function sum32_5(a,b,c,d,e){return a+b+c+d+e>>>0}exports.sum32_5=sum32_5;function sum64(buf,pos,ah,al){var bh=buf[pos],bl=buf[pos+1],lo=al+bl>>>0,hi=(lo<al?1:0)+ah+bh;buf[pos]=hi>>>0,buf[pos+1]=lo}exports.sum64=sum64;function sum64_hi(ah,al,bh,bl){var lo=al+bl>>>0,hi=(lo<al?1:0)+ah+bh;return hi>>>0}exports.sum64_hi=sum64_hi;function sum64_lo(ah,al,bh,bl){var lo=al+bl;return lo>>>0}exports.sum64_lo=sum64_lo;function sum64_4_hi(ah,al,bh,bl,ch,cl,dh,dl){var carry=0,lo=al;lo=lo+bl>>>0,carry+=lo<al?1:0,lo=lo+cl>>>0,carry+=lo<cl?1:0,lo=lo+dl>>>0,carry+=lo<dl?1:0;var hi=ah+bh+ch+dh+carry;return hi>>>0}exports.sum64_4_hi=sum64_4_hi;function sum64_4_lo(ah,al,bh,bl,ch,cl,dh,dl){var lo=al+bl+cl+dl;return lo>>>0}exports.sum64_4_lo=sum64_4_lo;function sum64_5_hi(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var carry=0,lo=al;lo=lo+bl>>>0,carry+=lo<al?1:0,lo=lo+cl>>>0,carry+=lo<cl?1:0,lo=lo+dl>>>0,carry+=lo<dl?1:0,lo=lo+el>>>0,carry+=lo<el?1:0;var hi=ah+bh+ch+dh+eh+carry;return hi>>>0}exports.sum64_5_hi=sum64_5_hi;function sum64_5_lo(ah,al,bh,bl,ch,cl,dh,dl,eh,el){var lo=al+bl+cl+dl+el;return lo>>>0}exports.sum64_5_lo=sum64_5_lo;function rotr64_hi(ah,al,num){var r=al<<32-num|ah>>>num;return r>>>0}exports.rotr64_hi=rotr64_hi;function rotr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.rotr64_lo=rotr64_lo;function shr64_hi(ah,al,num){return ah>>>num}exports.shr64_hi=shr64_hi;function shr64_lo(ah,al,num){var r=ah<<32-num|al>>>num;return r>>>0}exports.shr64_lo=shr64_lo});var require_common=__commonJS((exports)=>{var utils=require_utils3(),assert=require_minimalistic_assert();function BlockHash(){this.pending=null,this.pendingTotal=0,this.blockSize=this.constructor.blockSize,this.outSize=this.constructor.outSize,this.hmacStrength=this.constructor.hmacStrength,this.padLength=this.constructor.padLength/8,this.endian=\"big\",this._delta8=this.blockSize/8,this._delta32=this.blockSize/32}exports.BlockHash=BlockHash;BlockHash.prototype.update=function(msg,enc){if(msg=utils.toArray(msg,enc),!this.pending)this.pending=msg;else this.pending=this.pending.concat(msg);if(this.pendingTotal+=msg.length,this.pending.length>=this._delta8){msg=this.pending;var r=msg.length%this._delta8;if(this.pending=msg.slice(msg.length-r,msg.length),this.pending.length===0)this.pending=null;msg=utils.join32(msg,0,msg.length-r,this.endian);for(var i=0;i<msg.length;i+=this._delta32)this._update(msg,i,i+this._delta32)}return this};BlockHash.prototype.digest=function(enc){return this.update(this._pad()),assert(this.pending===null),this._digest(enc)};BlockHash.prototype._pad=function(){var len=this.pendingTotal,bytes=this._delta8,k=bytes-(len+this.padLength)%bytes,res=Array(k+this.padLength);res[0]=128;for(var i=1;i<k;i++)res[i]=0;if(len<<=3,this.endian===\"big\"){for(var t=8;t<this.padLength;t++)res[i++]=0;res[i++]=0,res[i++]=0,res[i++]=0,res[i++]=0,res[i++]=len>>>24&255,res[i++]=len>>>16&255,res[i++]=len>>>8&255,res[i++]=len&255}else{res[i++]=len&255,res[i++]=len>>>8&255,res[i++]=len>>>16&255,res[i++]=len>>>24&255,res[i++]=0,res[i++]=0,res[i++]=0,res[i++]=0;for(t=8;t<this.padLength;t++)res[i++]=0}return res}});var require_common2=__commonJS((exports)=>{var utils=require_utils3(),rotr32=utils.rotr32;function ft_1(s,x,y,z){if(s===0)return ch32(x,y,z);if(s===1||s===3)return p32(x,y,z);if(s===2)return maj32(x,y,z)}exports.ft_1=ft_1;function ch32(x,y,z){return x&y^~x&z}exports.ch32=ch32;function maj32(x,y,z){return x&y^x&z^y&z}exports.maj32=maj32;function p32(x,y,z){return x^y^z}exports.p32=p32;function s0_256(x){return rotr32(x,2)^rotr32(x,13)^rotr32(x,22)}exports.s0_256=s0_256;function s1_256(x){return rotr32(x,6)^rotr32(x,11)^rotr32(x,25)}exports.s1_256=s1_256;function g0_256(x){return rotr32(x,7)^rotr32(x,18)^x>>>3}exports.g0_256=g0_256;function g1_256(x){return rotr32(x,17)^rotr32(x,19)^x>>>10}exports.g1_256=g1_256});var require_1=__commonJS((exports,module)=>{var utils=require_utils3(),common=require_common(),shaCommon=require_common2(),rotl32=utils.rotl32,sum32=utils.sum32,sum32_5=utils.sum32_5,ft_1=shaCommon.ft_1,BlockHash=common.BlockHash,sha1_K=[1518500249,1859775393,2400959708,3395469782];function SHA1(){if(!(this instanceof SHA1))return new SHA1;BlockHash.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.W=Array(80)}utils.inherits(SHA1,BlockHash);module.exports=SHA1;SHA1.blockSize=512;SHA1.outSize=160;SHA1.hmacStrength=80;SHA1.padLength=64;SHA1.prototype._update=function(msg,start){var W=this.W;for(var i=0;i<16;i++)W[i]=msg[start+i];for(;i<W.length;i++)W[i]=rotl32(W[i-3]^W[i-8]^W[i-14]^W[i-16],1);var a=this.h[0],b=this.h[1],c=this.h[2],d=this.h[3],e=this.h[4];for(i=0;i<W.length;i++){var s=~~(i/20),t=sum32_5(rotl32(a,5),ft_1(s,b,c,d),e,W[i],sha1_K[s]);e=d,d=c,c=rotl32(b,30),b=a,a=t}this.h[0]=sum32(this.h[0],a),this.h[1]=sum32(this.h[1],b),this.h[2]=sum32(this.h[2],c),this.h[3]=sum32(this.h[3],d),this.h[4]=sum32(this.h[4],e)};SHA1.prototype._digest=function(enc){if(enc===\"hex\")return utils.toHex32(this.h,\"big\");else return utils.split32(this.h,\"big\")}});var require_256=__commonJS((exports,module)=>{var utils=require_utils3(),common=require_common(),shaCommon=require_common2(),assert=require_minimalistic_assert(),sum32=utils.sum32,sum32_4=utils.sum32_4,sum32_5=utils.sum32_5,ch32=shaCommon.ch32,maj32=shaCommon.maj32,s0_256=shaCommon.s0_256,s1_256=shaCommon.s1_256,g0_256=shaCommon.g0_256,g1_256=shaCommon.g1_256,BlockHash=common.BlockHash,sha256_K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298];function SHA256(){if(!(this instanceof SHA256))return new SHA256;BlockHash.call(this),this.h=[1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225],this.k=sha256_K,this.W=Array(64)}utils.inherits(SHA256,BlockHash);module.exports=SHA256;SHA256.blockSize=512;SHA256.outSize=256;SHA256.hmacStrength=192;SHA256.padLength=64;SHA256.prototype._update=function(msg,start){var W=this.W;for(var i=0;i<16;i++)W[i]=msg[start+i];for(;i<W.length;i++)W[i]=sum32_4(g1_256(W[i-2]),W[i-7],g0_256(W[i-15]),W[i-16]);var a=this.h[0],b=this.h[1],c=this.h[2],d=this.h[3],e=this.h[4],f=this.h[5],g=this.h[6],h=this.h[7];assert(this.k.length===W.length);for(i=0;i<W.length;i++){var T1=sum32_5(h,s1_256(e),ch32(e,f,g),this.k[i],W[i]),T2=sum32(s0_256(a),maj32(a,b,c));h=g,g=f,f=e,e=sum32(d,T1),d=c,c=b,b=a,a=sum32(T1,T2)}this.h[0]=sum32(this.h[0],a),this.h[1]=sum32(this.h[1],b),this.h[2]=sum32(this.h[2],c),this.h[3]=sum32(this.h[3],d),this.h[4]=sum32(this.h[4],e),this.h[5]=sum32(this.h[5],f),this.h[6]=sum32(this.h[6],g),this.h[7]=sum32(this.h[7],h)};SHA256.prototype._digest=function(enc){if(enc===\"hex\")return utils.toHex32(this.h,\"big\");else return utils.split32(this.h,\"big\")}});var require_224=__commonJS((exports,module)=>{var utils=require_utils3(),SHA256=require_256();function SHA224(){if(!(this instanceof SHA224))return new SHA224;SHA256.call(this),this.h=[3238371032,914150663,812702999,4144912697,4290775857,1750603025,1694076839,3204075428]}utils.inherits(SHA224,SHA256);module.exports=SHA224;SHA224.blockSize=512;SHA224.outSize=224;SHA224.hmacStrength=192;SHA224.padLength=64;SHA224.prototype._digest=function(enc){if(enc===\"hex\")return utils.toHex32(this.h.slice(0,7),\"big\");else return utils.split32(this.h.slice(0,7),\"big\")}});var require_512=__commonJS((exports,module)=>{var utils=require_utils3(),common=require_common(),assert=require_minimalistic_assert(),rotr64_hi=utils.rotr64_hi,rotr64_lo=utils.rotr64_lo,shr64_hi=utils.shr64_hi,shr64_lo=utils.shr64_lo,sum64=utils.sum64,sum64_hi=utils.sum64_hi,sum64_lo=utils.sum64_lo,sum64_4_hi=utils.sum64_4_hi,sum64_4_lo=utils.sum64_4_lo,sum64_5_hi=utils.sum64_5_hi,sum64_5_lo=utils.sum64_5_lo,BlockHash=common.BlockHash,sha512_K=[1116352408,3609767458,1899447441,602891725,3049323471,3964484399,3921009573,2173295548,961987163,4081628472,1508970993,3053834265,2453635748,2937671579,2870763221,3664609560,3624381080,2734883394,310598401,1164996542,607225278,1323610764,1426881987,3590304994,1925078388,4068182383,2162078206,991336113,2614888103,633803317,3248222580,3479774868,3835390401,2666613458,4022224774,944711139,264347078,2341262773,604807628,2007800933,770255983,1495990901,1249150122,1856431235,1555081692,3175218132,1996064986,2198950837,2554220882,3999719339,2821834349,766784016,2952996808,2566594879,3210313671,3203337956,3336571891,1034457026,3584528711,2466948901,113926993,3758326383,338241895,168717936,666307205,1188179964,773529912,1546045734,1294757372,1522805485,1396182291,2643833823,1695183700,2343527390,1986661051,1014477480,2177026350,1206759142,2456956037,344077627,2730485921,1290863460,2820302411,3158454273,3259730800,3505952657,3345764771,106217008,3516065817,3606008344,3600352804,1432725776,4094571909,1467031594,275423344,851169720,430227734,3100823752,506948616,1363258195,659060556,3750685593,883997877,3785050280,958139571,3318307427,1322822218,3812723403,1537002063,2003034995,1747873779,3602036899,1955562222,1575990012,2024104815,1125592928,2227730452,2716904306,2361852424,442776044,2428436474,593698344,2756734187,3733110249,3204031479,2999351573,3329325298,3815920427,3391569614,3928383900,3515267271,566280711,3940187606,3454069534,4118630271,4000239992,116418474,1914138554,174292421,2731055270,289380356,3203993006,460393269,320620315,685471733,587496836,852142971,1086792851,1017036298,365543100,1126000580,2618297676,1288033470,3409855158,1501505948,4234509866,1607167915,987167468,1816402316,1246189591];function SHA512(){if(!(this instanceof SHA512))return new SHA512;BlockHash.call(this),this.h=[1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209],this.k=sha512_K,this.W=Array(160)}utils.inherits(SHA512,BlockHash);module.exports=SHA512;SHA512.blockSize=1024;SHA512.outSize=512;SHA512.hmacStrength=192;SHA512.padLength=128;SHA512.prototype._prepareBlock=function(msg,start){var W=this.W;for(var i=0;i<32;i++)W[i]=msg[start+i];for(;i<W.length;i+=2){var c0_hi=g1_512_hi(W[i-4],W[i-3]),c0_lo=g1_512_lo(W[i-4],W[i-3]),c1_hi=W[i-14],c1_lo=W[i-13],c2_hi=g0_512_hi(W[i-30],W[i-29]),c2_lo=g0_512_lo(W[i-30],W[i-29]),c3_hi=W[i-32],c3_lo=W[i-31];W[i]=sum64_4_hi(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo),W[i+1]=sum64_4_lo(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo)}};SHA512.prototype._update=function(msg,start){this._prepareBlock(msg,start);var W=this.W,ah=this.h[0],al=this.h[1],bh=this.h[2],bl=this.h[3],ch=this.h[4],cl=this.h[5],dh=this.h[6],dl=this.h[7],eh=this.h[8],el=this.h[9],fh=this.h[10],fl=this.h[11],gh=this.h[12],gl=this.h[13],hh=this.h[14],hl=this.h[15];assert(this.k.length===W.length);for(var i=0;i<W.length;i+=2){var c0_hi=hh,c0_lo=hl,c1_hi=s1_512_hi(eh,el),c1_lo=s1_512_lo(eh,el),c2_hi=ch64_hi(eh,el,fh,fl,gh,gl),c2_lo=ch64_lo(eh,el,fh,fl,gh,gl),c3_hi=this.k[i],c3_lo=this.k[i+1],c4_hi=W[i],c4_lo=W[i+1],T1_hi=sum64_5_hi(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo,c4_hi,c4_lo),T1_lo=sum64_5_lo(c0_hi,c0_lo,c1_hi,c1_lo,c2_hi,c2_lo,c3_hi,c3_lo,c4_hi,c4_lo);c0_hi=s0_512_hi(ah,al),c0_lo=s0_512_lo(ah,al),c1_hi=maj64_hi(ah,al,bh,bl,ch,cl),c1_lo=maj64_lo(ah,al,bh,bl,ch,cl);var T2_hi=sum64_hi(c0_hi,c0_lo,c1_hi,c1_lo),T2_lo=sum64_lo(c0_hi,c0_lo,c1_hi,c1_lo);hh=gh,hl=gl,gh=fh,gl=fl,fh=eh,fl=el,eh=sum64_hi(dh,dl,T1_hi,T1_lo),el=sum64_lo(dl,dl,T1_hi,T1_lo),dh=ch,dl=cl,ch=bh,cl=bl,bh=ah,bl=al,ah=sum64_hi(T1_hi,T1_lo,T2_hi,T2_lo),al=sum64_lo(T1_hi,T1_lo,T2_hi,T2_lo)}sum64(this.h,0,ah,al),sum64(this.h,2,bh,bl),sum64(this.h,4,ch,cl),sum64(this.h,6,dh,dl),sum64(this.h,8,eh,el),sum64(this.h,10,fh,fl),sum64(this.h,12,gh,gl),sum64(this.h,14,hh,hl)};SHA512.prototype._digest=function(enc){if(enc===\"hex\")return utils.toHex32(this.h,\"big\");else return utils.split32(this.h,\"big\")};function ch64_hi(xh,xl,yh,yl,zh){var r=xh&yh^~xh&zh;if(r<0)r+=4294967296;return r}function ch64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^~xl&zl;if(r<0)r+=4294967296;return r}function maj64_hi(xh,xl,yh,yl,zh){var r=xh&yh^xh&zh^yh&zh;if(r<0)r+=4294967296;return r}function maj64_lo(xh,xl,yh,yl,zh,zl){var r=xl&yl^xl&zl^yl&zl;if(r<0)r+=4294967296;return r}function s0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,28),c1_hi=rotr64_hi(xl,xh,2),c2_hi=rotr64_hi(xl,xh,7),r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,28),c1_lo=rotr64_lo(xl,xh,2),c2_lo=rotr64_lo(xl,xh,7),r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function s1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,14),c1_hi=rotr64_hi(xh,xl,18),c2_hi=rotr64_hi(xl,xh,9),r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function s1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,14),c1_lo=rotr64_lo(xh,xl,18),c2_lo=rotr64_lo(xl,xh,9),r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g0_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,1),c1_hi=rotr64_hi(xh,xl,8),c2_hi=shr64_hi(xh,xl,7),r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g0_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,1),c1_lo=rotr64_lo(xh,xl,8),c2_lo=shr64_lo(xh,xl,7),r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}function g1_512_hi(xh,xl){var c0_hi=rotr64_hi(xh,xl,19),c1_hi=rotr64_hi(xl,xh,29),c2_hi=shr64_hi(xh,xl,6),r=c0_hi^c1_hi^c2_hi;if(r<0)r+=4294967296;return r}function g1_512_lo(xh,xl){var c0_lo=rotr64_lo(xh,xl,19),c1_lo=rotr64_lo(xl,xh,29),c2_lo=shr64_lo(xh,xl,6),r=c0_lo^c1_lo^c2_lo;if(r<0)r+=4294967296;return r}});var require_384=__commonJS((exports,module)=>{var utils=require_utils3(),SHA512=require_512();function SHA384(){if(!(this instanceof SHA384))return new SHA384;SHA512.call(this),this.h=[3418070365,3238371032,1654270250,914150663,2438529370,812702999,355462360,4144912697,1731405415,4290775857,2394180231,1750603025,3675008525,1694076839,1203062813,3204075428]}utils.inherits(SHA384,SHA512);module.exports=SHA384;SHA384.blockSize=1024;SHA384.outSize=384;SHA384.hmacStrength=192;SHA384.padLength=128;SHA384.prototype._digest=function(enc){if(enc===\"hex\")return utils.toHex32(this.h.slice(0,12),\"big\");else return utils.split32(this.h.slice(0,12),\"big\")}});var require_sha=__commonJS((exports)=>{exports.sha1=require_1();exports.sha224=require_224();exports.sha256=require_256();exports.sha384=require_384();exports.sha512=require_512()});var require_ripemd=__commonJS((exports)=>{var utils=require_utils3(),common=require_common(),rotl32=utils.rotl32,sum32=utils.sum32,sum32_3=utils.sum32_3,sum32_4=utils.sum32_4,BlockHash=common.BlockHash;function RIPEMD160(){if(!(this instanceof RIPEMD160))return new RIPEMD160;BlockHash.call(this),this.h=[1732584193,4023233417,2562383102,271733878,3285377520],this.endian=\"little\"}utils.inherits(RIPEMD160,BlockHash);exports.ripemd160=RIPEMD160;RIPEMD160.blockSize=512;RIPEMD160.outSize=160;RIPEMD160.hmacStrength=192;RIPEMD160.padLength=64;RIPEMD160.prototype._update=function(msg,start){var A=this.h[0],B=this.h[1],C=this.h[2],D=this.h[3],E=this.h[4],Ah=A,Bh=B,Ch=C,Dh=D,Eh=E;for(var j=0;j<80;j++){var T=sum32(rotl32(sum32_4(A,f(j,B,C,D),msg[r[j]+start],K(j)),s[j]),E);A=E,E=D,D=rotl32(C,10),C=B,B=T,T=sum32(rotl32(sum32_4(Ah,f(79-j,Bh,Ch,Dh),msg[rh[j]+start],Kh(j)),sh[j]),Eh),Ah=Eh,Eh=Dh,Dh=rotl32(Ch,10),Ch=Bh,Bh=T}T=sum32_3(this.h[1],C,Dh),this.h[1]=sum32_3(this.h[2],D,Eh),this.h[2]=sum32_3(this.h[3],E,Ah),this.h[3]=sum32_3(this.h[4],A,Bh),this.h[4]=sum32_3(this.h[0],B,Ch),this.h[0]=T};RIPEMD160.prototype._digest=function(enc){if(enc===\"hex\")return utils.toHex32(this.h,\"little\");else return utils.split32(this.h,\"little\")};function f(j,x,y,z){if(j<=15)return x^y^z;else if(j<=31)return x&y|~x&z;else if(j<=47)return(x|~y)^z;else if(j<=63)return x&z|y&~z;else return x^(y|~z)}function K(j){if(j<=15)return 0;else if(j<=31)return 1518500249;else if(j<=47)return 1859775393;else if(j<=63)return 2400959708;else return 2840853838}function Kh(j){if(j<=15)return 1352829926;else if(j<=31)return 1548603684;else if(j<=47)return 1836072691;else if(j<=63)return 2053994217;else return 0}var r=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,7,4,13,1,10,6,15,3,12,0,9,5,2,14,11,8,3,10,14,4,9,15,8,1,2,7,0,6,13,11,5,12,1,9,11,10,0,8,12,4,13,3,7,15,14,5,6,2,4,0,5,9,7,12,2,10,14,1,3,8,11,6,15,13],rh=[5,14,7,0,9,2,11,4,13,6,15,8,1,10,3,12,6,11,3,7,0,13,5,10,14,15,8,12,4,9,1,2,15,5,1,3,7,14,6,9,11,8,12,2,10,0,4,13,8,6,4,1,3,11,15,0,5,12,2,13,9,7,10,14,12,15,10,4,1,5,8,7,6,2,13,14,0,3,9,11],s=[11,14,15,12,5,8,7,9,11,13,14,15,6,7,9,8,7,6,8,13,11,9,7,15,7,12,15,9,11,7,13,12,11,13,6,7,14,9,13,15,14,8,13,6,5,12,7,5,11,12,14,15,14,15,9,8,9,14,5,6,8,6,5,12,9,15,5,11,6,8,13,12,5,12,13,14,11,8,5,6],sh=[8,9,9,11,13,15,15,5,7,7,8,11,14,14,12,6,9,13,15,7,12,8,9,11,7,7,12,7,6,15,13,11,9,7,15,11,8,6,6,14,12,13,5,14,13,13,7,5,15,5,8,11,14,14,6,14,6,9,12,9,12,5,15,8,8,5,12,9,12,5,14,6,8,13,6,5,15,13,11,11]});var require_hmac=__commonJS((exports,module)=>{var utils=require_utils3(),assert=require_minimalistic_assert();function Hmac(hash,key,enc){if(!(this instanceof Hmac))return new Hmac(hash,key,enc);this.Hash=hash,this.blockSize=hash.blockSize/8,this.outSize=hash.outSize/8,this.inner=null,this.outer=null,this._init(utils.toArray(key,enc))}module.exports=Hmac;Hmac.prototype._init=function(key){if(key.length>this.blockSize)key=new this.Hash().update(key).digest();assert(key.length<=this.blockSize);for(var i=key.length;i<this.blockSize;i++)key.push(0);for(i=0;i<key.length;i++)key[i]^=54;this.inner=new this.Hash().update(key);for(i=0;i<key.length;i++)key[i]^=106;this.outer=new this.Hash().update(key)};Hmac.prototype.update=function(msg,enc){return this.inner.update(msg,enc),this};Hmac.prototype.digest=function(enc){return this.outer.update(this.inner.digest()),this.outer.digest(enc)}});var require_hash=__commonJS((exports)=>{var hash=exports;hash.utils=require_utils3();hash.common=require_common();hash.sha=require_sha();hash.ripemd=require_ripemd();hash.hmac=require_hmac();hash.sha1=hash.sha.sha1;hash.sha256=hash.sha.sha256;hash.sha224=hash.sha.sha224;hash.sha384=hash.sha.sha384;hash.sha512=hash.sha.sha512;hash.ripemd160=hash.ripemd.ripemd160});var require_secp256k1=__commonJS((exports,module)=>{module.exports={doubles:{step:4,points:[[\"e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a\",\"f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821\"],[\"8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508\",\"11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf\"],[\"175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739\",\"d3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695\"],[\"363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640\",\"4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9\"],[\"8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c\",\"4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36\"],[\"723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda\",\"96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f\"],[\"eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa\",\"5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999\"],[\"100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0\",\"cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09\"],[\"e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d\",\"9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d\"],[\"feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d\",\"e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088\"],[\"da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1\",\"9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d\"],[\"53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0\",\"5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8\"],[\"8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047\",\"10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a\"],[\"385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862\",\"283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453\"],[\"6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7\",\"7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160\"],[\"3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd\",\"56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0\"],[\"85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83\",\"7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6\"],[\"948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a\",\"53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589\"],[\"6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8\",\"bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17\"],[\"e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d\",\"4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda\"],[\"e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725\",\"7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd\"],[\"213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754\",\"4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2\"],[\"4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c\",\"17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6\"],[\"fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6\",\"6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f\"],[\"76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39\",\"c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01\"],[\"c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891\",\"893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3\"],[\"d895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b\",\"febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f\"],[\"b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03\",\"2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7\"],[\"e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d\",\"eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78\"],[\"a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070\",\"7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1\"],[\"90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4\",\"e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150\"],[\"8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da\",\"662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82\"],[\"e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11\",\"1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc\"],[\"8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e\",\"efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b\"],[\"e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41\",\"2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51\"],[\"b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef\",\"67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45\"],[\"d68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8\",\"db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120\"],[\"324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d\",\"648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84\"],[\"4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96\",\"35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d\"],[\"9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd\",\"ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d\"],[\"6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5\",\"9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8\"],[\"a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266\",\"40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8\"],[\"7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71\",\"34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac\"],[\"928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac\",\"c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f\"],[\"85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751\",\"1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962\"],[\"ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e\",\"493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907\"],[\"827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241\",\"c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec\"],[\"eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3\",\"be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d\"],[\"e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f\",\"4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414\"],[\"1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19\",\"aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd\"],[\"146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be\",\"b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0\"],[\"fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9\",\"6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811\"],[\"da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2\",\"8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1\"],[\"a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13\",\"7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c\"],[\"174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c\",\"ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73\"],[\"959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba\",\"2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd\"],[\"d2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151\",\"e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405\"],[\"64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073\",\"d99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589\"],[\"8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458\",\"38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e\"],[\"13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b\",\"69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27\"],[\"bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366\",\"d3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1\"],[\"8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa\",\"40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482\"],[\"8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0\",\"620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945\"],[\"dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787\",\"7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573\"],[\"f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e\",\"ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82\"]]},naf:{wnd:7,points:[[\"f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9\",\"388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672\"],[\"2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4\",\"d8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6\"],[\"5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc\",\"6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da\"],[\"acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe\",\"cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37\"],[\"774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb\",\"d984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b\"],[\"f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8\",\"ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81\"],[\"d7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e\",\"581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58\"],[\"defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34\",\"4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77\"],[\"2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c\",\"85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a\"],[\"352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5\",\"321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c\"],[\"2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f\",\"2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67\"],[\"9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714\",\"73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402\"],[\"daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729\",\"a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55\"],[\"c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db\",\"2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482\"],[\"6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4\",\"e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82\"],[\"1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5\",\"b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396\"],[\"605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479\",\"2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49\"],[\"62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d\",\"80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf\"],[\"80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f\",\"1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a\"],[\"7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb\",\"d0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7\"],[\"d528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9\",\"eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933\"],[\"49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963\",\"758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a\"],[\"77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74\",\"958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6\"],[\"f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530\",\"e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37\"],[\"463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b\",\"5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e\"],[\"f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247\",\"cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6\"],[\"caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1\",\"cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476\"],[\"2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120\",\"4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40\"],[\"7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435\",\"91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61\"],[\"754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18\",\"673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683\"],[\"e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8\",\"59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5\"],[\"186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb\",\"3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b\"],[\"df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f\",\"55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417\"],[\"5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143\",\"efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868\"],[\"290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba\",\"e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a\"],[\"af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45\",\"f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6\"],[\"766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a\",\"744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996\"],[\"59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e\",\"c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e\"],[\"f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8\",\"e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d\"],[\"7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c\",\"30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2\"],[\"948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519\",\"e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e\"],[\"7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab\",\"100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437\"],[\"3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca\",\"ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311\"],[\"d3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf\",\"8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4\"],[\"1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610\",\"68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575\"],[\"733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4\",\"f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d\"],[\"15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c\",\"d56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d\"],[\"a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940\",\"edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629\"],[\"e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980\",\"a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06\"],[\"311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3\",\"66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374\"],[\"34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf\",\"9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee\"],[\"f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63\",\"4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1\"],[\"d7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448\",\"fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b\"],[\"32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf\",\"5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661\"],[\"7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5\",\"8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6\"],[\"ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6\",\"8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e\"],[\"16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5\",\"5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d\"],[\"eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99\",\"f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc\"],[\"78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51\",\"f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4\"],[\"494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5\",\"42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c\"],[\"a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5\",\"204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b\"],[\"c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997\",\"4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913\"],[\"841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881\",\"73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154\"],[\"5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5\",\"39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865\"],[\"36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66\",\"d2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc\"],[\"336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726\",\"ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224\"],[\"8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede\",\"6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e\"],[\"1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94\",\"60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6\"],[\"85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31\",\"3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511\"],[\"29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51\",\"b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b\"],[\"a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252\",\"ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2\"],[\"4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5\",\"cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c\"],[\"d24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b\",\"6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3\"],[\"ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4\",\"322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d\"],[\"af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f\",\"6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700\"],[\"e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889\",\"2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4\"],[\"591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246\",\"b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196\"],[\"11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984\",\"998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4\"],[\"3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a\",\"b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257\"],[\"cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030\",\"bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13\"],[\"c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197\",\"6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096\"],[\"c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593\",\"c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38\"],[\"a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef\",\"21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f\"],[\"347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38\",\"60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448\"],[\"da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a\",\"49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a\"],[\"c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111\",\"5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4\"],[\"4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502\",\"7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437\"],[\"3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea\",\"be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7\"],[\"cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26\",\"8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d\"],[\"b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986\",\"39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a\"],[\"d4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e\",\"62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54\"],[\"48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4\",\"25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77\"],[\"dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda\",\"ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517\"],[\"6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859\",\"cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10\"],[\"e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f\",\"f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125\"],[\"eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c\",\"6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e\"],[\"13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942\",\"fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1\"],[\"ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a\",\"1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2\"],[\"b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80\",\"5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423\"],[\"ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d\",\"438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8\"],[\"8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1\",\"cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758\"],[\"52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63\",\"c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375\"],[\"e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352\",\"6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d\"],[\"7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193\",\"ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec\"],[\"5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00\",\"9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0\"],[\"32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58\",\"ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c\"],[\"e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7\",\"d3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4\"],[\"8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8\",\"c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f\"],[\"4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e\",\"67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649\"],[\"3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d\",\"cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826\"],[\"674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b\",\"299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5\"],[\"d32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f\",\"f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87\"],[\"30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6\",\"462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b\"],[\"be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297\",\"62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc\"],[\"93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a\",\"7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c\"],[\"b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c\",\"ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f\"],[\"d5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52\",\"4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a\"],[\"d3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb\",\"bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46\"],[\"463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065\",\"bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f\"],[\"7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917\",\"603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03\"],[\"74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9\",\"cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08\"],[\"30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3\",\"553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8\"],[\"9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57\",\"712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373\"],[\"176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66\",\"ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3\"],[\"75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8\",\"9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8\"],[\"809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721\",\"9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1\"],[\"1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180\",\"4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9\"]]}}});var require_curves=__commonJS((exports)=>{var curves=exports,hash=require_hash(),curve=require_curve(),utils=require_utils2(),assert=utils.assert;function PresetCurve(options){if(options.type===\"short\")this.curve=new curve.short(options);else if(options.type===\"edwards\")this.curve=new curve.edwards(options);else this.curve=new curve.mont(options);this.g=this.curve.g,this.n=this.curve.n,this.hash=options.hash,assert(this.g.validate(),\"Invalid curve\"),assert(this.g.mul(this.n).isInfinity(),\"Invalid curve, G*N != O\")}curves.PresetCurve=PresetCurve;function defineCurve(name,options){Object.defineProperty(curves,name,{configurable:!0,enumerable:!0,get:function(){var curve2=new PresetCurve(options);return Object.defineProperty(curves,name,{configurable:!0,enumerable:!0,value:curve2}),curve2}})}defineCurve(\"p192\",{type:\"short\",prime:\"p192\",p:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc\",b:\"64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1\",n:\"ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831\",hash:hash.sha256,gRed:!1,g:[\"188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012\",\"07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811\"]});defineCurve(\"p224\",{type:\"short\",prime:\"p224\",p:\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\",a:\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe\",b:\"b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4\",n:\"ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d\",hash:hash.sha256,gRed:!1,g:[\"b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21\",\"bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34\"]});defineCurve(\"p256\",{type:\"short\",prime:null,p:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff\",a:\"ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc\",b:\"5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b\",n:\"ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551\",hash:hash.sha256,gRed:!1,g:[\"6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296\",\"4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5\"]});defineCurve(\"p384\",{type:\"short\",prime:null,p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 ffffffff\",a:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe ffffffff 00000000 00000000 fffffffc\",b:\"b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f 5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef\",n:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 f4372ddf 581a0db2 48b0a77a ecec196a ccc52973\",hash:hash.sha384,gRed:!1,g:[\"aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 5502f25d bf55296c 3a545e38 72760ab7\",\"3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 0a60b1ce 1d7e819d 7a431d7c 90ea0e5f\"]});defineCurve(\"p521\",{type:\"short\",prime:null,p:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff\",a:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffc\",b:\"00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b 99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd 3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00\",n:\"000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409\",hash:hash.sha512,gRed:!1,g:[\"000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66\",\"00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 3fad0761 353c7086 a272c240 88be9476 9fd16650\"]});defineCurve(\"curve25519\",{type:\"mont\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"76d06\",b:\"1\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:hash.sha256,gRed:!1,g:[\"9\"]});defineCurve(\"ed25519\",{type:\"edwards\",prime:\"p25519\",p:\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\",a:\"-1\",c:\"1\",d:\"52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3\",n:\"1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed\",hash:hash.sha256,gRed:!1,g:[\"216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a\",\"6666666666666666666666666666666666666666666666666666666666666658\"]});var pre;try{pre=require_secp256k1()}catch(e){pre=void 0}defineCurve(\"secp256k1\",{type:\"short\",prime:\"k256\",p:\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\",a:\"0\",b:\"7\",n:\"ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141\",h:\"1\",hash:hash.sha256,beta:\"7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee\",lambda:\"5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72\",basis:[{a:\"3086d221a7d46bcde86c90e49284eb15\",b:\"-e4437ed6010e88286f547fa90abfe4c3\"},{a:\"114ca50f7a8e2f3f657c1108d9d44cfd8\",b:\"3086d221a7d46bcde86c90e49284eb15\"}],gRed:!1,g:[\"79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798\",\"483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8\",pre]})});var require_hmac_drbg=__commonJS((exports,module)=>{var hash=require_hash(),utils=require_utils(),assert=require_minimalistic_assert();function HmacDRBG(options){if(!(this instanceof HmacDRBG))return new HmacDRBG(options);this.hash=options.hash,this.predResist=!!options.predResist,this.outLen=this.hash.outSize,this.minEntropy=options.minEntropy||this.hash.hmacStrength,this._reseed=null,this.reseedInterval=null,this.K=null,this.V=null;var entropy=utils.toArray(options.entropy,options.entropyEnc||\"hex\"),nonce=utils.toArray(options.nonce,options.nonceEnc||\"hex\"),pers=utils.toArray(options.pers,options.persEnc||\"hex\");assert(entropy.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._init(entropy,nonce,pers)}module.exports=HmacDRBG;HmacDRBG.prototype._init=function(entropy,nonce,pers){var seed=entropy.concat(nonce).concat(pers);this.K=Array(this.outLen/8),this.V=Array(this.outLen/8);for(var i=0;i<this.V.length;i++)this.K[i]=0,this.V[i]=1;this._update(seed),this._reseed=1,this.reseedInterval=281474976710656};HmacDRBG.prototype._hmac=function(){return new hash.hmac(this.hash,this.K)};HmacDRBG.prototype._update=function(seed){var kmac=this._hmac().update(this.V).update([0]);if(seed)kmac=kmac.update(seed);if(this.K=kmac.digest(),this.V=this._hmac().update(this.V).digest(),!seed)return;this.K=this._hmac().update(this.V).update([1]).update(seed).digest(),this.V=this._hmac().update(this.V).digest()};HmacDRBG.prototype.reseed=function(entropy,entropyEnc,add,addEnc){if(typeof entropyEnc!==\"string\")addEnc=add,add=entropyEnc,entropyEnc=null;entropy=utils.toArray(entropy,entropyEnc),add=utils.toArray(add,addEnc),assert(entropy.length>=this.minEntropy/8,\"Not enough entropy. Minimum is: \"+this.minEntropy+\" bits\"),this._update(entropy.concat(add||[])),this._reseed=1};HmacDRBG.prototype.generate=function(len,enc,add,addEnc){if(this._reseed>this.reseedInterval)throw Error(\"Reseed is required\");if(typeof enc!==\"string\")addEnc=add,add=enc,enc=null;if(add)add=utils.toArray(add,addEnc||\"hex\"),this._update(add);var temp=[];while(temp.length<len)this.V=this._hmac().update(this.V).digest(),temp=temp.concat(this.V);var res=temp.slice(0,len);return this._update(add),this._reseed++,utils.encode(res,enc)}});var require_key=__commonJS((exports,module)=>{var BN=require_bn(),utils=require_utils2(),assert=utils.assert;function KeyPair(ec,options){if(this.ec=ec,this.priv=null,this.pub=null,options.priv)this._importPrivate(options.priv,options.privEnc);if(options.pub)this._importPublic(options.pub,options.pubEnc)}module.exports=KeyPair;KeyPair.fromPublic=function(ec,pub,enc){if(pub instanceof KeyPair)return pub;return new KeyPair(ec,{pub,pubEnc:enc})};KeyPair.fromPrivate=function(ec,priv,enc){if(priv instanceof KeyPair)return priv;return new KeyPair(ec,{priv,privEnc:enc})};KeyPair.prototype.validate=function(){var pub=this.getPublic();if(pub.isInfinity())return{result:!1,reason:\"Invalid public key\"};if(!pub.validate())return{result:!1,reason:\"Public key is not a point\"};if(!pub.mul(this.ec.curve.n).isInfinity())return{result:!1,reason:\"Public key * N != O\"};return{result:!0,reason:null}};KeyPair.prototype.getPublic=function(compact,enc){if(typeof compact===\"string\")enc=compact,compact=null;if(!this.pub)this.pub=this.ec.g.mul(this.priv);if(!enc)return this.pub;return this.pub.encode(enc,compact)};KeyPair.prototype.getPrivate=function(enc){if(enc===\"hex\")return this.priv.toString(16,2);else return this.priv};KeyPair.prototype._importPrivate=function(key,enc){this.priv=new BN(key,enc||16),this.priv=this.priv.umod(this.ec.curve.n)};KeyPair.prototype._importPublic=function(key,enc){if(key.x||key.y){if(this.ec.curve.type===\"mont\")assert(key.x,\"Need x coordinate\");else if(this.ec.curve.type===\"short\"||this.ec.curve.type===\"edwards\")assert(key.x&&key.y,\"Need both x and y coordinate\");this.pub=this.ec.curve.point(key.x,key.y);return}this.pub=this.ec.curve.decodePoint(key,enc)};KeyPair.prototype.derive=function(pub){if(!pub.validate())assert(pub.validate(),\"public point not validated\");return pub.mul(this.priv).getX()};KeyPair.prototype.sign=function(msg,enc,options){return this.ec.sign(msg,this,enc,options)};KeyPair.prototype.verify=function(msg,signature,options){return this.ec.verify(msg,signature,this,void 0,options)};KeyPair.prototype.inspect=function(){return\"<Key priv: \"+(this.priv&&this.priv.toString(16,2))+\" pub: \"+(this.pub&&this.pub.inspect())+\" >\"}});var require_signature=__commonJS((exports,module)=>{var BN=require_bn(),utils=require_utils2(),assert=utils.assert;function Signature(options,enc){if(options instanceof Signature)return options;if(this._importDER(options,enc))return;if(assert(options.r&&options.s,\"Signature without r or s\"),this.r=new BN(options.r,16),this.s=new BN(options.s,16),options.recoveryParam===void 0)this.recoveryParam=null;else this.recoveryParam=options.recoveryParam}module.exports=Signature;function Position(){this.place=0}function getLength(buf,p){var initial=buf[p.place++];if(!(initial&128))return initial;var octetLen=initial&15;if(octetLen===0||octetLen>4)return!1;if(buf[p.place]===0)return!1;var val=0;for(var i=0,off=p.place;i<octetLen;i++,off++)val<<=8,val|=buf[off],val>>>=0;if(val<=127)return!1;return p.place=off,val}function rmPadding(buf){var i=0,len=buf.length-1;while(!buf[i]&&!(buf[i+1]&128)&&i<len)i++;if(i===0)return buf;return buf.slice(i)}Signature.prototype._importDER=function(data,enc){data=utils.toArray(data,enc);var p=new Position;if(data[p.place++]!==48)return!1;var len=getLength(data,p);if(len===!1)return!1;if(len+p.place!==data.length)return!1;if(data[p.place++]!==2)return!1;var rlen=getLength(data,p);if(rlen===!1)return!1;if((data[p.place]&128)!==0)return!1;var r=data.slice(p.place,rlen+p.place);if(p.place+=rlen,data[p.place++]!==2)return!1;var slen=getLength(data,p);if(slen===!1)return!1;if(data.length!==slen+p.place)return!1;if((data[p.place]&128)!==0)return!1;var s=data.slice(p.place,slen+p.place);if(r[0]===0)if(r[1]&128)r=r.slice(1);else return!1;if(s[0]===0)if(s[1]&128)s=s.slice(1);else return!1;return this.r=new BN(r),this.s=new BN(s),this.recoveryParam=null,!0};function constructLength(arr,len){if(len<128){arr.push(len);return}var octets=1+(Math.log(len)/Math.LN2>>>3);arr.push(octets|128);while(--octets)arr.push(len>>>(octets<<3)&255);arr.push(len)}Signature.prototype.toDER=function(enc){var r=this.r.toArray(),s=this.s.toArray();if(r[0]&128)r=[0].concat(r);if(s[0]&128)s=[0].concat(s);r=rmPadding(r),s=rmPadding(s);while(!s[0]&&!(s[1]&128))s=s.slice(1);var arr=[2];constructLength(arr,r.length),arr=arr.concat(r),arr.push(2),constructLength(arr,s.length);var backHalf=arr.concat(s),res=[48];return constructLength(res,backHalf.length),res=res.concat(backHalf),utils.encode(res,enc)}});var require_ec=__commonJS((exports,module)=>{var BN=require_bn(),HmacDRBG=require_hmac_drbg(),utils=require_utils2(),curves=require_curves(),rand=require_brorand(),assert=utils.assert,KeyPair=require_key(),Signature=require_signature();function EC(options){if(!(this instanceof EC))return new EC(options);if(typeof options===\"string\")assert(Object.prototype.hasOwnProperty.call(curves,options),\"Unknown curve \"+options),options=curves[options];if(options instanceof curves.PresetCurve)options={curve:options};this.curve=options.curve.curve,this.n=this.curve.n,this.nh=this.n.ushrn(1),this.g=this.curve.g,this.g=options.curve.g,this.g.precompute(options.curve.n.bitLength()+1),this.hash=options.hash||options.curve.hash}module.exports=EC;EC.prototype.keyPair=function(options){return new KeyPair(this,options)};EC.prototype.keyFromPrivate=function(priv,enc){return KeyPair.fromPrivate(this,priv,enc)};EC.prototype.keyFromPublic=function(pub,enc){return KeyPair.fromPublic(this,pub,enc)};EC.prototype.genKeyPair=function(options){if(!options)options={};var drbg=new HmacDRBG({hash:this.hash,pers:options.pers,persEnc:options.persEnc||\"utf8\",entropy:options.entropy||rand(this.hash.hmacStrength),entropyEnc:options.entropy&&options.entropyEnc||\"utf8\",nonce:this.n.toArray()}),bytes=this.n.byteLength(),ns2=this.n.sub(new BN(2));for(;;){var priv=new BN(drbg.generate(bytes));if(priv.cmp(ns2)>0)continue;return priv.iaddn(1),this.keyFromPrivate(priv)}};EC.prototype._truncateToN=function(msg,truncOnly,bitLength){var byteLength;if(BN.isBN(msg)||typeof msg===\"number\")msg=new BN(msg,16),byteLength=msg.byteLength();else if(typeof msg===\"object\")byteLength=msg.length,msg=new BN(msg,16);else{var str=msg.toString();byteLength=str.length+1>>>1,msg=new BN(str,16)}if(typeof bitLength!==\"number\")bitLength=byteLength*8;var delta=bitLength-this.n.bitLength();if(delta>0)msg=msg.ushrn(delta);if(!truncOnly&&msg.cmp(this.n)>=0)return msg.sub(this.n);else return msg};EC.prototype.sign=function(msg,key,enc,options){if(typeof enc===\"object\")options=enc,enc=null;if(!options)options={};if(typeof msg!==\"string\"&&typeof msg!==\"number\"&&!BN.isBN(msg)){assert(typeof msg===\"object\"&&msg&&typeof msg.length===\"number\",\"Expected message to be an array-like, a hex string, or a BN instance\"),assert(msg.length>>>0===msg.length);for(var i=0;i<msg.length;i++)assert((msg[i]&255)===msg[i])}key=this.keyFromPrivate(key,enc),msg=this._truncateToN(msg,!1,options.msgBitLength),assert(!msg.isNeg(),\"Can not sign a negative message\");var bytes=this.n.byteLength(),bkey=key.getPrivate().toArray(\"be\",bytes),nonce=msg.toArray(\"be\",bytes);assert(new BN(nonce).eq(msg),\"Can not sign message\");var drbg=new HmacDRBG({hash:this.hash,entropy:bkey,nonce,pers:options.pers,persEnc:options.persEnc||\"utf8\"}),ns1=this.n.sub(new BN(1));for(var iter=0;;iter++){var k=options.k?options.k(iter):new BN(drbg.generate(this.n.byteLength()));if(k=this._truncateToN(k,!0),k.cmpn(1)<=0||k.cmp(ns1)>=0)continue;var kp=this.g.mul(k);if(kp.isInfinity())continue;var kpX=kp.getX(),r=kpX.umod(this.n);if(r.cmpn(0)===0)continue;var s=k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));if(s=s.umod(this.n),s.cmpn(0)===0)continue;var recoveryParam=(kp.getY().isOdd()?1:0)|(kpX.cmp(r)!==0?2:0);if(options.canonical&&s.cmp(this.nh)>0)s=this.n.sub(s),recoveryParam^=1;return new Signature({r,s,recoveryParam})}};EC.prototype.verify=function(msg,signature,key,enc,options){if(!options)options={};msg=this._truncateToN(msg,!1,options.msgBitLength),key=this.keyFromPublic(key,enc),signature=new Signature(signature,\"hex\");var{r,s}=signature;if(r.cmpn(1)<0||r.cmp(this.n)>=0)return!1;if(s.cmpn(1)<0||s.cmp(this.n)>=0)return!1;var sinv=s.invm(this.n),u1=sinv.mul(msg).umod(this.n),u2=sinv.mul(r).umod(this.n),p;if(!this.curve._maxwellTrick){if(p=this.g.mulAdd(u1,key.getPublic(),u2),p.isInfinity())return!1;return p.getX().umod(this.n).cmp(r)===0}if(p=this.g.jmulAdd(u1,key.getPublic(),u2),p.isInfinity())return!1;return p.eqXToP(r)};EC.prototype.recoverPubKey=function(msg,signature,j,enc){assert((3&j)===j,\"The recovery param is more than two bits\"),signature=new Signature(signature,enc);var n=this.n,e=new BN(msg),r=signature.r,s=signature.s,isYOdd=j&1,isSecondKey=j>>1;if(r.cmp(this.curve.p.umod(this.curve.n))>=0&&isSecondKey)throw Error(\"Unable to find sencond key candinate\");if(isSecondKey)r=this.curve.pointFromX(r.add(this.curve.n),isYOdd);else r=this.curve.pointFromX(r,isYOdd);var rInv=signature.r.invm(n),s1=n.sub(e).mul(rInv).umod(n),s2=s.mul(rInv).umod(n);return this.g.mulAdd(s1,r,s2)};EC.prototype.getKeyRecoveryParam=function(e,signature,Q,enc){if(signature=new Signature(signature,enc),signature.recoveryParam!==null)return signature.recoveryParam;for(var i=0;i<4;i++){var Qprime;try{Qprime=this.recoverPubKey(e,signature,i)}catch(e2){continue}if(Qprime.eq(Q))return i}throw Error(\"Unable to find valid recovery factor\")}});var require_key2=__commonJS((exports,module)=>{var utils=require_utils2(),assert=utils.assert,parseBytes=utils.parseBytes,cachedProperty=utils.cachedProperty;function KeyPair(eddsa,params){if(this.eddsa=eddsa,this._secret=parseBytes(params.secret),eddsa.isPoint(params.pub))this._pub=params.pub;else this._pubBytes=parseBytes(params.pub)}KeyPair.fromPublic=function(eddsa,pub){if(pub instanceof KeyPair)return pub;return new KeyPair(eddsa,{pub})};KeyPair.fromSecret=function(eddsa,secret){if(secret instanceof KeyPair)return secret;return new KeyPair(eddsa,{secret})};KeyPair.prototype.secret=function(){return this._secret};cachedProperty(KeyPair,\"pubBytes\",function(){return this.eddsa.encodePoint(this.pub())});cachedProperty(KeyPair,\"pub\",function(){if(this._pubBytes)return this.eddsa.decodePoint(this._pubBytes);return this.eddsa.g.mul(this.priv())});cachedProperty(KeyPair,\"privBytes\",function(){var eddsa=this.eddsa,hash=this.hash(),lastIx=eddsa.encodingLength-1,a=hash.slice(0,eddsa.encodingLength);return a[0]&=248,a[lastIx]&=127,a[lastIx]|=64,a});cachedProperty(KeyPair,\"priv\",function(){return this.eddsa.decodeInt(this.privBytes())});cachedProperty(KeyPair,\"hash\",function(){return this.eddsa.hash().update(this.secret()).digest()});cachedProperty(KeyPair,\"messagePrefix\",function(){return this.hash().slice(this.eddsa.encodingLength)});KeyPair.prototype.sign=function(message){return assert(this._secret,\"KeyPair can only verify\"),this.eddsa.sign(message,this)};KeyPair.prototype.verify=function(message,sig){return this.eddsa.verify(message,sig,this)};KeyPair.prototype.getSecret=function(enc){return assert(this._secret,\"KeyPair is public only\"),utils.encode(this.secret(),enc)};KeyPair.prototype.getPublic=function(enc){return utils.encode(this.pubBytes(),enc)};module.exports=KeyPair});var require_signature2=__commonJS((exports,module)=>{var BN=require_bn(),utils=require_utils2(),assert=utils.assert,cachedProperty=utils.cachedProperty,parseBytes=utils.parseBytes;function Signature(eddsa,sig){if(this.eddsa=eddsa,typeof sig!==\"object\")sig=parseBytes(sig);if(Array.isArray(sig))assert(sig.length===eddsa.encodingLength*2,\"Signature has invalid size\"),sig={R:sig.slice(0,eddsa.encodingLength),S:sig.slice(eddsa.encodingLength)};if(assert(sig.R&&sig.S,\"Signature without R or S\"),eddsa.isPoint(sig.R))this._R=sig.R;if(sig.S instanceof BN)this._S=sig.S;this._Rencoded=Array.isArray(sig.R)?sig.R:sig.Rencoded,this._Sencoded=Array.isArray(sig.S)?sig.S:sig.Sencoded}cachedProperty(Signature,\"S\",function(){return this.eddsa.decodeInt(this.Sencoded())});cachedProperty(Signature,\"R\",function(){return this.eddsa.decodePoint(this.Rencoded())});cachedProperty(Signature,\"Rencoded\",function(){return this.eddsa.encodePoint(this.R())});cachedProperty(Signature,\"Sencoded\",function(){return this.eddsa.encodeInt(this.S())});Signature.prototype.toBytes=function(){return this.Rencoded().concat(this.Sencoded())};Signature.prototype.toHex=function(){return utils.encode(this.toBytes(),\"hex\").toUpperCase()};module.exports=Signature});var require_eddsa=__commonJS((exports,module)=>{var hash=require_hash(),curves=require_curves(),utils=require_utils2(),assert=utils.assert,parseBytes=utils.parseBytes,KeyPair=require_key2(),Signature=require_signature2();function EDDSA(curve){if(assert(curve===\"ed25519\",\"only tested with ed25519 so far\"),!(this instanceof EDDSA))return new EDDSA(curve);curve=curves[curve].curve,this.curve=curve,this.g=curve.g,this.g.precompute(curve.n.bitLength()+1),this.pointClass=curve.point().constructor,this.encodingLength=Math.ceil(curve.n.bitLength()/8),this.hash=hash.sha512}module.exports=EDDSA;EDDSA.prototype.sign=function(message,secret){message=parseBytes(message);var key=this.keyFromSecret(secret),r=this.hashInt(key.messagePrefix(),message),R=this.g.mul(r),Rencoded=this.encodePoint(R),s_=this.hashInt(Rencoded,key.pubBytes(),message).mul(key.priv()),S=r.add(s_).umod(this.curve.n);return this.makeSignature({R,S,Rencoded})};EDDSA.prototype.verify=function(message,sig,pub){if(message=parseBytes(message),sig=this.makeSignature(sig),sig.S().gte(sig.eddsa.curve.n)||sig.S().isNeg())return!1;var key=this.keyFromPublic(pub),h=this.hashInt(sig.Rencoded(),key.pubBytes(),message),SG=this.g.mul(sig.S()),RplusAh=sig.R().add(key.pub().mul(h));return RplusAh.eq(SG)};EDDSA.prototype.hashInt=function(){var hash2=this.hash();for(var i=0;i<arguments.length;i++)hash2.update(arguments[i]);return utils.intFromLE(hash2.digest()).umod(this.curve.n)};EDDSA.prototype.keyFromPublic=function(pub){return KeyPair.fromPublic(this,pub)};EDDSA.prototype.keyFromSecret=function(secret){return KeyPair.fromSecret(this,secret)};EDDSA.prototype.makeSignature=function(sig){if(sig instanceof Signature)return sig;return new Signature(this,sig)};EDDSA.prototype.encodePoint=function(point){var enc=point.getY().toArray(\"le\",this.encodingLength);return enc[this.encodingLength-1]|=point.getX().isOdd()?128:0,enc};EDDSA.prototype.decodePoint=function(bytes){bytes=utils.parseBytes(bytes);var lastIx=bytes.length-1,normed=bytes.slice(0,lastIx).concat(bytes[lastIx]&-129),xIsOdd=(bytes[lastIx]&128)!==0,y=utils.intFromLE(normed);return this.curve.pointFromY(y,xIsOdd)};EDDSA.prototype.encodeInt=function(num){return num.toArray(\"le\",this.encodingLength)};EDDSA.prototype.decodeInt=function(bytes){return utils.intFromLE(bytes)};EDDSA.prototype.isPoint=function(val){return val instanceof this.pointClass}});var require_elliptic=__commonJS((exports)=>{var elliptic=exports;elliptic.version=require_package().version;elliptic.utils=require_utils2();elliptic.rand=require_brorand();elliptic.curve=require_curve();elliptic.curves=require_curves();elliptic.ec=require_ec();elliptic.eddsa=require_eddsa()});var require_bn2=__commonJS((exports,module)=>{(function(module2,exports2){function assert(val,msg){if(!val)throw Error(msg||\"Assertion failed\")}function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype,ctor.prototype=new TempCtor,ctor.prototype.constructor=ctor}function BN(number,base,endian){if(BN.isBN(number))return number;if(this.negative=0,this.words=null,this.length=0,this.red=null,number!==null){if(base===\"le\"||base===\"be\")endian=base,base=10;this._init(number||0,base||10,endian||\"be\")}}if(typeof module2===\"object\")module2.exports=BN;else exports2.BN=BN;BN.BN=BN,BN.wordSize=26;var Buffer2;try{if(typeof window<\"u\"&&typeof window.Buffer<\"u\")Buffer2=window.Buffer;else Buffer2=require(\"buffer\").Buffer}catch(e){}BN.isBN=function(num){if(num instanceof BN)return!0;return num!==null&&typeof num===\"object\"&&num.constructor.wordSize===BN.wordSize&&Array.isArray(num.words)},BN.max=function(left,right){if(left.cmp(right)>0)return left;return right},BN.min=function(left,right){if(left.cmp(right)<0)return left;return right},BN.prototype._init=function(number,base,endian){if(typeof number===\"number\")return this._initNumber(number,base,endian);if(typeof number===\"object\")return this._initArray(number,base,endian);if(base===\"hex\")base=16;assert(base===(base|0)&&base>=2&&base<=36),number=number.toString().replace(/\\s+/g,\"\");var start=0;if(number[0]===\"-\")start++,this.negative=1;if(start<number.length){if(base===16)this._parseHex(number,start,endian);else if(this._parseBase(number,base,start),endian===\"le\")this._initArray(this.toArray(),base,endian)}},BN.prototype._initNumber=function(number,base,endian){if(number<0)this.negative=1,number=-number;if(number<67108864)this.words=[number&67108863],this.length=1;else if(number<4503599627370496)this.words=[number&67108863,number/67108864&67108863],this.length=2;else assert(number<9007199254740992),this.words=[number&67108863,number/67108864&67108863,1],this.length=3;if(endian!==\"le\")return;this._initArray(this.toArray(),base,endian)},BN.prototype._initArray=function(number,base,endian){if(assert(typeof number.length===\"number\"),number.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(number.length/3),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var j,w,off=0;if(endian===\"be\"){for(i=number.length-1,j=0;i>=0;i-=3)if(w=number[i]|number[i-1]<<8|number[i-2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}else if(endian===\"le\"){for(i=0,j=0;i<number.length;i+=3)if(w=number[i]|number[i+1]<<8|number[i+2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}return this.strip()};function parseHex4Bits(string,index){var c=string.charCodeAt(index);if(c>=65&&c<=70)return c-55;else if(c>=97&&c<=102)return c-87;else return c-48&15}function parseHexByte(string,lowerBound,index){var r=parseHex4Bits(string,index);if(index-1>=lowerBound)r|=parseHex4Bits(string,index-1)<<4;return r}BN.prototype._parseHex=function(number,start,endian){this.length=Math.ceil((number.length-start)/6),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var off=0,j=0,w;if(endian===\"be\")for(i=number.length-1;i>=start;i-=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8;else{var parseLength=number.length-start;for(i=parseLength%2===0?start+1:start;i<number.length;i+=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8}this.strip()};function parseBase(str,start,end,mul){var r=0,len=Math.min(str.length,end);for(var i=start;i<len;i++){var c=str.charCodeAt(i)-48;if(r*=mul,c>=49)r+=c-49+10;else if(c>=17)r+=c-17+10;else r+=c}return r}BN.prototype._parseBase=function(number,base,start){this.words=[0],this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base)limbLen++;limbLen--,limbPow=limbPow/base|0;var total=number.length-start,mod=total%limbLen,end=Math.min(total,total-mod)+start,word=0;for(var i=start;i<end;i+=limbLen)if(word=parseBase(number,i,i+limbLen,base),this.imuln(limbPow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word);if(mod!==0){var pow=1;word=parseBase(number,i,number.length,base);for(i=0;i<mod;i++)pow*=base;if(this.imuln(pow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word)}this.strip()},BN.prototype.copy=function(dest){dest.words=Array(this.length);for(var i=0;i<this.length;i++)dest.words[i]=this.words[i];dest.length=this.length,dest.negative=this.negative,dest.red=this.red},BN.prototype.clone=function(){var r=new BN(null);return this.copy(r),r},BN.prototype._expand=function(size){while(this.length<size)this.words[this.length++]=0;return this},BN.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},BN.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},BN.prototype.inspect=function(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var zeros=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(BN.prototype.toString=function(base,padding){base=base||10,padding=padding|0||1;var out;if(base===16||base===\"hex\"){out=\"\";var off=0,carry=0;for(var i=0;i<this.length;i++){var w=this.words[i],word=((w<<off|carry)&16777215).toString(16);if(carry=w>>>24-off&16777215,off+=2,off>=26)off-=26,i--;if(carry!==0||i!==this.length-1)out=zeros[6-word.length]+word+out;else out=word+out}if(carry!==0)out=carry.toString(16)+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base],groupBase=groupBases[base];out=\"\";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modn(groupBase).toString(base);if(c=c.idivn(groupBase),!c.isZero())out=zeros[groupSize-r.length]+r+out;else out=r+out}if(this.isZero())out=\"0\"+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}assert(!1,\"Base should be between 2 and 36\")},BN.prototype.toNumber=function(){var ret=this.words[0];if(this.length===2)ret+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)ret+=4503599627370496+this.words[1]*67108864;else if(this.length>2)assert(!1,\"Number can only safely store up to 53 bits\");return this.negative!==0?-ret:ret},BN.prototype.toJSON=function(){return this.toString(16)},BN.prototype.toBuffer=function(endian,length){return assert(typeof Buffer2<\"u\"),this.toArrayLike(Buffer2,endian,length)},BN.prototype.toArray=function(endian,length){return this.toArrayLike(Array,endian,length)},BN.prototype.toArrayLike=function(ArrayType,endian,length){var byteLength=this.byteLength(),reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,\"byte array longer than desired length\"),assert(reqLength>0,\"Requested array length <= 0\"),this.strip();var littleEndian=endian===\"le\",res=new ArrayType(reqLength),b,i,q=this.clone();if(!littleEndian){for(i=0;i<reqLength-byteLength;i++)res[i]=0;for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[reqLength-i-1]=b}else{for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[i]=b;for(;i<reqLength;i++)res[i]=0}return res},Math.clz32)BN.prototype._countBits=function(w){return 32-Math.clz32(w)};else BN.prototype._countBits=function(w){var t=w,r=0;if(t>=4096)r+=13,t>>>=13;if(t>=64)r+=7,t>>>=7;if(t>=8)r+=4,t>>>=4;if(t>=2)r+=2,t>>>=2;return r+t};BN.prototype._zeroBits=function(w){if(w===0)return 26;var t=w,r=0;if((t&8191)===0)r+=13,t>>>=13;if((t&127)===0)r+=7,t>>>=7;if((t&15)===0)r+=4,t>>>=4;if((t&3)===0)r+=2,t>>>=2;if((t&1)===0)r++;return r},BN.prototype.bitLength=function(){var w=this.words[this.length-1],hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=Array(num.bitLength());for(var bit=0;bit<w.length;bit++){var off=bit/26|0,wbit=bit%26;w[bit]=(num.words[off]&1<<wbit)>>>wbit}return w}BN.prototype.zeroBits=function(){if(this.isZero())return 0;var r=0;for(var i=0;i<this.length;i++){var b=this._zeroBits(this.words[i]);if(r+=b,b!==26)break}return r},BN.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},BN.prototype.toTwos=function(width){if(this.negative!==0)return this.abs().inotn(width).iaddn(1);return this.clone()},BN.prototype.fromTwos=function(width){if(this.testn(width-1))return this.notn(width).iaddn(1).ineg();return this.clone()},BN.prototype.isNeg=function(){return this.negative!==0},BN.prototype.neg=function(){return this.clone().ineg()},BN.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},BN.prototype.iuor=function(num){while(this.length<num.length)this.words[this.length++]=0;for(var i=0;i<num.length;i++)this.words[i]=this.words[i]|num.words[i];return this.strip()},BN.prototype.ior=function(num){return assert((this.negative|num.negative)===0),this.iuor(num)},BN.prototype.or=function(num){if(this.length>num.length)return this.clone().ior(num);return num.clone().ior(this)},BN.prototype.uor=function(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)},BN.prototype.iuand=function(num){var b;if(this.length>num.length)b=num;else b=this;for(var i=0;i<b.length;i++)this.words[i]=this.words[i]&num.words[i];return this.length=b.length,this.strip()},BN.prototype.iand=function(num){return assert((this.negative|num.negative)===0),this.iuand(num)},BN.prototype.and=function(num){if(this.length>num.length)return this.clone().iand(num);return num.clone().iand(this)},BN.prototype.uand=function(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)},BN.prototype.iuxor=function(num){var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;for(var i=0;i<b.length;i++)this.words[i]=a.words[i]^b.words[i];if(this!==a)for(;i<a.length;i++)this.words[i]=a.words[i];return this.length=a.length,this.strip()},BN.prototype.ixor=function(num){return assert((this.negative|num.negative)===0),this.iuxor(num)},BN.prototype.xor=function(num){if(this.length>num.length)return this.clone().ixor(num);return num.clone().ixor(this)},BN.prototype.uxor=function(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)},BN.prototype.inotn=function(width){assert(typeof width===\"number\"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0,bitsLeft=width%26;if(this._expand(bytesNeeded),bitsLeft>0)bytesNeeded--;for(var i=0;i<bytesNeeded;i++)this.words[i]=~this.words[i]&67108863;if(bitsLeft>0)this.words[i]=~this.words[i]&67108863>>26-bitsLeft;return this.strip()},BN.prototype.notn=function(width){return this.clone().inotn(width)},BN.prototype.setn=function(bit,val){assert(typeof bit===\"number\"&&bit>=0);var off=bit/26|0,wbit=bit%26;if(this._expand(off+1),val)this.words[off]=this.words[off]|1<<wbit;else this.words[off]=this.words[off]&~(1<<wbit);return this.strip()},BN.prototype.iadd=function(num){var r;if(this.negative!==0&&num.negative===0)return this.negative=0,r=this.isub(num),this.negative^=1,this._normSign();else if(this.negative===0&&num.negative!==0)return num.negative=0,r=this.isub(num),num.negative=1,r._normSign();var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)+(b.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;if(this.length=a.length,carry!==0)this.words[this.length]=carry,this.length++;else if(a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];return this},BN.prototype.add=function(num){var res;if(num.negative!==0&&this.negative===0)return num.negative=0,res=this.sub(num),num.negative^=1,res;else if(num.negative===0&&this.negative!==0)return this.negative=0,res=num.sub(this),this.negative=1,res;if(this.length>num.length)return this.clone().iadd(num);return num.clone().iadd(this)},BN.prototype.isub=function(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);return num.negative=1,r._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(num),this.negative=1,this._normSign();var cmp=this.cmp(num);if(cmp===0)return this.negative=0,this.length=1,this.words[0]=0,this;var a,b;if(cmp>0)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)-(b.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;if(carry===0&&i<a.length&&a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];if(this.length=Math.max(this.length,i),a!==this)this.negative=1;return this.strip()},BN.prototype.sub=function(num){return this.clone().isub(num)};function smallMulTo(self2,num,out){out.negative=num.negative^self2.negative;var len=self2.length+num.length|0;out.length=len,len=len-1|0;var a=self2.words[0]|0,b=num.words[0]|0,r=a*b,lo=r&67108863,carry=r/67108864|0;out.words[0]=lo;for(var k=1;k<len;k++){var ncarry=carry>>>26,rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j|0;a=self2.words[i]|0,b=num.words[j]|0,r=a*b+rword,ncarry+=r/67108864|0,rword=r&67108863}out.words[k]=rword|0,carry=ncarry|0}if(carry!==0)out.words[k]=carry|0;else out.length--;return out.strip()}var comb10MulTo=function(self2,num,out){var a=self2.words,b=num.words,o=out.words,c=0,lo,mid,hi,a0=a[0]|0,al0=a0&8191,ah0=a0>>>13,a1=a[1]|0,al1=a1&8191,ah1=a1>>>13,a2=a[2]|0,al2=a2&8191,ah2=a2>>>13,a3=a[3]|0,al3=a3&8191,ah3=a3>>>13,a4=a[4]|0,al4=a4&8191,ah4=a4>>>13,a5=a[5]|0,al5=a5&8191,ah5=a5>>>13,a6=a[6]|0,al6=a6&8191,ah6=a6>>>13,a7=a[7]|0,al7=a7&8191,ah7=a7>>>13,a8=a[8]|0,al8=a8&8191,ah8=a8>>>13,a9=a[9]|0,al9=a9&8191,ah9=a9>>>13,b0=b[0]|0,bl0=b0&8191,bh0=b0>>>13,b1=b[1]|0,bl1=b1&8191,bh1=b1>>>13,b2=b[2]|0,bl2=b2&8191,bh2=b2>>>13,b3=b[3]|0,bl3=b3&8191,bh3=b3>>>13,b4=b[4]|0,bl4=b4&8191,bh4=b4>>>13,b5=b[5]|0,bl5=b5&8191,bh5=b5>>>13,b6=b[6]|0,bl6=b6&8191,bh6=b6>>>13,b7=b[7]|0,bl7=b7&8191,bh7=b7>>>13,b8=b[8]|0,bl8=b8&8191,bh8=b8>>>13,b9=b[9]|0,bl9=b9&8191,bh9=b9>>>13;out.negative=self2.negative^num.negative,out.length=19,lo=Math.imul(al0,bl0),mid=Math.imul(al0,bh0),mid=mid+Math.imul(ah0,bl0)|0,hi=Math.imul(ah0,bh0);var w0=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w0>>>26)|0,w0&=67108863,lo=Math.imul(al1,bl0),mid=Math.imul(al1,bh0),mid=mid+Math.imul(ah1,bl0)|0,hi=Math.imul(ah1,bh0),lo=lo+Math.imul(al0,bl1)|0,mid=mid+Math.imul(al0,bh1)|0,mid=mid+Math.imul(ah0,bl1)|0,hi=hi+Math.imul(ah0,bh1)|0;var w1=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w1>>>26)|0,w1&=67108863,lo=Math.imul(al2,bl0),mid=Math.imul(al2,bh0),mid=mid+Math.imul(ah2,bl0)|0,hi=Math.imul(ah2,bh0),lo=lo+Math.imul(al1,bl1)|0,mid=mid+Math.imul(al1,bh1)|0,mid=mid+Math.imul(ah1,bl1)|0,hi=hi+Math.imul(ah1,bh1)|0,lo=lo+Math.imul(al0,bl2)|0,mid=mid+Math.imul(al0,bh2)|0,mid=mid+Math.imul(ah0,bl2)|0,hi=hi+Math.imul(ah0,bh2)|0;var w2=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w2>>>26)|0,w2&=67108863,lo=Math.imul(al3,bl0),mid=Math.imul(al3,bh0),mid=mid+Math.imul(ah3,bl0)|0,hi=Math.imul(ah3,bh0),lo=lo+Math.imul(al2,bl1)|0,mid=mid+Math.imul(al2,bh1)|0,mid=mid+Math.imul(ah2,bl1)|0,hi=hi+Math.imul(ah2,bh1)|0,lo=lo+Math.imul(al1,bl2)|0,mid=mid+Math.imul(al1,bh2)|0,mid=mid+Math.imul(ah1,bl2)|0,hi=hi+Math.imul(ah1,bh2)|0,lo=lo+Math.imul(al0,bl3)|0,mid=mid+Math.imul(al0,bh3)|0,mid=mid+Math.imul(ah0,bl3)|0,hi=hi+Math.imul(ah0,bh3)|0;var w3=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w3>>>26)|0,w3&=67108863,lo=Math.imul(al4,bl0),mid=Math.imul(al4,bh0),mid=mid+Math.imul(ah4,bl0)|0,hi=Math.imul(ah4,bh0),lo=lo+Math.imul(al3,bl1)|0,mid=mid+Math.imul(al3,bh1)|0,mid=mid+Math.imul(ah3,bl1)|0,hi=hi+Math.imul(ah3,bh1)|0,lo=lo+Math.imul(al2,bl2)|0,mid=mid+Math.imul(al2,bh2)|0,mid=mid+Math.imul(ah2,bl2)|0,hi=hi+Math.imul(ah2,bh2)|0,lo=lo+Math.imul(al1,bl3)|0,mid=mid+Math.imul(al1,bh3)|0,mid=mid+Math.imul(ah1,bl3)|0,hi=hi+Math.imul(ah1,bh3)|0,lo=lo+Math.imul(al0,bl4)|0,mid=mid+Math.imul(al0,bh4)|0,mid=mid+Math.imul(ah0,bl4)|0,hi=hi+Math.imul(ah0,bh4)|0;var w4=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w4>>>26)|0,w4&=67108863,lo=Math.imul(al5,bl0),mid=Math.imul(al5,bh0),mid=mid+Math.imul(ah5,bl0)|0,hi=Math.imul(ah5,bh0),lo=lo+Math.imul(al4,bl1)|0,mid=mid+Math.imul(al4,bh1)|0,mid=mid+Math.imul(ah4,bl1)|0,hi=hi+Math.imul(ah4,bh1)|0,lo=lo+Math.imul(al3,bl2)|0,mid=mid+Math.imul(al3,bh2)|0,mid=mid+Math.imul(ah3,bl2)|0,hi=hi+Math.imul(ah3,bh2)|0,lo=lo+Math.imul(al2,bl3)|0,mid=mid+Math.imul(al2,bh3)|0,mid=mid+Math.imul(ah2,bl3)|0,hi=hi+Math.imul(ah2,bh3)|0,lo=lo+Math.imul(al1,bl4)|0,mid=mid+Math.imul(al1,bh4)|0,mid=mid+Math.imul(ah1,bl4)|0,hi=hi+Math.imul(ah1,bh4)|0,lo=lo+Math.imul(al0,bl5)|0,mid=mid+Math.imul(al0,bh5)|0,mid=mid+Math.imul(ah0,bl5)|0,hi=hi+Math.imul(ah0,bh5)|0;var w5=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w5>>>26)|0,w5&=67108863,lo=Math.imul(al6,bl0),mid=Math.imul(al6,bh0),mid=mid+Math.imul(ah6,bl0)|0,hi=Math.imul(ah6,bh0),lo=lo+Math.imul(al5,bl1)|0,mid=mid+Math.imul(al5,bh1)|0,mid=mid+Math.imul(ah5,bl1)|0,hi=hi+Math.imul(ah5,bh1)|0,lo=lo+Math.imul(al4,bl2)|0,mid=mid+Math.imul(al4,bh2)|0,mid=mid+Math.imul(ah4,bl2)|0,hi=hi+Math.imul(ah4,bh2)|0,lo=lo+Math.imul(al3,bl3)|0,mid=mid+Math.imul(al3,bh3)|0,mid=mid+Math.imul(ah3,bl3)|0,hi=hi+Math.imul(ah3,bh3)|0,lo=lo+Math.imul(al2,bl4)|0,mid=mid+Math.imul(al2,bh4)|0,mid=mid+Math.imul(ah2,bl4)|0,hi=hi+Math.imul(ah2,bh4)|0,lo=lo+Math.imul(al1,bl5)|0,mid=mid+Math.imul(al1,bh5)|0,mid=mid+Math.imul(ah1,bl5)|0,hi=hi+Math.imul(ah1,bh5)|0,lo=lo+Math.imul(al0,bl6)|0,mid=mid+Math.imul(al0,bh6)|0,mid=mid+Math.imul(ah0,bl6)|0,hi=hi+Math.imul(ah0,bh6)|0;var w6=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w6>>>26)|0,w6&=67108863,lo=Math.imul(al7,bl0),mid=Math.imul(al7,bh0),mid=mid+Math.imul(ah7,bl0)|0,hi=Math.imul(ah7,bh0),lo=lo+Math.imul(al6,bl1)|0,mid=mid+Math.imul(al6,bh1)|0,mid=mid+Math.imul(ah6,bl1)|0,hi=hi+Math.imul(ah6,bh1)|0,lo=lo+Math.imul(al5,bl2)|0,mid=mid+Math.imul(al5,bh2)|0,mid=mid+Math.imul(ah5,bl2)|0,hi=hi+Math.imul(ah5,bh2)|0,lo=lo+Math.imul(al4,bl3)|0,mid=mid+Math.imul(al4,bh3)|0,mid=mid+Math.imul(ah4,bl3)|0,hi=hi+Math.imul(ah4,bh3)|0,lo=lo+Math.imul(al3,bl4)|0,mid=mid+Math.imul(al3,bh4)|0,mid=mid+Math.imul(ah3,bl4)|0,hi=hi+Math.imul(ah3,bh4)|0,lo=lo+Math.imul(al2,bl5)|0,mid=mid+Math.imul(al2,bh5)|0,mid=mid+Math.imul(ah2,bl5)|0,hi=hi+Math.imul(ah2,bh5)|0,lo=lo+Math.imul(al1,bl6)|0,mid=mid+Math.imul(al1,bh6)|0,mid=mid+Math.imul(ah1,bl6)|0,hi=hi+Math.imul(ah1,bh6)|0,lo=lo+Math.imul(al0,bl7)|0,mid=mid+Math.imul(al0,bh7)|0,mid=mid+Math.imul(ah0,bl7)|0,hi=hi+Math.imul(ah0,bh7)|0;var w7=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w7>>>26)|0,w7&=67108863,lo=Math.imul(al8,bl0),mid=Math.imul(al8,bh0),mid=mid+Math.imul(ah8,bl0)|0,hi=Math.imul(ah8,bh0),lo=lo+Math.imul(al7,bl1)|0,mid=mid+Math.imul(al7,bh1)|0,mid=mid+Math.imul(ah7,bl1)|0,hi=hi+Math.imul(ah7,bh1)|0,lo=lo+Math.imul(al6,bl2)|0,mid=mid+Math.imul(al6,bh2)|0,mid=mid+Math.imul(ah6,bl2)|0,hi=hi+Math.imul(ah6,bh2)|0,lo=lo+Math.imul(al5,bl3)|0,mid=mid+Math.imul(al5,bh3)|0,mid=mid+Math.imul(ah5,bl3)|0,hi=hi+Math.imul(ah5,bh3)|0,lo=lo+Math.imul(al4,bl4)|0,mid=mid+Math.imul(al4,bh4)|0,mid=mid+Math.imul(ah4,bl4)|0,hi=hi+Math.imul(ah4,bh4)|0,lo=lo+Math.imul(al3,bl5)|0,mid=mid+Math.imul(al3,bh5)|0,mid=mid+Math.imul(ah3,bl5)|0,hi=hi+Math.imul(ah3,bh5)|0,lo=lo+Math.imul(al2,bl6)|0,mid=mid+Math.imul(al2,bh6)|0,mid=mid+Math.imul(ah2,bl6)|0,hi=hi+Math.imul(ah2,bh6)|0,lo=lo+Math.imul(al1,bl7)|0,mid=mid+Math.imul(al1,bh7)|0,mid=mid+Math.imul(ah1,bl7)|0,hi=hi+Math.imul(ah1,bh7)|0,lo=lo+Math.imul(al0,bl8)|0,mid=mid+Math.imul(al0,bh8)|0,mid=mid+Math.imul(ah0,bl8)|0,hi=hi+Math.imul(ah0,bh8)|0;var w8=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w8>>>26)|0,w8&=67108863,lo=Math.imul(al9,bl0),mid=Math.imul(al9,bh0),mid=mid+Math.imul(ah9,bl0)|0,hi=Math.imul(ah9,bh0),lo=lo+Math.imul(al8,bl1)|0,mid=mid+Math.imul(al8,bh1)|0,mid=mid+Math.imul(ah8,bl1)|0,hi=hi+Math.imul(ah8,bh1)|0,lo=lo+Math.imul(al7,bl2)|0,mid=mid+Math.imul(al7,bh2)|0,mid=mid+Math.imul(ah7,bl2)|0,hi=hi+Math.imul(ah7,bh2)|0,lo=lo+Math.imul(al6,bl3)|0,mid=mid+Math.imul(al6,bh3)|0,mid=mid+Math.imul(ah6,bl3)|0,hi=hi+Math.imul(ah6,bh3)|0,lo=lo+Math.imul(al5,bl4)|0,mid=mid+Math.imul(al5,bh4)|0,mid=mid+Math.imul(ah5,bl4)|0,hi=hi+Math.imul(ah5,bh4)|0,lo=lo+Math.imul(al4,bl5)|0,mid=mid+Math.imul(al4,bh5)|0,mid=mid+Math.imul(ah4,bl5)|0,hi=hi+Math.imul(ah4,bh5)|0,lo=lo+Math.imul(al3,bl6)|0,mid=mid+Math.imul(al3,bh6)|0,mid=mid+Math.imul(ah3,bl6)|0,hi=hi+Math.imul(ah3,bh6)|0,lo=lo+Math.imul(al2,bl7)|0,mid=mid+Math.imul(al2,bh7)|0,mid=mid+Math.imul(ah2,bl7)|0,hi=hi+Math.imul(ah2,bh7)|0,lo=lo+Math.imul(al1,bl8)|0,mid=mid+Math.imul(al1,bh8)|0,mid=mid+Math.imul(ah1,bl8)|0,hi=hi+Math.imul(ah1,bh8)|0,lo=lo+Math.imul(al0,bl9)|0,mid=mid+Math.imul(al0,bh9)|0,mid=mid+Math.imul(ah0,bl9)|0,hi=hi+Math.imul(ah0,bh9)|0;var w9=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w9>>>26)|0,w9&=67108863,lo=Math.imul(al9,bl1),mid=Math.imul(al9,bh1),mid=mid+Math.imul(ah9,bl1)|0,hi=Math.imul(ah9,bh1),lo=lo+Math.imul(al8,bl2)|0,mid=mid+Math.imul(al8,bh2)|0,mid=mid+Math.imul(ah8,bl2)|0,hi=hi+Math.imul(ah8,bh2)|0,lo=lo+Math.imul(al7,bl3)|0,mid=mid+Math.imul(al7,bh3)|0,mid=mid+Math.imul(ah7,bl3)|0,hi=hi+Math.imul(ah7,bh3)|0,lo=lo+Math.imul(al6,bl4)|0,mid=mid+Math.imul(al6,bh4)|0,mid=mid+Math.imul(ah6,bl4)|0,hi=hi+Math.imul(ah6,bh4)|0,lo=lo+Math.imul(al5,bl5)|0,mid=mid+Math.imul(al5,bh5)|0,mid=mid+Math.imul(ah5,bl5)|0,hi=hi+Math.imul(ah5,bh5)|0,lo=lo+Math.imul(al4,bl6)|0,mid=mid+Math.imul(al4,bh6)|0,mid=mid+Math.imul(ah4,bl6)|0,hi=hi+Math.imul(ah4,bh6)|0,lo=lo+Math.imul(al3,bl7)|0,mid=mid+Math.imul(al3,bh7)|0,mid=mid+Math.imul(ah3,bl7)|0,hi=hi+Math.imul(ah3,bh7)|0,lo=lo+Math.imul(al2,bl8)|0,mid=mid+Math.imul(al2,bh8)|0,mid=mid+Math.imul(ah2,bl8)|0,hi=hi+Math.imul(ah2,bh8)|0,lo=lo+Math.imul(al1,bl9)|0,mid=mid+Math.imul(al1,bh9)|0,mid=mid+Math.imul(ah1,bl9)|0,hi=hi+Math.imul(ah1,bh9)|0;var w10=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w10>>>26)|0,w10&=67108863,lo=Math.imul(al9,bl2),mid=Math.imul(al9,bh2),mid=mid+Math.imul(ah9,bl2)|0,hi=Math.imul(ah9,bh2),lo=lo+Math.imul(al8,bl3)|0,mid=mid+Math.imul(al8,bh3)|0,mid=mid+Math.imul(ah8,bl3)|0,hi=hi+Math.imul(ah8,bh3)|0,lo=lo+Math.imul(al7,bl4)|0,mid=mid+Math.imul(al7,bh4)|0,mid=mid+Math.imul(ah7,bl4)|0,hi=hi+Math.imul(ah7,bh4)|0,lo=lo+Math.imul(al6,bl5)|0,mid=mid+Math.imul(al6,bh5)|0,mid=mid+Math.imul(ah6,bl5)|0,hi=hi+Math.imul(ah6,bh5)|0,lo=lo+Math.imul(al5,bl6)|0,mid=mid+Math.imul(al5,bh6)|0,mid=mid+Math.imul(ah5,bl6)|0,hi=hi+Math.imul(ah5,bh6)|0,lo=lo+Math.imul(al4,bl7)|0,mid=mid+Math.imul(al4,bh7)|0,mid=mid+Math.imul(ah4,bl7)|0,hi=hi+Math.imul(ah4,bh7)|0,lo=lo+Math.imul(al3,bl8)|0,mid=mid+Math.imul(al3,bh8)|0,mid=mid+Math.imul(ah3,bl8)|0,hi=hi+Math.imul(ah3,bh8)|0,lo=lo+Math.imul(al2,bl9)|0,mid=mid+Math.imul(al2,bh9)|0,mid=mid+Math.imul(ah2,bl9)|0,hi=hi+Math.imul(ah2,bh9)|0;var w11=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w11>>>26)|0,w11&=67108863,lo=Math.imul(al9,bl3),mid=Math.imul(al9,bh3),mid=mid+Math.imul(ah9,bl3)|0,hi=Math.imul(ah9,bh3),lo=lo+Math.imul(al8,bl4)|0,mid=mid+Math.imul(al8,bh4)|0,mid=mid+Math.imul(ah8,bl4)|0,hi=hi+Math.imul(ah8,bh4)|0,lo=lo+Math.imul(al7,bl5)|0,mid=mid+Math.imul(al7,bh5)|0,mid=mid+Math.imul(ah7,bl5)|0,hi=hi+Math.imul(ah7,bh5)|0,lo=lo+Math.imul(al6,bl6)|0,mid=mid+Math.imul(al6,bh6)|0,mid=mid+Math.imul(ah6,bl6)|0,hi=hi+Math.imul(ah6,bh6)|0,lo=lo+Math.imul(al5,bl7)|0,mid=mid+Math.imul(al5,bh7)|0,mid=mid+Math.imul(ah5,bl7)|0,hi=hi+Math.imul(ah5,bh7)|0,lo=lo+Math.imul(al4,bl8)|0,mid=mid+Math.imul(al4,bh8)|0,mid=mid+Math.imul(ah4,bl8)|0,hi=hi+Math.imul(ah4,bh8)|0,lo=lo+Math.imul(al3,bl9)|0,mid=mid+Math.imul(al3,bh9)|0,mid=mid+Math.imul(ah3,bl9)|0,hi=hi+Math.imul(ah3,bh9)|0;var w12=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w12>>>26)|0,w12&=67108863,lo=Math.imul(al9,bl4),mid=Math.imul(al9,bh4),mid=mid+Math.imul(ah9,bl4)|0,hi=Math.imul(ah9,bh4),lo=lo+Math.imul(al8,bl5)|0,mid=mid+Math.imul(al8,bh5)|0,mid=mid+Math.imul(ah8,bl5)|0,hi=hi+Math.imul(ah8,bh5)|0,lo=lo+Math.imul(al7,bl6)|0,mid=mid+Math.imul(al7,bh6)|0,mid=mid+Math.imul(ah7,bl6)|0,hi=hi+Math.imul(ah7,bh6)|0,lo=lo+Math.imul(al6,bl7)|0,mid=mid+Math.imul(al6,bh7)|0,mid=mid+Math.imul(ah6,bl7)|0,hi=hi+Math.imul(ah6,bh7)|0,lo=lo+Math.imul(al5,bl8)|0,mid=mid+Math.imul(al5,bh8)|0,mid=mid+Math.imul(ah5,bl8)|0,hi=hi+Math.imul(ah5,bh8)|0,lo=lo+Math.imul(al4,bl9)|0,mid=mid+Math.imul(al4,bh9)|0,mid=mid+Math.imul(ah4,bl9)|0,hi=hi+Math.imul(ah4,bh9)|0;var w13=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w13>>>26)|0,w13&=67108863,lo=Math.imul(al9,bl5),mid=Math.imul(al9,bh5),mid=mid+Math.imul(ah9,bl5)|0,hi=Math.imul(ah9,bh5),lo=lo+Math.imul(al8,bl6)|0,mid=mid+Math.imul(al8,bh6)|0,mid=mid+Math.imul(ah8,bl6)|0,hi=hi+Math.imul(ah8,bh6)|0,lo=lo+Math.imul(al7,bl7)|0,mid=mid+Math.imul(al7,bh7)|0,mid=mid+Math.imul(ah7,bl7)|0,hi=hi+Math.imul(ah7,bh7)|0,lo=lo+Math.imul(al6,bl8)|0,mid=mid+Math.imul(al6,bh8)|0,mid=mid+Math.imul(ah6,bl8)|0,hi=hi+Math.imul(ah6,bh8)|0,lo=lo+Math.imul(al5,bl9)|0,mid=mid+Math.imul(al5,bh9)|0,mid=mid+Math.imul(ah5,bl9)|0,hi=hi+Math.imul(ah5,bh9)|0;var w14=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w14>>>26)|0,w14&=67108863,lo=Math.imul(al9,bl6),mid=Math.imul(al9,bh6),mid=mid+Math.imul(ah9,bl6)|0,hi=Math.imul(ah9,bh6),lo=lo+Math.imul(al8,bl7)|0,mid=mid+Math.imul(al8,bh7)|0,mid=mid+Math.imul(ah8,bl7)|0,hi=hi+Math.imul(ah8,bh7)|0,lo=lo+Math.imul(al7,bl8)|0,mid=mid+Math.imul(al7,bh8)|0,mid=mid+Math.imul(ah7,bl8)|0,hi=hi+Math.imul(ah7,bh8)|0,lo=lo+Math.imul(al6,bl9)|0,mid=mid+Math.imul(al6,bh9)|0,mid=mid+Math.imul(ah6,bl9)|0,hi=hi+Math.imul(ah6,bh9)|0;var w15=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w15>>>26)|0,w15&=67108863,lo=Math.imul(al9,bl7),mid=Math.imul(al9,bh7),mid=mid+Math.imul(ah9,bl7)|0,hi=Math.imul(ah9,bh7),lo=lo+Math.imul(al8,bl8)|0,mid=mid+Math.imul(al8,bh8)|0,mid=mid+Math.imul(ah8,bl8)|0,hi=hi+Math.imul(ah8,bh8)|0,lo=lo+Math.imul(al7,bl9)|0,mid=mid+Math.imul(al7,bh9)|0,mid=mid+Math.imul(ah7,bl9)|0,hi=hi+Math.imul(ah7,bh9)|0;var w16=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w16>>>26)|0,w16&=67108863,lo=Math.imul(al9,bl8),mid=Math.imul(al9,bh8),mid=mid+Math.imul(ah9,bl8)|0,hi=Math.imul(ah9,bh8),lo=lo+Math.imul(al8,bl9)|0,mid=mid+Math.imul(al8,bh9)|0,mid=mid+Math.imul(ah8,bl9)|0,hi=hi+Math.imul(ah8,bh9)|0;var w17=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w17>>>26)|0,w17&=67108863,lo=Math.imul(al9,bl9),mid=Math.imul(al9,bh9),mid=mid+Math.imul(ah9,bl9)|0,hi=Math.imul(ah9,bh9);var w18=(c+lo|0)+((mid&8191)<<13)|0;if(c=(hi+(mid>>>13)|0)+(w18>>>26)|0,w18&=67108863,o[0]=w0,o[1]=w1,o[2]=w2,o[3]=w3,o[4]=w4,o[5]=w5,o[6]=w6,o[7]=w7,o[8]=w8,o[9]=w9,o[10]=w10,o[11]=w11,o[12]=w12,o[13]=w13,o[14]=w14,o[15]=w15,o[16]=w16,o[17]=w17,o[18]=w18,c!==0)o[19]=c,out.length++;return out};if(!Math.imul)comb10MulTo=smallMulTo;function bigMulTo(self2,num,out){out.negative=num.negative^self2.negative,out.length=self2.length+num.length;var carry=0,hncarry=0;for(var k=0;k<out.length-1;k++){var ncarry=hncarry;hncarry=0;var rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j,a=self2.words[i]|0,b=num.words[j]|0,r=a*b,lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0,lo=lo+rword|0,rword=lo&67108863,ncarry=ncarry+(lo>>>26)|0,hncarry+=ncarry>>>26,ncarry&=67108863}out.words[k]=rword,carry=ncarry,ncarry=hncarry}if(carry!==0)out.words[k]=carry;else out.length--;return out.strip()}function jumboMulTo(self2,num,out){var fftm=new FFTM;return fftm.mulp(self2,num,out)}BN.prototype.mulTo=function(num,out){var res,len=this.length+num.length;if(this.length===10&&num.length===10)res=comb10MulTo(this,num,out);else if(len<63)res=smallMulTo(this,num,out);else if(len<1024)res=bigMulTo(this,num,out);else res=jumboMulTo(this,num,out);return res};function FFTM(x,y){this.x=x,this.y=y}FFTM.prototype.makeRBT=function(N){var t=Array(N),l=BN.prototype._countBits(N)-1;for(var i=0;i<N;i++)t[i]=this.revBin(i,l,N);return t},FFTM.prototype.revBin=function(x,l,N){if(x===0||x===N-1)return x;var rb=0;for(var i=0;i<l;i++)rb|=(x&1)<<l-i-1,x>>=1;return rb},FFTM.prototype.permute=function(rbt,rws,iws,rtws,itws,N){for(var i=0;i<N;i++)rtws[i]=rws[rbt[i]],itws[i]=iws[rbt[i]]},FFTM.prototype.transform=function(rws,iws,rtws,itws,N,rbt){this.permute(rbt,rws,iws,rtws,itws,N);for(var s=1;s<N;s<<=1){var l=s<<1,rtwdf=Math.cos(2*Math.PI/l),itwdf=Math.sin(2*Math.PI/l);for(var p=0;p<N;p+=l){var rtwdf_=rtwdf,itwdf_=itwdf;for(var j=0;j<s;j++){var re=rtws[p+j],ie=itws[p+j],ro=rtws[p+j+s],io=itws[p+j+s],rx=rtwdf_*ro-itwdf_*io;if(io=rtwdf_*io+itwdf_*ro,ro=rx,rtws[p+j]=re+ro,itws[p+j]=ie+io,rtws[p+j+s]=re-ro,itws[p+j+s]=ie-io,j!==l)rx=rtwdf*rtwdf_-itwdf*itwdf_,itwdf_=rtwdf*itwdf_+itwdf*rtwdf_,rtwdf_=rx}}}},FFTM.prototype.guessLen13b=function(n,m){var N=Math.max(m,n)|1,odd=N&1,i=0;for(N=N/2|0;N;N=N>>>1)i++;return 1<<i+1+odd},FFTM.prototype.conjugate=function(rws,iws,N){if(N<=1)return;for(var i=0;i<N/2;i++){var t=rws[i];rws[i]=rws[N-i-1],rws[N-i-1]=t,t=iws[i],iws[i]=-iws[N-i-1],iws[N-i-1]=-t}},FFTM.prototype.normalize13b=function(ws,N){var carry=0;for(var i=0;i<N/2;i++){var w=Math.round(ws[2*i+1]/N)*8192+Math.round(ws[2*i]/N)+carry;if(ws[i]=w&67108863,w<67108864)carry=0;else carry=w/67108864|0}return ws},FFTM.prototype.convert13b=function(ws,len,rws,N){var carry=0;for(var i=0;i<len;i++)carry=carry+(ws[i]|0),rws[2*i]=carry&8191,carry=carry>>>13,rws[2*i+1]=carry&8191,carry=carry>>>13;for(i=2*len;i<N;++i)rws[i]=0;assert(carry===0),assert((carry&-8192)===0)},FFTM.prototype.stub=function(N){var ph=Array(N);for(var i=0;i<N;i++)ph[i]=0;return ph},FFTM.prototype.mulp=function(x,y,out){var N=2*this.guessLen13b(x.length,y.length),rbt=this.makeRBT(N),_=this.stub(N),rws=Array(N),rwst=Array(N),iwst=Array(N),nrws=Array(N),nrwst=Array(N),niwst=Array(N),rmws=out.words;rmws.length=N,this.convert13b(x.words,x.length,rws,N),this.convert13b(y.words,y.length,nrws,N),this.transform(rws,_,rwst,iwst,N,rbt),this.transform(nrws,_,nrwst,niwst,N,rbt);for(var i=0;i<N;i++){var rx=rwst[i]*nrwst[i]-iwst[i]*niwst[i];iwst[i]=rwst[i]*niwst[i]+iwst[i]*nrwst[i],rwst[i]=rx}return this.conjugate(rwst,iwst,N),this.transform(rwst,iwst,rmws,_,N,rbt),this.conjugate(rmws,_,N),this.normalize13b(rmws,N),out.negative=x.negative^y.negative,out.length=x.length+y.length,out.strip()},BN.prototype.mul=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),this.mulTo(num,out)},BN.prototype.mulf=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),jumboMulTo(this,num,out)},BN.prototype.imul=function(num){return this.clone().mulTo(num,this)},BN.prototype.imuln=function(num){assert(typeof num===\"number\"),assert(num<67108864);var carry=0;for(var i=0;i<this.length;i++){var w=(this.words[i]|0)*num,lo=(w&67108863)+(carry&67108863);carry>>=26,carry+=w/67108864|0,carry+=lo>>>26,this.words[i]=lo&67108863}if(carry!==0)this.words[i]=carry,this.length++;return this.length=num===0?1:this.length,this},BN.prototype.muln=function(num){return this.clone().imuln(num)},BN.prototype.sqr=function(){return this.mul(this)},BN.prototype.isqr=function(){return this.imul(this.clone())},BN.prototype.pow=function(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i<w.length;i++,res=res.sqr())if(w[i]!==0)break;if(++i<w.length)for(var q=res.sqr();i<w.length;i++,q=q.sqr()){if(w[i]===0)continue;res=res.mul(q)}return res},BN.prototype.iushln=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26,carryMask=67108863>>>26-r<<26-r,i;if(r!==0){var carry=0;for(i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask,c=(this.words[i]|0)-newCarry<<r;this.words[i]=c|carry,carry=newCarry>>>26-r}if(carry)this.words[i]=carry,this.length++}if(s!==0){for(i=this.length-1;i>=0;i--)this.words[i+s]=this.words[i];for(i=0;i<s;i++)this.words[i]=0;this.length+=s}return this.strip()},BN.prototype.ishln=function(bits){return assert(this.negative===0),this.iushln(bits)},BN.prototype.iushrn=function(bits,hint,extended){assert(typeof bits===\"number\"&&bits>=0);var h;if(hint)h=(hint-hint%26)/26;else h=0;var r=bits%26,s=Math.min((bits-r)/26,this.length),mask=67108863^67108863>>>r<<r,maskedWords=extended;if(h-=s,h=Math.max(0,h),maskedWords){for(var i=0;i<s;i++)maskedWords.words[i]=this.words[i];maskedWords.length=s}if(s===0);else if(this.length>s){this.length-=s;for(i=0;i<this.length;i++)this.words[i]=this.words[i+s]}else this.words[0]=0,this.length=1;var carry=0;for(i=this.length-1;i>=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r,carry=word&mask}if(maskedWords&&carry!==0)maskedWords.words[maskedWords.length++]=carry;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},BN.prototype.ishrn=function(bits,hint,extended){return assert(this.negative===0),this.iushrn(bits,hint,extended)},BN.prototype.shln=function(bits){return this.clone().ishln(bits)},BN.prototype.ushln=function(bits){return this.clone().iushln(bits)},BN.prototype.shrn=function(bits){return this.clone().ishrn(bits)},BN.prototype.ushrn=function(bits){return this.clone().iushrn(bits)},BN.prototype.testn=function(bit){assert(typeof bit===\"number\"&&bit>=0);var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return!1;var w=this.words[s];return!!(w&q)},BN.prototype.imaskn=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26;if(assert(this.negative===0,\"imaskn works only with positive numbers\"),this.length<=s)return this;if(r!==0)s++;if(this.length=Math.min(s,this.length),r!==0){var mask=67108863^67108863>>>r<<r;this.words[this.length-1]&=mask}return this.strip()},BN.prototype.maskn=function(bits){return this.clone().imaskn(bits)},BN.prototype.iaddn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.isubn(-num);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<num)return this.words[0]=num-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(num),this.negative=1,this}return this._iaddn(num)},BN.prototype._iaddn=function(num){this.words[0]+=num;for(var i=0;i<this.length&&this.words[i]>=67108864;i++)if(this.words[i]-=67108864,i===this.length-1)this.words[i+1]=1;else this.words[i+1]++;return this.length=Math.max(this.length,i+1),this},BN.prototype.isubn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.iaddn(-num);if(this.negative!==0)return this.negative=0,this.iaddn(num),this.negative=1,this;if(this.words[0]-=num,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var i=0;i<this.length&&this.words[i]<0;i++)this.words[i]+=67108864,this.words[i+1]-=1;return this.strip()},BN.prototype.addn=function(num){return this.clone().iaddn(num)},BN.prototype.subn=function(num){return this.clone().isubn(num)},BN.prototype.iabs=function(){return this.negative=0,this},BN.prototype.abs=function(){return this.clone().iabs()},BN.prototype._ishlnsubmul=function(num,mul,shift){var len=num.length+shift,i;this._expand(len);var w,carry=0;for(i=0;i<num.length;i++){w=(this.words[i+shift]|0)+carry;var right=(num.words[i]|0)*mul;w-=right&67108863,carry=(w>>26)-(right/67108864|0),this.words[i+shift]=w&67108863}for(;i<this.length-shift;i++)w=(this.words[i+shift]|0)+carry,carry=w>>26,this.words[i+shift]=w&67108863;if(carry===0)return this.strip();assert(carry===-1),carry=0;for(i=0;i<this.length;i++)w=-(this.words[i]|0)+carry,carry=w>>26,this.words[i]=w&67108863;return this.negative=1,this.strip()},BN.prototype._wordDiv=function(num,mode){var shift=this.length-num.length,a=this.clone(),b=num,bhi=b.words[b.length-1]|0,bhiBits=this._countBits(bhi);if(shift=26-bhiBits,shift!==0)b=b.ushln(shift),a.iushln(shift),bhi=b.words[b.length-1]|0;var m=a.length-b.length,q;if(mode!==\"mod\"){q=new BN(null),q.length=m+1,q.words=Array(q.length);for(var i=0;i<q.length;i++)q.words[i]=0}var diff=a.clone()._ishlnsubmul(b,1,m);if(diff.negative===0){if(a=diff,q)q.words[m]=1}for(var j=m-1;j>=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863),a._ishlnsubmul(b,qj,j);while(a.negative!==0)if(qj--,a.negative=0,a._ishlnsubmul(b,1,j),!a.isZero())a.negative^=1;if(q)q.words[j]=qj}if(q)q.strip();if(a.strip(),mode!==\"div\"&&shift!==0)a.iushrn(shift);return{div:q||null,mod:a}},BN.prototype.divmod=function(num,mode,positive){if(assert(!num.isZero()),this.isZero())return{div:new BN(0),mod:new BN(0)};var div,mod,res;if(this.negative!==0&&num.negative===0){if(res=this.neg().divmod(num,mode),mode!==\"mod\")div=res.div.neg();if(mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.iadd(num)}return{div,mod}}if(this.negative===0&&num.negative!==0){if(res=this.divmod(num.neg(),mode),mode!==\"mod\")div=res.div.neg();return{div,mod:res.mod}}if((this.negative&num.negative)!==0){if(res=this.neg().divmod(num.neg(),mode),mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.isub(num)}return{div:res.div,mod}}if(num.length>this.length||this.cmp(num)<0)return{div:new BN(0),mod:this};if(num.length===1){if(mode===\"div\")return{div:this.divn(num.words[0]),mod:null};if(mode===\"mod\")return{div:null,mod:new BN(this.modn(num.words[0]))};return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))}}return this._wordDiv(num,mode)},BN.prototype.div=function(num){return this.divmod(num,\"div\",!1).div},BN.prototype.mod=function(num){return this.divmod(num,\"mod\",!1).mod},BN.prototype.umod=function(num){return this.divmod(num,\"mod\",!0).mod},BN.prototype.divRound=function(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod,half=num.ushrn(1),r2=num.andln(1),cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)},BN.prototype.modn=function(num){assert(num<=67108863);var p=67108864%num,acc=0;for(var i=this.length-1;i>=0;i--)acc=(p*acc+(this.words[i]|0))%num;return acc},BN.prototype.idivn=function(num){assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0,carry=w%num}return this.strip()},BN.prototype.divn=function(num){return this.clone().idivn(num)},BN.prototype.egcd=function(p){assert(p.negative===0),assert(!p.isZero());var x=this,y=p.clone();if(x.negative!==0)x=x.umod(p);else x=x.clone();var A=new BN(1),B=new BN(0),C=new BN(0),D=new BN(1),g=0;while(x.isEven()&&y.isEven())x.iushrn(1),y.iushrn(1),++g;var yp=y.clone(),xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd())A.iadd(yp),B.isub(xp);A.iushrn(1),B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd())C.iadd(yp),D.isub(xp);C.iushrn(1),D.iushrn(1)}}if(x.cmp(y)>=0)x.isub(y),A.isub(C),B.isub(D);else y.isub(x),C.isub(A),D.isub(B)}return{a:C,b:D,gcd:y.iushln(g)}},BN.prototype._invmp=function(p){assert(p.negative===0),assert(!p.isZero());var a=this,b=p.clone();if(a.negative!==0)a=a.umod(p);else a=a.clone();var x1=new BN(1),x2=new BN(0),delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd())x1.iadd(delta);x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd())x2.iadd(delta);x2.iushrn(1)}}if(a.cmp(b)>=0)a.isub(b),x1.isub(x2);else b.isub(a),x2.isub(x1)}var res;if(a.cmpn(1)===0)res=x1;else res=x2;if(res.cmpn(0)<0)res.iadd(p);return res},BN.prototype.gcd=function(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone(),b=num.clone();a.negative=0,b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++)a.iushrn(1),b.iushrn(1);do{while(a.isEven())a.iushrn(1);while(b.isEven())b.iushrn(1);var r=a.cmp(b);if(r<0){var t=a;a=b,b=t}else if(r===0||b.cmpn(1)===0)break;a.isub(b)}while(!0);return b.iushln(shift)},BN.prototype.invm=function(num){return this.egcd(num).a.umod(num)},BN.prototype.isEven=function(){return(this.words[0]&1)===0},BN.prototype.isOdd=function(){return(this.words[0]&1)===1},BN.prototype.andln=function(num){return this.words[0]&num},BN.prototype.bincn=function(bit){assert(typeof bit===\"number\");var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return this._expand(s+1),this.words[s]|=q,this;var carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i]|0;w+=carry,carry=w>>>26,w&=67108863,this.words[i]=w}if(carry!==0)this.words[i]=carry,this.length++;return this},BN.prototype.isZero=function(){return this.length===1&&this.words[0]===0},BN.prototype.cmpn=function(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this.strip();var res;if(this.length>1)res=1;else{if(negative)num=-num;assert(num<=67108863,\"Number is too big\");var w=this.words[0]|0;res=w===num?0:w<num?-1:1}if(this.negative!==0)return-res|0;return res},BN.prototype.cmp=function(num){if(this.negative!==0&&num.negative===0)return-1;if(this.negative===0&&num.negative!==0)return 1;var res=this.ucmp(num);if(this.negative!==0)return-res|0;return res},BN.prototype.ucmp=function(num){if(this.length>num.length)return 1;if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i]|0,b=num.words[i]|0;if(a===b)continue;if(a<b)res=-1;else if(a>b)res=1;break}return res},BN.prototype.gtn=function(num){return this.cmpn(num)===1},BN.prototype.gt=function(num){return this.cmp(num)===1},BN.prototype.gten=function(num){return this.cmpn(num)>=0},BN.prototype.gte=function(num){return this.cmp(num)>=0},BN.prototype.ltn=function(num){return this.cmpn(num)===-1},BN.prototype.lt=function(num){return this.cmp(num)===-1},BN.prototype.lten=function(num){return this.cmpn(num)<=0},BN.prototype.lte=function(num){return this.cmp(num)<=0},BN.prototype.eqn=function(num){return this.cmpn(num)===0},BN.prototype.eq=function(num){return this.cmp(num)===0},BN.red=function(num){return new Red(num)},BN.prototype.toRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),assert(this.negative===0,\"red works only with positives\"),ctx.convertTo(this)._forceRed(ctx)},BN.prototype.fromRed=function(){return assert(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},BN.prototype._forceRed=function(ctx){return this.red=ctx,this},BN.prototype.forceRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),this._forceRed(ctx)},BN.prototype.redAdd=function(num){return assert(this.red,\"redAdd works only with red numbers\"),this.red.add(this,num)},BN.prototype.redIAdd=function(num){return assert(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,num)},BN.prototype.redSub=function(num){return assert(this.red,\"redSub works only with red numbers\"),this.red.sub(this,num)},BN.prototype.redISub=function(num){return assert(this.red,\"redISub works only with red numbers\"),this.red.isub(this,num)},BN.prototype.redShl=function(num){return assert(this.red,\"redShl works only with red numbers\"),this.red.shl(this,num)},BN.prototype.redMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.mul(this,num)},BN.prototype.redIMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.imul(this,num)},BN.prototype.redSqr=function(){return assert(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},BN.prototype.redISqr=function(){return assert(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},BN.prototype.redSqrt=function(){return assert(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},BN.prototype.redInvm=function(){return assert(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},BN.prototype.redNeg=function(){return assert(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},BN.prototype.redPow=function(num){return assert(this.red&&!num.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name,this.p=new BN(p,16),this.n=this.p.bitLength(),this.k=new BN(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}MPrime.prototype._tmp=function(){var tmp=new BN(null);return tmp.words=Array(Math.ceil(this.n/13)),tmp},MPrime.prototype.ireduce=function(num){var r=num,rlen;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),rlen=r.bitLength();while(rlen>this.n);var cmp=rlen<this.n?-1:r.ucmp(this.p);if(cmp===0)r.words[0]=0,r.length=1;else if(cmp>0)r.isub(this.p);else if(r.strip!==void 0)r.strip();else r._strip();return r},MPrime.prototype.split=function(input,out){input.iushrn(this.n,0,out)},MPrime.prototype.imulK=function(num){return num.imul(this.k)};function K256(){MPrime.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}inherits(K256,MPrime),K256.prototype.split=function(input,output){var mask=4194303,outLen=Math.min(input.length,9);for(var i=0;i<outLen;i++)output.words[i]=input.words[i];if(output.length=outLen,input.length<=9){input.words[0]=0,input.length=1;return}var prev=input.words[9];output.words[output.length++]=prev&mask;for(i=10;i<input.length;i++){var next=input.words[i]|0;input.words[i-10]=(next&mask)<<4|prev>>>22,prev=next}if(prev>>>=22,input.words[i-10]=prev,prev===0&&input.length>10)input.length-=10;else input.length-=9},K256.prototype.imulK=function(num){num.words[num.length]=0,num.words[num.length+1]=0,num.length+=2;var lo=0;for(var i=0;i<num.length;i++){var w=num.words[i]|0;lo+=w*977,num.words[i]=lo&67108863,lo=w*64+(lo/67108864|0)}if(num.words[num.length-1]===0){if(num.length--,num.words[num.length-1]===0)num.length--}return num};function P224(){MPrime.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}inherits(P224,MPrime);function P192(){MPrime.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}inherits(P192,MPrime);function P25519(){MPrime.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}inherits(P25519,MPrime),P25519.prototype.imulK=function(num){var carry=0;for(var i=0;i<num.length;i++){var hi=(num.words[i]|0)*19+carry,lo=hi&67108863;hi>>>=26,num.words[i]=lo,carry=hi}if(carry!==0)num.words[num.length++]=carry;return num},BN._prime=function(name){if(primes[name])return primes[name];var prime;if(name===\"k256\")prime=new K256;else if(name===\"p224\")prime=new P224;else if(name===\"p192\")prime=new P192;else if(name===\"p25519\")prime=new P25519;else throw Error(\"Unknown prime \"+name);return primes[name]=prime,prime};function Red(m){if(typeof m===\"string\"){var prime=BN._prime(m);this.m=prime.p,this.prime=prime}else assert(m.gtn(1),\"modulus must be greater than 1\"),this.m=m,this.prime=null}Red.prototype._verify1=function(a){assert(a.negative===0,\"red works only with positives\"),assert(a.red,\"red works only with red numbers\")},Red.prototype._verify2=function(a,b){assert((a.negative|b.negative)===0,\"red works only with positives\"),assert(a.red&&a.red===b.red,\"red works only with red numbers\")},Red.prototype.imod=function(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.umod(this.m)._forceRed(this)},Red.prototype.neg=function(a){if(a.isZero())return a.clone();return this.m.sub(a)._forceRed(this)},Red.prototype.add=function(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res._forceRed(this)},Red.prototype.iadd=function(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res},Red.prototype.sub=function(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res._forceRed(this)},Red.prototype.isub=function(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res},Red.prototype.shl=function(a,num){return this._verify1(a),this.imod(a.ushln(num))},Red.prototype.imul=function(a,b){return this._verify2(a,b),this.imod(a.imul(b))},Red.prototype.mul=function(a,b){return this._verify2(a,b),this.imod(a.mul(b))},Red.prototype.isqr=function(a){return this.imul(a,a.clone())},Red.prototype.sqr=function(a){return this.mul(a,a)},Red.prototype.sqrt=function(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);if(assert(mod3%2===1),mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1),s=0;while(!q.isZero()&&q.andln(1)===0)s++,q.iushrn(1);assert(!q.isZero());var one=new BN(1).toRed(this),nOne=one.redNeg(),lpow=this.m.subn(1).iushrn(1),z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0)z.redIAdd(nOne);var c=this.pow(z,q),r=this.pow(a,q.addn(1).iushrn(1)),t=this.pow(a,q),m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++)tmp=tmp.redSqr();assert(i<m);var b=this.pow(c,new BN(1).iushln(m-i-1));r=r.redMul(b),c=b.redSqr(),t=t.redMul(c),m=i}return r},Red.prototype.invm=function(a){var inv=a._invmp(this.m);if(inv.negative!==0)return inv.negative=0,this.imod(inv).redNeg();else return this.imod(inv)},Red.prototype.pow=function(a,num){if(num.isZero())return new BN(1).toRed(this);if(num.cmpn(1)===0)return a.clone();var windowSize=4,wnd=Array(1<<windowSize);wnd[0]=new BN(1).toRed(this),wnd[1]=a;for(var i=2;i<wnd.length;i++)wnd[i]=this.mul(wnd[i-1],a);var res=wnd[0],current=0,currentLen=0,start=num.bitLength()%26;if(start===0)start=26;for(i=num.length-1;i>=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0])res=this.sqr(res);if(bit===0&&current===0){currentLen=0;continue}if(current<<=1,current|=bit,currentLen++,currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]),currentLen=0,current=0}start=26}return res},Red.prototype.convertTo=function(num){var r=num.umod(this.m);return r===num?r.clone():r},Red.prototype.convertFrom=function(num){var res=num.clone();return res.red=null,res},BN.mont=function(num){return new Mont(num)};function Mont(m){if(Red.call(this,m),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new BN(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}inherits(Mont,Red),Mont.prototype.convertTo=function(num){return this.imod(num.ushln(this.shift))},Mont.prototype.convertFrom=function(num){var r=this.imod(num.mul(this.rinv));return r.red=null,r},Mont.prototype.imul=function(a,b){if(a.isZero()||b.isZero())return a.words[0]=0,a.length=1,a;var t=a.imul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.mul=function(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.invm=function(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(typeof module>\"u\"||module,exports)});var require_browser=__commonJS((exports,module)=>{var elliptic=require_elliptic(),BN=require_bn2();module.exports=function(curve){return new ECDH(curve)};var aliases={secp256k1:{name:\"secp256k1\",byteLength:32},secp224r1:{name:\"p224\",byteLength:28},prime256v1:{name:\"p256\",byteLength:32},prime192v1:{name:\"p192\",byteLength:24},ed25519:{name:\"ed25519\",byteLength:32},secp384r1:{name:\"p384\",byteLength:48},secp521r1:{name:\"p521\",byteLength:66}};aliases.p224=aliases.secp224r1;aliases.p256=aliases.secp256r1=aliases.prime256v1;aliases.p192=aliases.secp192r1=aliases.prime192v1;aliases.p384=aliases.secp384r1;aliases.p521=aliases.secp521r1;function ECDH(curve){if(this.curveType=aliases[curve],!this.curveType)this.curveType={name:curve};this.curve=new elliptic.ec(this.curveType.name),this.keys=void 0}ECDH.prototype.generateKeys=function(enc,format){return this.keys=this.curve.genKeyPair(),this.getPublicKey(enc,format)};ECDH.prototype.computeSecret=function(other,inenc,enc){if(inenc=inenc||\"utf8\",!Buffer.isBuffer(other))other=new Buffer(other,inenc);var otherPub=this.curve.keyFromPublic(other).getPublic(),out=otherPub.mul(this.keys.getPrivate()).getX();return formatReturnValue(out,enc,this.curveType.byteLength)};ECDH.prototype.getPublicKey=function(enc,format){var key=this.keys.getPublic(format===\"compressed\",!0);if(format===\"hybrid\")if(key[key.length-1]%2)key[0]=7;else key[0]=6;return formatReturnValue(key,enc)};ECDH.prototype.getPrivateKey=function(enc){return formatReturnValue(this.keys.getPrivate(),enc)};ECDH.prototype.setPublicKey=function(pub,enc){if(enc=enc||\"utf8\",!Buffer.isBuffer(pub))pub=new Buffer(pub,enc);return this.keys._importPublic(pub),this};ECDH.prototype.setPrivateKey=function(priv,enc){if(enc=enc||\"utf8\",!Buffer.isBuffer(priv))priv=new Buffer(priv,enc);var _priv=new BN(priv);return _priv=_priv.toString(16),this.keys=this.curve.genKeyPair(),this.keys._importPrivate(_priv),this};function formatReturnValue(bn,enc,len){if(!Array.isArray(bn))bn=bn.toArray();var buf=new Buffer(bn);if(len&&buf.length<len){var zeros=new Buffer(len-buf.length);zeros.fill(0),buf=Buffer.concat([zeros,buf])}if(!enc)return buf;else return buf.toString(enc)}});var require_create_ecdh=__commonJS((exports,module)=>{var createECDH=require(\"crypto\").createECDH;module.exports=createECDH||require_browser()});var require_bn3=__commonJS((exports,module)=>{(function(module2,exports2){function assert(val,msg){if(!val)throw Error(msg||\"Assertion failed\")}function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype,ctor.prototype=new TempCtor,ctor.prototype.constructor=ctor}function BN(number,base,endian){if(BN.isBN(number))return number;if(this.negative=0,this.words=null,this.length=0,this.red=null,number!==null){if(base===\"le\"||base===\"be\")endian=base,base=10;this._init(number||0,base||10,endian||\"be\")}}if(typeof module2===\"object\")module2.exports=BN;else exports2.BN=BN;BN.BN=BN,BN.wordSize=26;var Buffer2;try{if(typeof window<\"u\"&&typeof window.Buffer<\"u\")Buffer2=window.Buffer;else Buffer2=require(\"buffer\").Buffer}catch(e){}BN.isBN=function(num){if(num instanceof BN)return!0;return num!==null&&typeof num===\"object\"&&num.constructor.wordSize===BN.wordSize&&Array.isArray(num.words)},BN.max=function(left,right){if(left.cmp(right)>0)return left;return right},BN.min=function(left,right){if(left.cmp(right)<0)return left;return right},BN.prototype._init=function(number,base,endian){if(typeof number===\"number\")return this._initNumber(number,base,endian);if(typeof number===\"object\")return this._initArray(number,base,endian);if(base===\"hex\")base=16;assert(base===(base|0)&&base>=2&&base<=36),number=number.toString().replace(/\\s+/g,\"\");var start=0;if(number[0]===\"-\")start++,this.negative=1;if(start<number.length){if(base===16)this._parseHex(number,start,endian);else if(this._parseBase(number,base,start),endian===\"le\")this._initArray(this.toArray(),base,endian)}},BN.prototype._initNumber=function(number,base,endian){if(number<0)this.negative=1,number=-number;if(number<67108864)this.words=[number&67108863],this.length=1;else if(number<4503599627370496)this.words=[number&67108863,number/67108864&67108863],this.length=2;else assert(number<9007199254740992),this.words=[number&67108863,number/67108864&67108863,1],this.length=3;if(endian!==\"le\")return;this._initArray(this.toArray(),base,endian)},BN.prototype._initArray=function(number,base,endian){if(assert(typeof number.length===\"number\"),number.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(number.length/3),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var j,w,off=0;if(endian===\"be\"){for(i=number.length-1,j=0;i>=0;i-=3)if(w=number[i]|number[i-1]<<8|number[i-2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}else if(endian===\"le\"){for(i=0,j=0;i<number.length;i+=3)if(w=number[i]|number[i+1]<<8|number[i+2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}return this.strip()};function parseHex4Bits(string,index){var c=string.charCodeAt(index);if(c>=65&&c<=70)return c-55;else if(c>=97&&c<=102)return c-87;else return c-48&15}function parseHexByte(string,lowerBound,index){var r=parseHex4Bits(string,index);if(index-1>=lowerBound)r|=parseHex4Bits(string,index-1)<<4;return r}BN.prototype._parseHex=function(number,start,endian){this.length=Math.ceil((number.length-start)/6),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var off=0,j=0,w;if(endian===\"be\")for(i=number.length-1;i>=start;i-=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8;else{var parseLength=number.length-start;for(i=parseLength%2===0?start+1:start;i<number.length;i+=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8}this.strip()};function parseBase(str,start,end,mul){var r=0,len=Math.min(str.length,end);for(var i=start;i<len;i++){var c=str.charCodeAt(i)-48;if(r*=mul,c>=49)r+=c-49+10;else if(c>=17)r+=c-17+10;else r+=c}return r}BN.prototype._parseBase=function(number,base,start){this.words=[0],this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base)limbLen++;limbLen--,limbPow=limbPow/base|0;var total=number.length-start,mod=total%limbLen,end=Math.min(total,total-mod)+start,word=0;for(var i=start;i<end;i+=limbLen)if(word=parseBase(number,i,i+limbLen,base),this.imuln(limbPow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word);if(mod!==0){var pow=1;word=parseBase(number,i,number.length,base);for(i=0;i<mod;i++)pow*=base;if(this.imuln(pow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word)}this.strip()},BN.prototype.copy=function(dest){dest.words=Array(this.length);for(var i=0;i<this.length;i++)dest.words[i]=this.words[i];dest.length=this.length,dest.negative=this.negative,dest.red=this.red},BN.prototype.clone=function(){var r=new BN(null);return this.copy(r),r},BN.prototype._expand=function(size){while(this.length<size)this.words[this.length++]=0;return this},BN.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},BN.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},BN.prototype.inspect=function(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var zeros=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(BN.prototype.toString=function(base,padding){base=base||10,padding=padding|0||1;var out;if(base===16||base===\"hex\"){out=\"\";var off=0,carry=0;for(var i=0;i<this.length;i++){var w=this.words[i],word=((w<<off|carry)&16777215).toString(16);if(carry=w>>>24-off&16777215,off+=2,off>=26)off-=26,i--;if(carry!==0||i!==this.length-1)out=zeros[6-word.length]+word+out;else out=word+out}if(carry!==0)out=carry.toString(16)+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base],groupBase=groupBases[base];out=\"\";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modn(groupBase).toString(base);if(c=c.idivn(groupBase),!c.isZero())out=zeros[groupSize-r.length]+r+out;else out=r+out}if(this.isZero())out=\"0\"+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}assert(!1,\"Base should be between 2 and 36\")},BN.prototype.toNumber=function(){var ret=this.words[0];if(this.length===2)ret+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)ret+=4503599627370496+this.words[1]*67108864;else if(this.length>2)assert(!1,\"Number can only safely store up to 53 bits\");return this.negative!==0?-ret:ret},BN.prototype.toJSON=function(){return this.toString(16)},BN.prototype.toBuffer=function(endian,length){return assert(typeof Buffer2<\"u\"),this.toArrayLike(Buffer2,endian,length)},BN.prototype.toArray=function(endian,length){return this.toArrayLike(Array,endian,length)},BN.prototype.toArrayLike=function(ArrayType,endian,length){var byteLength=this.byteLength(),reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,\"byte array longer than desired length\"),assert(reqLength>0,\"Requested array length <= 0\"),this.strip();var littleEndian=endian===\"le\",res=new ArrayType(reqLength),b,i,q=this.clone();if(!littleEndian){for(i=0;i<reqLength-byteLength;i++)res[i]=0;for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[reqLength-i-1]=b}else{for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[i]=b;for(;i<reqLength;i++)res[i]=0}return res},Math.clz32)BN.prototype._countBits=function(w){return 32-Math.clz32(w)};else BN.prototype._countBits=function(w){var t=w,r=0;if(t>=4096)r+=13,t>>>=13;if(t>=64)r+=7,t>>>=7;if(t>=8)r+=4,t>>>=4;if(t>=2)r+=2,t>>>=2;return r+t};BN.prototype._zeroBits=function(w){if(w===0)return 26;var t=w,r=0;if((t&8191)===0)r+=13,t>>>=13;if((t&127)===0)r+=7,t>>>=7;if((t&15)===0)r+=4,t>>>=4;if((t&3)===0)r+=2,t>>>=2;if((t&1)===0)r++;return r},BN.prototype.bitLength=function(){var w=this.words[this.length-1],hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=Array(num.bitLength());for(var bit=0;bit<w.length;bit++){var off=bit/26|0,wbit=bit%26;w[bit]=(num.words[off]&1<<wbit)>>>wbit}return w}BN.prototype.zeroBits=function(){if(this.isZero())return 0;var r=0;for(var i=0;i<this.length;i++){var b=this._zeroBits(this.words[i]);if(r+=b,b!==26)break}return r},BN.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},BN.prototype.toTwos=function(width){if(this.negative!==0)return this.abs().inotn(width).iaddn(1);return this.clone()},BN.prototype.fromTwos=function(width){if(this.testn(width-1))return this.notn(width).iaddn(1).ineg();return this.clone()},BN.prototype.isNeg=function(){return this.negative!==0},BN.prototype.neg=function(){return this.clone().ineg()},BN.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},BN.prototype.iuor=function(num){while(this.length<num.length)this.words[this.length++]=0;for(var i=0;i<num.length;i++)this.words[i]=this.words[i]|num.words[i];return this.strip()},BN.prototype.ior=function(num){return assert((this.negative|num.negative)===0),this.iuor(num)},BN.prototype.or=function(num){if(this.length>num.length)return this.clone().ior(num);return num.clone().ior(this)},BN.prototype.uor=function(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)},BN.prototype.iuand=function(num){var b;if(this.length>num.length)b=num;else b=this;for(var i=0;i<b.length;i++)this.words[i]=this.words[i]&num.words[i];return this.length=b.length,this.strip()},BN.prototype.iand=function(num){return assert((this.negative|num.negative)===0),this.iuand(num)},BN.prototype.and=function(num){if(this.length>num.length)return this.clone().iand(num);return num.clone().iand(this)},BN.prototype.uand=function(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)},BN.prototype.iuxor=function(num){var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;for(var i=0;i<b.length;i++)this.words[i]=a.words[i]^b.words[i];if(this!==a)for(;i<a.length;i++)this.words[i]=a.words[i];return this.length=a.length,this.strip()},BN.prototype.ixor=function(num){return assert((this.negative|num.negative)===0),this.iuxor(num)},BN.prototype.xor=function(num){if(this.length>num.length)return this.clone().ixor(num);return num.clone().ixor(this)},BN.prototype.uxor=function(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)},BN.prototype.inotn=function(width){assert(typeof width===\"number\"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0,bitsLeft=width%26;if(this._expand(bytesNeeded),bitsLeft>0)bytesNeeded--;for(var i=0;i<bytesNeeded;i++)this.words[i]=~this.words[i]&67108863;if(bitsLeft>0)this.words[i]=~this.words[i]&67108863>>26-bitsLeft;return this.strip()},BN.prototype.notn=function(width){return this.clone().inotn(width)},BN.prototype.setn=function(bit,val){assert(typeof bit===\"number\"&&bit>=0);var off=bit/26|0,wbit=bit%26;if(this._expand(off+1),val)this.words[off]=this.words[off]|1<<wbit;else this.words[off]=this.words[off]&~(1<<wbit);return this.strip()},BN.prototype.iadd=function(num){var r;if(this.negative!==0&&num.negative===0)return this.negative=0,r=this.isub(num),this.negative^=1,this._normSign();else if(this.negative===0&&num.negative!==0)return num.negative=0,r=this.isub(num),num.negative=1,r._normSign();var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)+(b.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;if(this.length=a.length,carry!==0)this.words[this.length]=carry,this.length++;else if(a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];return this},BN.prototype.add=function(num){var res;if(num.negative!==0&&this.negative===0)return num.negative=0,res=this.sub(num),num.negative^=1,res;else if(num.negative===0&&this.negative!==0)return this.negative=0,res=num.sub(this),this.negative=1,res;if(this.length>num.length)return this.clone().iadd(num);return num.clone().iadd(this)},BN.prototype.isub=function(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);return num.negative=1,r._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(num),this.negative=1,this._normSign();var cmp=this.cmp(num);if(cmp===0)return this.negative=0,this.length=1,this.words[0]=0,this;var a,b;if(cmp>0)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)-(b.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;if(carry===0&&i<a.length&&a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];if(this.length=Math.max(this.length,i),a!==this)this.negative=1;return this.strip()},BN.prototype.sub=function(num){return this.clone().isub(num)};function smallMulTo(self2,num,out){out.negative=num.negative^self2.negative;var len=self2.length+num.length|0;out.length=len,len=len-1|0;var a=self2.words[0]|0,b=num.words[0]|0,r=a*b,lo=r&67108863,carry=r/67108864|0;out.words[0]=lo;for(var k=1;k<len;k++){var ncarry=carry>>>26,rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j|0;a=self2.words[i]|0,b=num.words[j]|0,r=a*b+rword,ncarry+=r/67108864|0,rword=r&67108863}out.words[k]=rword|0,carry=ncarry|0}if(carry!==0)out.words[k]=carry|0;else out.length--;return out.strip()}var comb10MulTo=function(self2,num,out){var a=self2.words,b=num.words,o=out.words,c=0,lo,mid,hi,a0=a[0]|0,al0=a0&8191,ah0=a0>>>13,a1=a[1]|0,al1=a1&8191,ah1=a1>>>13,a2=a[2]|0,al2=a2&8191,ah2=a2>>>13,a3=a[3]|0,al3=a3&8191,ah3=a3>>>13,a4=a[4]|0,al4=a4&8191,ah4=a4>>>13,a5=a[5]|0,al5=a5&8191,ah5=a5>>>13,a6=a[6]|0,al6=a6&8191,ah6=a6>>>13,a7=a[7]|0,al7=a7&8191,ah7=a7>>>13,a8=a[8]|0,al8=a8&8191,ah8=a8>>>13,a9=a[9]|0,al9=a9&8191,ah9=a9>>>13,b0=b[0]|0,bl0=b0&8191,bh0=b0>>>13,b1=b[1]|0,bl1=b1&8191,bh1=b1>>>13,b2=b[2]|0,bl2=b2&8191,bh2=b2>>>13,b3=b[3]|0,bl3=b3&8191,bh3=b3>>>13,b4=b[4]|0,bl4=b4&8191,bh4=b4>>>13,b5=b[5]|0,bl5=b5&8191,bh5=b5>>>13,b6=b[6]|0,bl6=b6&8191,bh6=b6>>>13,b7=b[7]|0,bl7=b7&8191,bh7=b7>>>13,b8=b[8]|0,bl8=b8&8191,bh8=b8>>>13,b9=b[9]|0,bl9=b9&8191,bh9=b9>>>13;out.negative=self2.negative^num.negative,out.length=19,lo=Math.imul(al0,bl0),mid=Math.imul(al0,bh0),mid=mid+Math.imul(ah0,bl0)|0,hi=Math.imul(ah0,bh0);var w0=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w0>>>26)|0,w0&=67108863,lo=Math.imul(al1,bl0),mid=Math.imul(al1,bh0),mid=mid+Math.imul(ah1,bl0)|0,hi=Math.imul(ah1,bh0),lo=lo+Math.imul(al0,bl1)|0,mid=mid+Math.imul(al0,bh1)|0,mid=mid+Math.imul(ah0,bl1)|0,hi=hi+Math.imul(ah0,bh1)|0;var w1=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w1>>>26)|0,w1&=67108863,lo=Math.imul(al2,bl0),mid=Math.imul(al2,bh0),mid=mid+Math.imul(ah2,bl0)|0,hi=Math.imul(ah2,bh0),lo=lo+Math.imul(al1,bl1)|0,mid=mid+Math.imul(al1,bh1)|0,mid=mid+Math.imul(ah1,bl1)|0,hi=hi+Math.imul(ah1,bh1)|0,lo=lo+Math.imul(al0,bl2)|0,mid=mid+Math.imul(al0,bh2)|0,mid=mid+Math.imul(ah0,bl2)|0,hi=hi+Math.imul(ah0,bh2)|0;var w2=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w2>>>26)|0,w2&=67108863,lo=Math.imul(al3,bl0),mid=Math.imul(al3,bh0),mid=mid+Math.imul(ah3,bl0)|0,hi=Math.imul(ah3,bh0),lo=lo+Math.imul(al2,bl1)|0,mid=mid+Math.imul(al2,bh1)|0,mid=mid+Math.imul(ah2,bl1)|0,hi=hi+Math.imul(ah2,bh1)|0,lo=lo+Math.imul(al1,bl2)|0,mid=mid+Math.imul(al1,bh2)|0,mid=mid+Math.imul(ah1,bl2)|0,hi=hi+Math.imul(ah1,bh2)|0,lo=lo+Math.imul(al0,bl3)|0,mid=mid+Math.imul(al0,bh3)|0,mid=mid+Math.imul(ah0,bl3)|0,hi=hi+Math.imul(ah0,bh3)|0;var w3=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w3>>>26)|0,w3&=67108863,lo=Math.imul(al4,bl0),mid=Math.imul(al4,bh0),mid=mid+Math.imul(ah4,bl0)|0,hi=Math.imul(ah4,bh0),lo=lo+Math.imul(al3,bl1)|0,mid=mid+Math.imul(al3,bh1)|0,mid=mid+Math.imul(ah3,bl1)|0,hi=hi+Math.imul(ah3,bh1)|0,lo=lo+Math.imul(al2,bl2)|0,mid=mid+Math.imul(al2,bh2)|0,mid=mid+Math.imul(ah2,bl2)|0,hi=hi+Math.imul(ah2,bh2)|0,lo=lo+Math.imul(al1,bl3)|0,mid=mid+Math.imul(al1,bh3)|0,mid=mid+Math.imul(ah1,bl3)|0,hi=hi+Math.imul(ah1,bh3)|0,lo=lo+Math.imul(al0,bl4)|0,mid=mid+Math.imul(al0,bh4)|0,mid=mid+Math.imul(ah0,bl4)|0,hi=hi+Math.imul(ah0,bh4)|0;var w4=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w4>>>26)|0,w4&=67108863,lo=Math.imul(al5,bl0),mid=Math.imul(al5,bh0),mid=mid+Math.imul(ah5,bl0)|0,hi=Math.imul(ah5,bh0),lo=lo+Math.imul(al4,bl1)|0,mid=mid+Math.imul(al4,bh1)|0,mid=mid+Math.imul(ah4,bl1)|0,hi=hi+Math.imul(ah4,bh1)|0,lo=lo+Math.imul(al3,bl2)|0,mid=mid+Math.imul(al3,bh2)|0,mid=mid+Math.imul(ah3,bl2)|0,hi=hi+Math.imul(ah3,bh2)|0,lo=lo+Math.imul(al2,bl3)|0,mid=mid+Math.imul(al2,bh3)|0,mid=mid+Math.imul(ah2,bl3)|0,hi=hi+Math.imul(ah2,bh3)|0,lo=lo+Math.imul(al1,bl4)|0,mid=mid+Math.imul(al1,bh4)|0,mid=mid+Math.imul(ah1,bl4)|0,hi=hi+Math.imul(ah1,bh4)|0,lo=lo+Math.imul(al0,bl5)|0,mid=mid+Math.imul(al0,bh5)|0,mid=mid+Math.imul(ah0,bl5)|0,hi=hi+Math.imul(ah0,bh5)|0;var w5=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w5>>>26)|0,w5&=67108863,lo=Math.imul(al6,bl0),mid=Math.imul(al6,bh0),mid=mid+Math.imul(ah6,bl0)|0,hi=Math.imul(ah6,bh0),lo=lo+Math.imul(al5,bl1)|0,mid=mid+Math.imul(al5,bh1)|0,mid=mid+Math.imul(ah5,bl1)|0,hi=hi+Math.imul(ah5,bh1)|0,lo=lo+Math.imul(al4,bl2)|0,mid=mid+Math.imul(al4,bh2)|0,mid=mid+Math.imul(ah4,bl2)|0,hi=hi+Math.imul(ah4,bh2)|0,lo=lo+Math.imul(al3,bl3)|0,mid=mid+Math.imul(al3,bh3)|0,mid=mid+Math.imul(ah3,bl3)|0,hi=hi+Math.imul(ah3,bh3)|0,lo=lo+Math.imul(al2,bl4)|0,mid=mid+Math.imul(al2,bh4)|0,mid=mid+Math.imul(ah2,bl4)|0,hi=hi+Math.imul(ah2,bh4)|0,lo=lo+Math.imul(al1,bl5)|0,mid=mid+Math.imul(al1,bh5)|0,mid=mid+Math.imul(ah1,bl5)|0,hi=hi+Math.imul(ah1,bh5)|0,lo=lo+Math.imul(al0,bl6)|0,mid=mid+Math.imul(al0,bh6)|0,mid=mid+Math.imul(ah0,bl6)|0,hi=hi+Math.imul(ah0,bh6)|0;var w6=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w6>>>26)|0,w6&=67108863,lo=Math.imul(al7,bl0),mid=Math.imul(al7,bh0),mid=mid+Math.imul(ah7,bl0)|0,hi=Math.imul(ah7,bh0),lo=lo+Math.imul(al6,bl1)|0,mid=mid+Math.imul(al6,bh1)|0,mid=mid+Math.imul(ah6,bl1)|0,hi=hi+Math.imul(ah6,bh1)|0,lo=lo+Math.imul(al5,bl2)|0,mid=mid+Math.imul(al5,bh2)|0,mid=mid+Math.imul(ah5,bl2)|0,hi=hi+Math.imul(ah5,bh2)|0,lo=lo+Math.imul(al4,bl3)|0,mid=mid+Math.imul(al4,bh3)|0,mid=mid+Math.imul(ah4,bl3)|0,hi=hi+Math.imul(ah4,bh3)|0,lo=lo+Math.imul(al3,bl4)|0,mid=mid+Math.imul(al3,bh4)|0,mid=mid+Math.imul(ah3,bl4)|0,hi=hi+Math.imul(ah3,bh4)|0,lo=lo+Math.imul(al2,bl5)|0,mid=mid+Math.imul(al2,bh5)|0,mid=mid+Math.imul(ah2,bl5)|0,hi=hi+Math.imul(ah2,bh5)|0,lo=lo+Math.imul(al1,bl6)|0,mid=mid+Math.imul(al1,bh6)|0,mid=mid+Math.imul(ah1,bl6)|0,hi=hi+Math.imul(ah1,bh6)|0,lo=lo+Math.imul(al0,bl7)|0,mid=mid+Math.imul(al0,bh7)|0,mid=mid+Math.imul(ah0,bl7)|0,hi=hi+Math.imul(ah0,bh7)|0;var w7=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w7>>>26)|0,w7&=67108863,lo=Math.imul(al8,bl0),mid=Math.imul(al8,bh0),mid=mid+Math.imul(ah8,bl0)|0,hi=Math.imul(ah8,bh0),lo=lo+Math.imul(al7,bl1)|0,mid=mid+Math.imul(al7,bh1)|0,mid=mid+Math.imul(ah7,bl1)|0,hi=hi+Math.imul(ah7,bh1)|0,lo=lo+Math.imul(al6,bl2)|0,mid=mid+Math.imul(al6,bh2)|0,mid=mid+Math.imul(ah6,bl2)|0,hi=hi+Math.imul(ah6,bh2)|0,lo=lo+Math.imul(al5,bl3)|0,mid=mid+Math.imul(al5,bh3)|0,mid=mid+Math.imul(ah5,bl3)|0,hi=hi+Math.imul(ah5,bh3)|0,lo=lo+Math.imul(al4,bl4)|0,mid=mid+Math.imul(al4,bh4)|0,mid=mid+Math.imul(ah4,bl4)|0,hi=hi+Math.imul(ah4,bh4)|0,lo=lo+Math.imul(al3,bl5)|0,mid=mid+Math.imul(al3,bh5)|0,mid=mid+Math.imul(ah3,bl5)|0,hi=hi+Math.imul(ah3,bh5)|0,lo=lo+Math.imul(al2,bl6)|0,mid=mid+Math.imul(al2,bh6)|0,mid=mid+Math.imul(ah2,bl6)|0,hi=hi+Math.imul(ah2,bh6)|0,lo=lo+Math.imul(al1,bl7)|0,mid=mid+Math.imul(al1,bh7)|0,mid=mid+Math.imul(ah1,bl7)|0,hi=hi+Math.imul(ah1,bh7)|0,lo=lo+Math.imul(al0,bl8)|0,mid=mid+Math.imul(al0,bh8)|0,mid=mid+Math.imul(ah0,bl8)|0,hi=hi+Math.imul(ah0,bh8)|0;var w8=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w8>>>26)|0,w8&=67108863,lo=Math.imul(al9,bl0),mid=Math.imul(al9,bh0),mid=mid+Math.imul(ah9,bl0)|0,hi=Math.imul(ah9,bh0),lo=lo+Math.imul(al8,bl1)|0,mid=mid+Math.imul(al8,bh1)|0,mid=mid+Math.imul(ah8,bl1)|0,hi=hi+Math.imul(ah8,bh1)|0,lo=lo+Math.imul(al7,bl2)|0,mid=mid+Math.imul(al7,bh2)|0,mid=mid+Math.imul(ah7,bl2)|0,hi=hi+Math.imul(ah7,bh2)|0,lo=lo+Math.imul(al6,bl3)|0,mid=mid+Math.imul(al6,bh3)|0,mid=mid+Math.imul(ah6,bl3)|0,hi=hi+Math.imul(ah6,bh3)|0,lo=lo+Math.imul(al5,bl4)|0,mid=mid+Math.imul(al5,bh4)|0,mid=mid+Math.imul(ah5,bl4)|0,hi=hi+Math.imul(ah5,bh4)|0,lo=lo+Math.imul(al4,bl5)|0,mid=mid+Math.imul(al4,bh5)|0,mid=mid+Math.imul(ah4,bl5)|0,hi=hi+Math.imul(ah4,bh5)|0,lo=lo+Math.imul(al3,bl6)|0,mid=mid+Math.imul(al3,bh6)|0,mid=mid+Math.imul(ah3,bl6)|0,hi=hi+Math.imul(ah3,bh6)|0,lo=lo+Math.imul(al2,bl7)|0,mid=mid+Math.imul(al2,bh7)|0,mid=mid+Math.imul(ah2,bl7)|0,hi=hi+Math.imul(ah2,bh7)|0,lo=lo+Math.imul(al1,bl8)|0,mid=mid+Math.imul(al1,bh8)|0,mid=mid+Math.imul(ah1,bl8)|0,hi=hi+Math.imul(ah1,bh8)|0,lo=lo+Math.imul(al0,bl9)|0,mid=mid+Math.imul(al0,bh9)|0,mid=mid+Math.imul(ah0,bl9)|0,hi=hi+Math.imul(ah0,bh9)|0;var w9=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w9>>>26)|0,w9&=67108863,lo=Math.imul(al9,bl1),mid=Math.imul(al9,bh1),mid=mid+Math.imul(ah9,bl1)|0,hi=Math.imul(ah9,bh1),lo=lo+Math.imul(al8,bl2)|0,mid=mid+Math.imul(al8,bh2)|0,mid=mid+Math.imul(ah8,bl2)|0,hi=hi+Math.imul(ah8,bh2)|0,lo=lo+Math.imul(al7,bl3)|0,mid=mid+Math.imul(al7,bh3)|0,mid=mid+Math.imul(ah7,bl3)|0,hi=hi+Math.imul(ah7,bh3)|0,lo=lo+Math.imul(al6,bl4)|0,mid=mid+Math.imul(al6,bh4)|0,mid=mid+Math.imul(ah6,bl4)|0,hi=hi+Math.imul(ah6,bh4)|0,lo=lo+Math.imul(al5,bl5)|0,mid=mid+Math.imul(al5,bh5)|0,mid=mid+Math.imul(ah5,bl5)|0,hi=hi+Math.imul(ah5,bh5)|0,lo=lo+Math.imul(al4,bl6)|0,mid=mid+Math.imul(al4,bh6)|0,mid=mid+Math.imul(ah4,bl6)|0,hi=hi+Math.imul(ah4,bh6)|0,lo=lo+Math.imul(al3,bl7)|0,mid=mid+Math.imul(al3,bh7)|0,mid=mid+Math.imul(ah3,bl7)|0,hi=hi+Math.imul(ah3,bh7)|0,lo=lo+Math.imul(al2,bl8)|0,mid=mid+Math.imul(al2,bh8)|0,mid=mid+Math.imul(ah2,bl8)|0,hi=hi+Math.imul(ah2,bh8)|0,lo=lo+Math.imul(al1,bl9)|0,mid=mid+Math.imul(al1,bh9)|0,mid=mid+Math.imul(ah1,bl9)|0,hi=hi+Math.imul(ah1,bh9)|0;var w10=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w10>>>26)|0,w10&=67108863,lo=Math.imul(al9,bl2),mid=Math.imul(al9,bh2),mid=mid+Math.imul(ah9,bl2)|0,hi=Math.imul(ah9,bh2),lo=lo+Math.imul(al8,bl3)|0,mid=mid+Math.imul(al8,bh3)|0,mid=mid+Math.imul(ah8,bl3)|0,hi=hi+Math.imul(ah8,bh3)|0,lo=lo+Math.imul(al7,bl4)|0,mid=mid+Math.imul(al7,bh4)|0,mid=mid+Math.imul(ah7,bl4)|0,hi=hi+Math.imul(ah7,bh4)|0,lo=lo+Math.imul(al6,bl5)|0,mid=mid+Math.imul(al6,bh5)|0,mid=mid+Math.imul(ah6,bl5)|0,hi=hi+Math.imul(ah6,bh5)|0,lo=lo+Math.imul(al5,bl6)|0,mid=mid+Math.imul(al5,bh6)|0,mid=mid+Math.imul(ah5,bl6)|0,hi=hi+Math.imul(ah5,bh6)|0,lo=lo+Math.imul(al4,bl7)|0,mid=mid+Math.imul(al4,bh7)|0,mid=mid+Math.imul(ah4,bl7)|0,hi=hi+Math.imul(ah4,bh7)|0,lo=lo+Math.imul(al3,bl8)|0,mid=mid+Math.imul(al3,bh8)|0,mid=mid+Math.imul(ah3,bl8)|0,hi=hi+Math.imul(ah3,bh8)|0,lo=lo+Math.imul(al2,bl9)|0,mid=mid+Math.imul(al2,bh9)|0,mid=mid+Math.imul(ah2,bl9)|0,hi=hi+Math.imul(ah2,bh9)|0;var w11=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w11>>>26)|0,w11&=67108863,lo=Math.imul(al9,bl3),mid=Math.imul(al9,bh3),mid=mid+Math.imul(ah9,bl3)|0,hi=Math.imul(ah9,bh3),lo=lo+Math.imul(al8,bl4)|0,mid=mid+Math.imul(al8,bh4)|0,mid=mid+Math.imul(ah8,bl4)|0,hi=hi+Math.imul(ah8,bh4)|0,lo=lo+Math.imul(al7,bl5)|0,mid=mid+Math.imul(al7,bh5)|0,mid=mid+Math.imul(ah7,bl5)|0,hi=hi+Math.imul(ah7,bh5)|0,lo=lo+Math.imul(al6,bl6)|0,mid=mid+Math.imul(al6,bh6)|0,mid=mid+Math.imul(ah6,bl6)|0,hi=hi+Math.imul(ah6,bh6)|0,lo=lo+Math.imul(al5,bl7)|0,mid=mid+Math.imul(al5,bh7)|0,mid=mid+Math.imul(ah5,bl7)|0,hi=hi+Math.imul(ah5,bh7)|0,lo=lo+Math.imul(al4,bl8)|0,mid=mid+Math.imul(al4,bh8)|0,mid=mid+Math.imul(ah4,bl8)|0,hi=hi+Math.imul(ah4,bh8)|0,lo=lo+Math.imul(al3,bl9)|0,mid=mid+Math.imul(al3,bh9)|0,mid=mid+Math.imul(ah3,bl9)|0,hi=hi+Math.imul(ah3,bh9)|0;var w12=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w12>>>26)|0,w12&=67108863,lo=Math.imul(al9,bl4),mid=Math.imul(al9,bh4),mid=mid+Math.imul(ah9,bl4)|0,hi=Math.imul(ah9,bh4),lo=lo+Math.imul(al8,bl5)|0,mid=mid+Math.imul(al8,bh5)|0,mid=mid+Math.imul(ah8,bl5)|0,hi=hi+Math.imul(ah8,bh5)|0,lo=lo+Math.imul(al7,bl6)|0,mid=mid+Math.imul(al7,bh6)|0,mid=mid+Math.imul(ah7,bl6)|0,hi=hi+Math.imul(ah7,bh6)|0,lo=lo+Math.imul(al6,bl7)|0,mid=mid+Math.imul(al6,bh7)|0,mid=mid+Math.imul(ah6,bl7)|0,hi=hi+Math.imul(ah6,bh7)|0,lo=lo+Math.imul(al5,bl8)|0,mid=mid+Math.imul(al5,bh8)|0,mid=mid+Math.imul(ah5,bl8)|0,hi=hi+Math.imul(ah5,bh8)|0,lo=lo+Math.imul(al4,bl9)|0,mid=mid+Math.imul(al4,bh9)|0,mid=mid+Math.imul(ah4,bl9)|0,hi=hi+Math.imul(ah4,bh9)|0;var w13=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w13>>>26)|0,w13&=67108863,lo=Math.imul(al9,bl5),mid=Math.imul(al9,bh5),mid=mid+Math.imul(ah9,bl5)|0,hi=Math.imul(ah9,bh5),lo=lo+Math.imul(al8,bl6)|0,mid=mid+Math.imul(al8,bh6)|0,mid=mid+Math.imul(ah8,bl6)|0,hi=hi+Math.imul(ah8,bh6)|0,lo=lo+Math.imul(al7,bl7)|0,mid=mid+Math.imul(al7,bh7)|0,mid=mid+Math.imul(ah7,bl7)|0,hi=hi+Math.imul(ah7,bh7)|0,lo=lo+Math.imul(al6,bl8)|0,mid=mid+Math.imul(al6,bh8)|0,mid=mid+Math.imul(ah6,bl8)|0,hi=hi+Math.imul(ah6,bh8)|0,lo=lo+Math.imul(al5,bl9)|0,mid=mid+Math.imul(al5,bh9)|0,mid=mid+Math.imul(ah5,bl9)|0,hi=hi+Math.imul(ah5,bh9)|0;var w14=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w14>>>26)|0,w14&=67108863,lo=Math.imul(al9,bl6),mid=Math.imul(al9,bh6),mid=mid+Math.imul(ah9,bl6)|0,hi=Math.imul(ah9,bh6),lo=lo+Math.imul(al8,bl7)|0,mid=mid+Math.imul(al8,bh7)|0,mid=mid+Math.imul(ah8,bl7)|0,hi=hi+Math.imul(ah8,bh7)|0,lo=lo+Math.imul(al7,bl8)|0,mid=mid+Math.imul(al7,bh8)|0,mid=mid+Math.imul(ah7,bl8)|0,hi=hi+Math.imul(ah7,bh8)|0,lo=lo+Math.imul(al6,bl9)|0,mid=mid+Math.imul(al6,bh9)|0,mid=mid+Math.imul(ah6,bl9)|0,hi=hi+Math.imul(ah6,bh9)|0;var w15=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w15>>>26)|0,w15&=67108863,lo=Math.imul(al9,bl7),mid=Math.imul(al9,bh7),mid=mid+Math.imul(ah9,bl7)|0,hi=Math.imul(ah9,bh7),lo=lo+Math.imul(al8,bl8)|0,mid=mid+Math.imul(al8,bh8)|0,mid=mid+Math.imul(ah8,bl8)|0,hi=hi+Math.imul(ah8,bh8)|0,lo=lo+Math.imul(al7,bl9)|0,mid=mid+Math.imul(al7,bh9)|0,mid=mid+Math.imul(ah7,bl9)|0,hi=hi+Math.imul(ah7,bh9)|0;var w16=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w16>>>26)|0,w16&=67108863,lo=Math.imul(al9,bl8),mid=Math.imul(al9,bh8),mid=mid+Math.imul(ah9,bl8)|0,hi=Math.imul(ah9,bh8),lo=lo+Math.imul(al8,bl9)|0,mid=mid+Math.imul(al8,bh9)|0,mid=mid+Math.imul(ah8,bl9)|0,hi=hi+Math.imul(ah8,bh9)|0;var w17=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w17>>>26)|0,w17&=67108863,lo=Math.imul(al9,bl9),mid=Math.imul(al9,bh9),mid=mid+Math.imul(ah9,bl9)|0,hi=Math.imul(ah9,bh9);var w18=(c+lo|0)+((mid&8191)<<13)|0;if(c=(hi+(mid>>>13)|0)+(w18>>>26)|0,w18&=67108863,o[0]=w0,o[1]=w1,o[2]=w2,o[3]=w3,o[4]=w4,o[5]=w5,o[6]=w6,o[7]=w7,o[8]=w8,o[9]=w9,o[10]=w10,o[11]=w11,o[12]=w12,o[13]=w13,o[14]=w14,o[15]=w15,o[16]=w16,o[17]=w17,o[18]=w18,c!==0)o[19]=c,out.length++;return out};if(!Math.imul)comb10MulTo=smallMulTo;function bigMulTo(self2,num,out){out.negative=num.negative^self2.negative,out.length=self2.length+num.length;var carry=0,hncarry=0;for(var k=0;k<out.length-1;k++){var ncarry=hncarry;hncarry=0;var rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j,a=self2.words[i]|0,b=num.words[j]|0,r=a*b,lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0,lo=lo+rword|0,rword=lo&67108863,ncarry=ncarry+(lo>>>26)|0,hncarry+=ncarry>>>26,ncarry&=67108863}out.words[k]=rword,carry=ncarry,ncarry=hncarry}if(carry!==0)out.words[k]=carry;else out.length--;return out.strip()}function jumboMulTo(self2,num,out){var fftm=new FFTM;return fftm.mulp(self2,num,out)}BN.prototype.mulTo=function(num,out){var res,len=this.length+num.length;if(this.length===10&&num.length===10)res=comb10MulTo(this,num,out);else if(len<63)res=smallMulTo(this,num,out);else if(len<1024)res=bigMulTo(this,num,out);else res=jumboMulTo(this,num,out);return res};function FFTM(x,y){this.x=x,this.y=y}FFTM.prototype.makeRBT=function(N){var t=Array(N),l=BN.prototype._countBits(N)-1;for(var i=0;i<N;i++)t[i]=this.revBin(i,l,N);return t},FFTM.prototype.revBin=function(x,l,N){if(x===0||x===N-1)return x;var rb=0;for(var i=0;i<l;i++)rb|=(x&1)<<l-i-1,x>>=1;return rb},FFTM.prototype.permute=function(rbt,rws,iws,rtws,itws,N){for(var i=0;i<N;i++)rtws[i]=rws[rbt[i]],itws[i]=iws[rbt[i]]},FFTM.prototype.transform=function(rws,iws,rtws,itws,N,rbt){this.permute(rbt,rws,iws,rtws,itws,N);for(var s=1;s<N;s<<=1){var l=s<<1,rtwdf=Math.cos(2*Math.PI/l),itwdf=Math.sin(2*Math.PI/l);for(var p=0;p<N;p+=l){var rtwdf_=rtwdf,itwdf_=itwdf;for(var j=0;j<s;j++){var re=rtws[p+j],ie=itws[p+j],ro=rtws[p+j+s],io=itws[p+j+s],rx=rtwdf_*ro-itwdf_*io;if(io=rtwdf_*io+itwdf_*ro,ro=rx,rtws[p+j]=re+ro,itws[p+j]=ie+io,rtws[p+j+s]=re-ro,itws[p+j+s]=ie-io,j!==l)rx=rtwdf*rtwdf_-itwdf*itwdf_,itwdf_=rtwdf*itwdf_+itwdf*rtwdf_,rtwdf_=rx}}}},FFTM.prototype.guessLen13b=function(n,m){var N=Math.max(m,n)|1,odd=N&1,i=0;for(N=N/2|0;N;N=N>>>1)i++;return 1<<i+1+odd},FFTM.prototype.conjugate=function(rws,iws,N){if(N<=1)return;for(var i=0;i<N/2;i++){var t=rws[i];rws[i]=rws[N-i-1],rws[N-i-1]=t,t=iws[i],iws[i]=-iws[N-i-1],iws[N-i-1]=-t}},FFTM.prototype.normalize13b=function(ws,N){var carry=0;for(var i=0;i<N/2;i++){var w=Math.round(ws[2*i+1]/N)*8192+Math.round(ws[2*i]/N)+carry;if(ws[i]=w&67108863,w<67108864)carry=0;else carry=w/67108864|0}return ws},FFTM.prototype.convert13b=function(ws,len,rws,N){var carry=0;for(var i=0;i<len;i++)carry=carry+(ws[i]|0),rws[2*i]=carry&8191,carry=carry>>>13,rws[2*i+1]=carry&8191,carry=carry>>>13;for(i=2*len;i<N;++i)rws[i]=0;assert(carry===0),assert((carry&-8192)===0)},FFTM.prototype.stub=function(N){var ph=Array(N);for(var i=0;i<N;i++)ph[i]=0;return ph},FFTM.prototype.mulp=function(x,y,out){var N=2*this.guessLen13b(x.length,y.length),rbt=this.makeRBT(N),_=this.stub(N),rws=Array(N),rwst=Array(N),iwst=Array(N),nrws=Array(N),nrwst=Array(N),niwst=Array(N),rmws=out.words;rmws.length=N,this.convert13b(x.words,x.length,rws,N),this.convert13b(y.words,y.length,nrws,N),this.transform(rws,_,rwst,iwst,N,rbt),this.transform(nrws,_,nrwst,niwst,N,rbt);for(var i=0;i<N;i++){var rx=rwst[i]*nrwst[i]-iwst[i]*niwst[i];iwst[i]=rwst[i]*niwst[i]+iwst[i]*nrwst[i],rwst[i]=rx}return this.conjugate(rwst,iwst,N),this.transform(rwst,iwst,rmws,_,N,rbt),this.conjugate(rmws,_,N),this.normalize13b(rmws,N),out.negative=x.negative^y.negative,out.length=x.length+y.length,out.strip()},BN.prototype.mul=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),this.mulTo(num,out)},BN.prototype.mulf=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),jumboMulTo(this,num,out)},BN.prototype.imul=function(num){return this.clone().mulTo(num,this)},BN.prototype.imuln=function(num){assert(typeof num===\"number\"),assert(num<67108864);var carry=0;for(var i=0;i<this.length;i++){var w=(this.words[i]|0)*num,lo=(w&67108863)+(carry&67108863);carry>>=26,carry+=w/67108864|0,carry+=lo>>>26,this.words[i]=lo&67108863}if(carry!==0)this.words[i]=carry,this.length++;return this.length=num===0?1:this.length,this},BN.prototype.muln=function(num){return this.clone().imuln(num)},BN.prototype.sqr=function(){return this.mul(this)},BN.prototype.isqr=function(){return this.imul(this.clone())},BN.prototype.pow=function(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i<w.length;i++,res=res.sqr())if(w[i]!==0)break;if(++i<w.length)for(var q=res.sqr();i<w.length;i++,q=q.sqr()){if(w[i]===0)continue;res=res.mul(q)}return res},BN.prototype.iushln=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26,carryMask=67108863>>>26-r<<26-r,i;if(r!==0){var carry=0;for(i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask,c=(this.words[i]|0)-newCarry<<r;this.words[i]=c|carry,carry=newCarry>>>26-r}if(carry)this.words[i]=carry,this.length++}if(s!==0){for(i=this.length-1;i>=0;i--)this.words[i+s]=this.words[i];for(i=0;i<s;i++)this.words[i]=0;this.length+=s}return this.strip()},BN.prototype.ishln=function(bits){return assert(this.negative===0),this.iushln(bits)},BN.prototype.iushrn=function(bits,hint,extended){assert(typeof bits===\"number\"&&bits>=0);var h;if(hint)h=(hint-hint%26)/26;else h=0;var r=bits%26,s=Math.min((bits-r)/26,this.length),mask=67108863^67108863>>>r<<r,maskedWords=extended;if(h-=s,h=Math.max(0,h),maskedWords){for(var i=0;i<s;i++)maskedWords.words[i]=this.words[i];maskedWords.length=s}if(s===0);else if(this.length>s){this.length-=s;for(i=0;i<this.length;i++)this.words[i]=this.words[i+s]}else this.words[0]=0,this.length=1;var carry=0;for(i=this.length-1;i>=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r,carry=word&mask}if(maskedWords&&carry!==0)maskedWords.words[maskedWords.length++]=carry;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},BN.prototype.ishrn=function(bits,hint,extended){return assert(this.negative===0),this.iushrn(bits,hint,extended)},BN.prototype.shln=function(bits){return this.clone().ishln(bits)},BN.prototype.ushln=function(bits){return this.clone().iushln(bits)},BN.prototype.shrn=function(bits){return this.clone().ishrn(bits)},BN.prototype.ushrn=function(bits){return this.clone().iushrn(bits)},BN.prototype.testn=function(bit){assert(typeof bit===\"number\"&&bit>=0);var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return!1;var w=this.words[s];return!!(w&q)},BN.prototype.imaskn=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26;if(assert(this.negative===0,\"imaskn works only with positive numbers\"),this.length<=s)return this;if(r!==0)s++;if(this.length=Math.min(s,this.length),r!==0){var mask=67108863^67108863>>>r<<r;this.words[this.length-1]&=mask}return this.strip()},BN.prototype.maskn=function(bits){return this.clone().imaskn(bits)},BN.prototype.iaddn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.isubn(-num);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<num)return this.words[0]=num-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(num),this.negative=1,this}return this._iaddn(num)},BN.prototype._iaddn=function(num){this.words[0]+=num;for(var i=0;i<this.length&&this.words[i]>=67108864;i++)if(this.words[i]-=67108864,i===this.length-1)this.words[i+1]=1;else this.words[i+1]++;return this.length=Math.max(this.length,i+1),this},BN.prototype.isubn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.iaddn(-num);if(this.negative!==0)return this.negative=0,this.iaddn(num),this.negative=1,this;if(this.words[0]-=num,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var i=0;i<this.length&&this.words[i]<0;i++)this.words[i]+=67108864,this.words[i+1]-=1;return this.strip()},BN.prototype.addn=function(num){return this.clone().iaddn(num)},BN.prototype.subn=function(num){return this.clone().isubn(num)},BN.prototype.iabs=function(){return this.negative=0,this},BN.prototype.abs=function(){return this.clone().iabs()},BN.prototype._ishlnsubmul=function(num,mul,shift){var len=num.length+shift,i;this._expand(len);var w,carry=0;for(i=0;i<num.length;i++){w=(this.words[i+shift]|0)+carry;var right=(num.words[i]|0)*mul;w-=right&67108863,carry=(w>>26)-(right/67108864|0),this.words[i+shift]=w&67108863}for(;i<this.length-shift;i++)w=(this.words[i+shift]|0)+carry,carry=w>>26,this.words[i+shift]=w&67108863;if(carry===0)return this.strip();assert(carry===-1),carry=0;for(i=0;i<this.length;i++)w=-(this.words[i]|0)+carry,carry=w>>26,this.words[i]=w&67108863;return this.negative=1,this.strip()},BN.prototype._wordDiv=function(num,mode){var shift=this.length-num.length,a=this.clone(),b=num,bhi=b.words[b.length-1]|0,bhiBits=this._countBits(bhi);if(shift=26-bhiBits,shift!==0)b=b.ushln(shift),a.iushln(shift),bhi=b.words[b.length-1]|0;var m=a.length-b.length,q;if(mode!==\"mod\"){q=new BN(null),q.length=m+1,q.words=Array(q.length);for(var i=0;i<q.length;i++)q.words[i]=0}var diff=a.clone()._ishlnsubmul(b,1,m);if(diff.negative===0){if(a=diff,q)q.words[m]=1}for(var j=m-1;j>=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863),a._ishlnsubmul(b,qj,j);while(a.negative!==0)if(qj--,a.negative=0,a._ishlnsubmul(b,1,j),!a.isZero())a.negative^=1;if(q)q.words[j]=qj}if(q)q.strip();if(a.strip(),mode!==\"div\"&&shift!==0)a.iushrn(shift);return{div:q||null,mod:a}},BN.prototype.divmod=function(num,mode,positive){if(assert(!num.isZero()),this.isZero())return{div:new BN(0),mod:new BN(0)};var div,mod,res;if(this.negative!==0&&num.negative===0){if(res=this.neg().divmod(num,mode),mode!==\"mod\")div=res.div.neg();if(mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.iadd(num)}return{div,mod}}if(this.negative===0&&num.negative!==0){if(res=this.divmod(num.neg(),mode),mode!==\"mod\")div=res.div.neg();return{div,mod:res.mod}}if((this.negative&num.negative)!==0){if(res=this.neg().divmod(num.neg(),mode),mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.isub(num)}return{div:res.div,mod}}if(num.length>this.length||this.cmp(num)<0)return{div:new BN(0),mod:this};if(num.length===1){if(mode===\"div\")return{div:this.divn(num.words[0]),mod:null};if(mode===\"mod\")return{div:null,mod:new BN(this.modn(num.words[0]))};return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))}}return this._wordDiv(num,mode)},BN.prototype.div=function(num){return this.divmod(num,\"div\",!1).div},BN.prototype.mod=function(num){return this.divmod(num,\"mod\",!1).mod},BN.prototype.umod=function(num){return this.divmod(num,\"mod\",!0).mod},BN.prototype.divRound=function(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod,half=num.ushrn(1),r2=num.andln(1),cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)},BN.prototype.modn=function(num){assert(num<=67108863);var p=67108864%num,acc=0;for(var i=this.length-1;i>=0;i--)acc=(p*acc+(this.words[i]|0))%num;return acc},BN.prototype.idivn=function(num){assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0,carry=w%num}return this.strip()},BN.prototype.divn=function(num){return this.clone().idivn(num)},BN.prototype.egcd=function(p){assert(p.negative===0),assert(!p.isZero());var x=this,y=p.clone();if(x.negative!==0)x=x.umod(p);else x=x.clone();var A=new BN(1),B=new BN(0),C=new BN(0),D=new BN(1),g=0;while(x.isEven()&&y.isEven())x.iushrn(1),y.iushrn(1),++g;var yp=y.clone(),xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd())A.iadd(yp),B.isub(xp);A.iushrn(1),B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd())C.iadd(yp),D.isub(xp);C.iushrn(1),D.iushrn(1)}}if(x.cmp(y)>=0)x.isub(y),A.isub(C),B.isub(D);else y.isub(x),C.isub(A),D.isub(B)}return{a:C,b:D,gcd:y.iushln(g)}},BN.prototype._invmp=function(p){assert(p.negative===0),assert(!p.isZero());var a=this,b=p.clone();if(a.negative!==0)a=a.umod(p);else a=a.clone();var x1=new BN(1),x2=new BN(0),delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd())x1.iadd(delta);x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd())x2.iadd(delta);x2.iushrn(1)}}if(a.cmp(b)>=0)a.isub(b),x1.isub(x2);else b.isub(a),x2.isub(x1)}var res;if(a.cmpn(1)===0)res=x1;else res=x2;if(res.cmpn(0)<0)res.iadd(p);return res},BN.prototype.gcd=function(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone(),b=num.clone();a.negative=0,b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++)a.iushrn(1),b.iushrn(1);do{while(a.isEven())a.iushrn(1);while(b.isEven())b.iushrn(1);var r=a.cmp(b);if(r<0){var t=a;a=b,b=t}else if(r===0||b.cmpn(1)===0)break;a.isub(b)}while(!0);return b.iushln(shift)},BN.prototype.invm=function(num){return this.egcd(num).a.umod(num)},BN.prototype.isEven=function(){return(this.words[0]&1)===0},BN.prototype.isOdd=function(){return(this.words[0]&1)===1},BN.prototype.andln=function(num){return this.words[0]&num},BN.prototype.bincn=function(bit){assert(typeof bit===\"number\");var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return this._expand(s+1),this.words[s]|=q,this;var carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i]|0;w+=carry,carry=w>>>26,w&=67108863,this.words[i]=w}if(carry!==0)this.words[i]=carry,this.length++;return this},BN.prototype.isZero=function(){return this.length===1&&this.words[0]===0},BN.prototype.cmpn=function(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this.strip();var res;if(this.length>1)res=1;else{if(negative)num=-num;assert(num<=67108863,\"Number is too big\");var w=this.words[0]|0;res=w===num?0:w<num?-1:1}if(this.negative!==0)return-res|0;return res},BN.prototype.cmp=function(num){if(this.negative!==0&&num.negative===0)return-1;if(this.negative===0&&num.negative!==0)return 1;var res=this.ucmp(num);if(this.negative!==0)return-res|0;return res},BN.prototype.ucmp=function(num){if(this.length>num.length)return 1;if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i]|0,b=num.words[i]|0;if(a===b)continue;if(a<b)res=-1;else if(a>b)res=1;break}return res},BN.prototype.gtn=function(num){return this.cmpn(num)===1},BN.prototype.gt=function(num){return this.cmp(num)===1},BN.prototype.gten=function(num){return this.cmpn(num)>=0},BN.prototype.gte=function(num){return this.cmp(num)>=0},BN.prototype.ltn=function(num){return this.cmpn(num)===-1},BN.prototype.lt=function(num){return this.cmp(num)===-1},BN.prototype.lten=function(num){return this.cmpn(num)<=0},BN.prototype.lte=function(num){return this.cmp(num)<=0},BN.prototype.eqn=function(num){return this.cmpn(num)===0},BN.prototype.eq=function(num){return this.cmp(num)===0},BN.red=function(num){return new Red(num)},BN.prototype.toRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),assert(this.negative===0,\"red works only with positives\"),ctx.convertTo(this)._forceRed(ctx)},BN.prototype.fromRed=function(){return assert(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},BN.prototype._forceRed=function(ctx){return this.red=ctx,this},BN.prototype.forceRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),this._forceRed(ctx)},BN.prototype.redAdd=function(num){return assert(this.red,\"redAdd works only with red numbers\"),this.red.add(this,num)},BN.prototype.redIAdd=function(num){return assert(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,num)},BN.prototype.redSub=function(num){return assert(this.red,\"redSub works only with red numbers\"),this.red.sub(this,num)},BN.prototype.redISub=function(num){return assert(this.red,\"redISub works only with red numbers\"),this.red.isub(this,num)},BN.prototype.redShl=function(num){return assert(this.red,\"redShl works only with red numbers\"),this.red.shl(this,num)},BN.prototype.redMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.mul(this,num)},BN.prototype.redIMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.imul(this,num)},BN.prototype.redSqr=function(){return assert(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},BN.prototype.redISqr=function(){return assert(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},BN.prototype.redSqrt=function(){return assert(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},BN.prototype.redInvm=function(){return assert(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},BN.prototype.redNeg=function(){return assert(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},BN.prototype.redPow=function(num){return assert(this.red&&!num.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name,this.p=new BN(p,16),this.n=this.p.bitLength(),this.k=new BN(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}MPrime.prototype._tmp=function(){var tmp=new BN(null);return tmp.words=Array(Math.ceil(this.n/13)),tmp},MPrime.prototype.ireduce=function(num){var r=num,rlen;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),rlen=r.bitLength();while(rlen>this.n);var cmp=rlen<this.n?-1:r.ucmp(this.p);if(cmp===0)r.words[0]=0,r.length=1;else if(cmp>0)r.isub(this.p);else if(r.strip!==void 0)r.strip();else r._strip();return r},MPrime.prototype.split=function(input,out){input.iushrn(this.n,0,out)},MPrime.prototype.imulK=function(num){return num.imul(this.k)};function K256(){MPrime.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}inherits(K256,MPrime),K256.prototype.split=function(input,output){var mask=4194303,outLen=Math.min(input.length,9);for(var i=0;i<outLen;i++)output.words[i]=input.words[i];if(output.length=outLen,input.length<=9){input.words[0]=0,input.length=1;return}var prev=input.words[9];output.words[output.length++]=prev&mask;for(i=10;i<input.length;i++){var next=input.words[i]|0;input.words[i-10]=(next&mask)<<4|prev>>>22,prev=next}if(prev>>>=22,input.words[i-10]=prev,prev===0&&input.length>10)input.length-=10;else input.length-=9},K256.prototype.imulK=function(num){num.words[num.length]=0,num.words[num.length+1]=0,num.length+=2;var lo=0;for(var i=0;i<num.length;i++){var w=num.words[i]|0;lo+=w*977,num.words[i]=lo&67108863,lo=w*64+(lo/67108864|0)}if(num.words[num.length-1]===0){if(num.length--,num.words[num.length-1]===0)num.length--}return num};function P224(){MPrime.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}inherits(P224,MPrime);function P192(){MPrime.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}inherits(P192,MPrime);function P25519(){MPrime.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}inherits(P25519,MPrime),P25519.prototype.imulK=function(num){var carry=0;for(var i=0;i<num.length;i++){var hi=(num.words[i]|0)*19+carry,lo=hi&67108863;hi>>>=26,num.words[i]=lo,carry=hi}if(carry!==0)num.words[num.length++]=carry;return num},BN._prime=function(name){if(primes[name])return primes[name];var prime;if(name===\"k256\")prime=new K256;else if(name===\"p224\")prime=new P224;else if(name===\"p192\")prime=new P192;else if(name===\"p25519\")prime=new P25519;else throw Error(\"Unknown prime \"+name);return primes[name]=prime,prime};function Red(m){if(typeof m===\"string\"){var prime=BN._prime(m);this.m=prime.p,this.prime=prime}else assert(m.gtn(1),\"modulus must be greater than 1\"),this.m=m,this.prime=null}Red.prototype._verify1=function(a){assert(a.negative===0,\"red works only with positives\"),assert(a.red,\"red works only with red numbers\")},Red.prototype._verify2=function(a,b){assert((a.negative|b.negative)===0,\"red works only with positives\"),assert(a.red&&a.red===b.red,\"red works only with red numbers\")},Red.prototype.imod=function(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.umod(this.m)._forceRed(this)},Red.prototype.neg=function(a){if(a.isZero())return a.clone();return this.m.sub(a)._forceRed(this)},Red.prototype.add=function(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res._forceRed(this)},Red.prototype.iadd=function(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res},Red.prototype.sub=function(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res._forceRed(this)},Red.prototype.isub=function(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res},Red.prototype.shl=function(a,num){return this._verify1(a),this.imod(a.ushln(num))},Red.prototype.imul=function(a,b){return this._verify2(a,b),this.imod(a.imul(b))},Red.prototype.mul=function(a,b){return this._verify2(a,b),this.imod(a.mul(b))},Red.prototype.isqr=function(a){return this.imul(a,a.clone())},Red.prototype.sqr=function(a){return this.mul(a,a)},Red.prototype.sqrt=function(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);if(assert(mod3%2===1),mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1),s=0;while(!q.isZero()&&q.andln(1)===0)s++,q.iushrn(1);assert(!q.isZero());var one=new BN(1).toRed(this),nOne=one.redNeg(),lpow=this.m.subn(1).iushrn(1),z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0)z.redIAdd(nOne);var c=this.pow(z,q),r=this.pow(a,q.addn(1).iushrn(1)),t=this.pow(a,q),m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++)tmp=tmp.redSqr();assert(i<m);var b=this.pow(c,new BN(1).iushln(m-i-1));r=r.redMul(b),c=b.redSqr(),t=t.redMul(c),m=i}return r},Red.prototype.invm=function(a){var inv=a._invmp(this.m);if(inv.negative!==0)return inv.negative=0,this.imod(inv).redNeg();else return this.imod(inv)},Red.prototype.pow=function(a,num){if(num.isZero())return new BN(1).toRed(this);if(num.cmpn(1)===0)return a.clone();var windowSize=4,wnd=Array(1<<windowSize);wnd[0]=new BN(1).toRed(this),wnd[1]=a;for(var i=2;i<wnd.length;i++)wnd[i]=this.mul(wnd[i-1],a);var res=wnd[0],current=0,currentLen=0,start=num.bitLength()%26;if(start===0)start=26;for(i=num.length-1;i>=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0])res=this.sqr(res);if(bit===0&&current===0){currentLen=0;continue}if(current<<=1,current|=bit,currentLen++,currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]),currentLen=0,current=0}start=26}return res},Red.prototype.convertTo=function(num){var r=num.umod(this.m);return r===num?r.clone():r},Red.prototype.convertFrom=function(num){var res=num.clone();return res.red=null,res},BN.mont=function(num){return new Mont(num)};function Mont(m){if(Red.call(this,m),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new BN(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}inherits(Mont,Red),Mont.prototype.convertTo=function(num){return this.imod(num.ushln(this.shift))},Mont.prototype.convertFrom=function(num){var r=this.imod(num.mul(this.rinv));return r.red=null,r},Mont.prototype.imul=function(a,b){if(a.isZero()||b.isZero())return a.words[0]=0,a.length=1,a;var t=a.imul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.mul=function(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.invm=function(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(typeof module>\"u\"||module,exports)});var require_api=__commonJS((exports)=>{var asn1=require_asn1(),inherits=require_inherits(),api=exports;api.define=function(name,body){return new Entity(name,body)};function Entity(name,body){this.name=name,this.body=body,this.decoders={},this.encoders={}}Entity.prototype._createNamed=function(base){var named;try{named=require(\"vm\").runInThisContext(\"(function \"+this.name+`(entity) {\n this._initNamed(entity);\n})`)}catch(e){named=function(entity){this._initNamed(entity)}}return inherits(named,base),named.prototype._initNamed=function(entity){base.call(this,entity)},new named(this)};Entity.prototype._getDecoder=function(enc){if(enc=enc||\"der\",!this.decoders.hasOwnProperty(enc))this.decoders[enc]=this._createNamed(asn1.decoders[enc]);return this.decoders[enc]};Entity.prototype.decode=function(data,enc,options){return this._getDecoder(enc).decode(data,options)};Entity.prototype._getEncoder=function(enc){if(enc=enc||\"der\",!this.encoders.hasOwnProperty(enc))this.encoders[enc]=this._createNamed(asn1.encoders[enc]);return this.encoders[enc]};Entity.prototype.encode=function(data,enc,reporter){return this._getEncoder(enc).encode(data,reporter)}});var require_reporter=__commonJS((exports)=>{var inherits=require_inherits();function Reporter(options){this._reporterState={obj:null,path:[],options:options||{},errors:[]}}exports.Reporter=Reporter;Reporter.prototype.isError=function(obj){return obj instanceof ReporterError};Reporter.prototype.save=function(){var state=this._reporterState;return{obj:state.obj,pathLen:state.path.length}};Reporter.prototype.restore=function(data){var state=this._reporterState;state.obj=data.obj,state.path=state.path.slice(0,data.pathLen)};Reporter.prototype.enterKey=function(key){return this._reporterState.path.push(key)};Reporter.prototype.exitKey=function(index){var state=this._reporterState;state.path=state.path.slice(0,index-1)};Reporter.prototype.leaveKey=function(index,key,value){var state=this._reporterState;if(this.exitKey(index),state.obj!==null)state.obj[key]=value};Reporter.prototype.path=function(){return this._reporterState.path.join(\"/\")};Reporter.prototype.enterObject=function(){var state=this._reporterState,prev=state.obj;return state.obj={},prev};Reporter.prototype.leaveObject=function(prev){var state=this._reporterState,now=state.obj;return state.obj=prev,now};Reporter.prototype.error=function(msg){var err,state=this._reporterState,inherited=msg instanceof ReporterError;if(inherited)err=msg;else err=new ReporterError(state.path.map(function(elem){return\"[\"+JSON.stringify(elem)+\"]\"}).join(\"\"),msg.message||msg,msg.stack);if(!state.options.partial)throw err;if(!inherited)state.errors.push(err);return err};Reporter.prototype.wrapResult=function(result){var state=this._reporterState;if(!state.options.partial)return result;return{result:this.isError(result)?null:result,errors:state.errors}};function ReporterError(path,msg){this.path=path,this.rethrow(msg)}inherits(ReporterError,Error);ReporterError.prototype.rethrow=function(msg){if(this.message=msg+\" at: \"+(this.path||\"(shallow)\"),Error.captureStackTrace)Error.captureStackTrace(this,ReporterError);if(!this.stack)try{throw Error(this.message)}catch(e){this.stack=e.stack}return this}});var require_buffer=__commonJS((exports)=>{var inherits=require_inherits(),Reporter=require_base2().Reporter,Buffer2=require(\"buffer\").Buffer;function DecoderBuffer(base,options){if(Reporter.call(this,options),!Buffer2.isBuffer(base)){this.error(\"Input not Buffer\");return}this.base=base,this.offset=0,this.length=base.length}inherits(DecoderBuffer,Reporter);exports.DecoderBuffer=DecoderBuffer;DecoderBuffer.prototype.save=function(){return{offset:this.offset,reporter:Reporter.prototype.save.call(this)}};DecoderBuffer.prototype.restore=function(save){var res=new DecoderBuffer(this.base);return res.offset=save.offset,res.length=this.offset,this.offset=save.offset,Reporter.prototype.restore.call(this,save.reporter),res};DecoderBuffer.prototype.isEmpty=function(){return this.offset===this.length};DecoderBuffer.prototype.readUInt8=function(fail){if(this.offset+1<=this.length)return this.base.readUInt8(this.offset++,!0);else return this.error(fail||\"DecoderBuffer overrun\")};DecoderBuffer.prototype.skip=function(bytes,fail){if(!(this.offset+bytes<=this.length))return this.error(fail||\"DecoderBuffer overrun\");var res=new DecoderBuffer(this.base);return res._reporterState=this._reporterState,res.offset=this.offset,res.length=this.offset+bytes,this.offset+=bytes,res};DecoderBuffer.prototype.raw=function(save){return this.base.slice(save?save.offset:this.offset,this.length)};function EncoderBuffer(value,reporter){if(Array.isArray(value))this.length=0,this.value=value.map(function(item){if(!(item instanceof EncoderBuffer))item=new EncoderBuffer(item,reporter);return this.length+=item.length,item},this);else if(typeof value===\"number\"){if(!(0<=value&&value<=255))return reporter.error(\"non-byte EncoderBuffer value\");this.value=value,this.length=1}else if(typeof value===\"string\")this.value=value,this.length=Buffer2.byteLength(value);else if(Buffer2.isBuffer(value))this.value=value,this.length=value.length;else return reporter.error(\"Unsupported type: \"+typeof value)}exports.EncoderBuffer=EncoderBuffer;EncoderBuffer.prototype.join=function(out,offset){if(!out)out=new Buffer2(this.length);if(!offset)offset=0;if(this.length===0)return out;if(Array.isArray(this.value))this.value.forEach(function(item){item.join(out,offset),offset+=item.length});else{if(typeof this.value===\"number\")out[offset]=this.value;else if(typeof this.value===\"string\")out.write(this.value,offset);else if(Buffer2.isBuffer(this.value))this.value.copy(out,offset);offset+=this.length}return out}});var require_node=__commonJS((exports,module)=>{var Reporter=require_base2().Reporter,EncoderBuffer=require_base2().EncoderBuffer,DecoderBuffer=require_base2().DecoderBuffer,assert=require_minimalistic_assert(),tags=[\"seq\",\"seqof\",\"set\",\"setof\",\"objid\",\"bool\",\"gentime\",\"utctime\",\"null_\",\"enum\",\"int\",\"objDesc\",\"bitstr\",\"bmpstr\",\"charstr\",\"genstr\",\"graphstr\",\"ia5str\",\"iso646str\",\"numstr\",\"octstr\",\"printstr\",\"t61str\",\"unistr\",\"utf8str\",\"videostr\"],methods=[\"key\",\"obj\",\"use\",\"optional\",\"explicit\",\"implicit\",\"def\",\"choice\",\"any\",\"contains\"].concat(tags),overrided=[\"_peekTag\",\"_decodeTag\",\"_use\",\"_decodeStr\",\"_decodeObjid\",\"_decodeTime\",\"_decodeNull\",\"_decodeInt\",\"_decodeBool\",\"_decodeList\",\"_encodeComposite\",\"_encodeStr\",\"_encodeObjid\",\"_encodeTime\",\"_encodeNull\",\"_encodeInt\",\"_encodeBool\"];function Node(enc,parent){var state={};if(this._baseState=state,state.enc=enc,state.parent=parent||null,state.children=null,state.tag=null,state.args=null,state.reverseArgs=null,state.choice=null,state.optional=!1,state.any=!1,state.obj=!1,state.use=null,state.useDecoder=null,state.key=null,state.default=null,state.explicit=null,state.implicit=null,state.contains=null,!state.parent)state.children=[],this._wrap()}module.exports=Node;var stateProps=[\"enc\",\"parent\",\"children\",\"tag\",\"args\",\"reverseArgs\",\"choice\",\"optional\",\"any\",\"obj\",\"use\",\"alteredUse\",\"key\",\"default\",\"explicit\",\"implicit\",\"contains\"];Node.prototype.clone=function(){var state=this._baseState,cstate={};stateProps.forEach(function(prop){cstate[prop]=state[prop]});var res=new this.constructor(cstate.parent);return res._baseState=cstate,res};Node.prototype._wrap=function(){var state=this._baseState;methods.forEach(function(method){this[method]=function(){var clone=new this.constructor(this);return state.children.push(clone),clone[method].apply(clone,arguments)}},this)};Node.prototype._init=function(body){var state=this._baseState;assert(state.parent===null),body.call(this),state.children=state.children.filter(function(child){return child._baseState.parent===this},this),assert.equal(state.children.length,1,\"Root node can have only one child\")};Node.prototype._useArgs=function(args){var state=this._baseState,children=args.filter(function(arg){return arg instanceof this.constructor},this);if(args=args.filter(function(arg){return!(arg instanceof this.constructor)},this),children.length!==0)assert(state.children===null),state.children=children,children.forEach(function(child){child._baseState.parent=this},this);if(args.length!==0)assert(state.args===null),state.args=args,state.reverseArgs=args.map(function(arg){if(typeof arg!==\"object\"||arg.constructor!==Object)return arg;var res={};return Object.keys(arg).forEach(function(key){if(key==(key|0))key|=0;var value=arg[key];res[value]=key}),res})};overrided.forEach(function(method){Node.prototype[method]=function(){var state=this._baseState;throw Error(method+\" not implemented for encoding: \"+state.enc)}});tags.forEach(function(tag){Node.prototype[tag]=function(){var state=this._baseState,args=Array.prototype.slice.call(arguments);return assert(state.tag===null),state.tag=tag,this._useArgs(args),this}});Node.prototype.use=function(item){assert(item);var state=this._baseState;return assert(state.use===null),state.use=item,this};Node.prototype.optional=function(){var state=this._baseState;return state.optional=!0,this};Node.prototype.def=function(val){var state=this._baseState;return assert(state.default===null),state.default=val,state.optional=!0,this};Node.prototype.explicit=function(num){var state=this._baseState;return assert(state.explicit===null&&state.implicit===null),state.explicit=num,this};Node.prototype.implicit=function(num){var state=this._baseState;return assert(state.explicit===null&&state.implicit===null),state.implicit=num,this};Node.prototype.obj=function(){var state=this._baseState,args=Array.prototype.slice.call(arguments);if(state.obj=!0,args.length!==0)this._useArgs(args);return this};Node.prototype.key=function(newKey){var state=this._baseState;return assert(state.key===null),state.key=newKey,this};Node.prototype.any=function(){var state=this._baseState;return state.any=!0,this};Node.prototype.choice=function(obj){var state=this._baseState;return assert(state.choice===null),state.choice=obj,this._useArgs(Object.keys(obj).map(function(key){return obj[key]})),this};Node.prototype.contains=function(item){var state=this._baseState;return assert(state.use===null),state.contains=item,this};Node.prototype._decode=function(input,options){var state=this._baseState;if(state.parent===null)return input.wrapResult(state.children[0]._decode(input,options));var result=state.default,present=!0,prevKey=null;if(state.key!==null)prevKey=input.enterKey(state.key);if(state.optional){var tag=null;if(state.explicit!==null)tag=state.explicit;else if(state.implicit!==null)tag=state.implicit;else if(state.tag!==null)tag=state.tag;if(tag===null&&!state.any){var save=input.save();try{if(state.choice===null)this._decodeGeneric(state.tag,input,options);else this._decodeChoice(input,options);present=!0}catch(e){present=!1}input.restore(save)}else if(present=this._peekTag(input,tag,state.any),input.isError(present))return present}var prevObj;if(state.obj&&present)prevObj=input.enterObject();if(present){if(state.explicit!==null){var explicit=this._decodeTag(input,state.explicit);if(input.isError(explicit))return explicit;input=explicit}var start=input.offset;if(state.use===null&&state.choice===null){if(state.any)var save=input.save();var body=this._decodeTag(input,state.implicit!==null?state.implicit:state.tag,state.any);if(input.isError(body))return body;if(state.any)result=input.raw(save);else input=body}if(options&&options.track&&state.tag!==null)options.track(input.path(),start,input.length,\"tagged\");if(options&&options.track&&state.tag!==null)options.track(input.path(),input.offset,input.length,\"content\");if(state.any)result=result;else if(state.choice===null)result=this._decodeGeneric(state.tag,input,options);else result=this._decodeChoice(input,options);if(input.isError(result))return result;if(!state.any&&state.choice===null&&state.children!==null)state.children.forEach(function(child){child._decode(input,options)});if(state.contains&&(state.tag===\"octstr\"||state.tag===\"bitstr\")){var data=new DecoderBuffer(result);result=this._getUse(state.contains,input._reporterState.obj)._decode(data,options)}}if(state.obj&&present)result=input.leaveObject(prevObj);if(state.key!==null&&(result!==null||present===!0))input.leaveKey(prevKey,state.key,result);else if(prevKey!==null)input.exitKey(prevKey);return result};Node.prototype._decodeGeneric=function(tag,input,options){var state=this._baseState;if(tag===\"seq\"||tag===\"set\")return null;if(tag===\"seqof\"||tag===\"setof\")return this._decodeList(input,tag,state.args[0],options);else if(/str$/.test(tag))return this._decodeStr(input,tag,options);else if(tag===\"objid\"&&state.args)return this._decodeObjid(input,state.args[0],state.args[1],options);else if(tag===\"objid\")return this._decodeObjid(input,null,null,options);else if(tag===\"gentime\"||tag===\"utctime\")return this._decodeTime(input,tag,options);else if(tag===\"null_\")return this._decodeNull(input,options);else if(tag===\"bool\")return this._decodeBool(input,options);else if(tag===\"objDesc\")return this._decodeStr(input,tag,options);else if(tag===\"int\"||tag===\"enum\")return this._decodeInt(input,state.args&&state.args[0],options);if(state.use!==null)return this._getUse(state.use,input._reporterState.obj)._decode(input,options);else return input.error(\"unknown tag: \"+tag)};Node.prototype._getUse=function(entity,obj){var state=this._baseState;if(state.useDecoder=this._use(entity,obj),assert(state.useDecoder._baseState.parent===null),state.useDecoder=state.useDecoder._baseState.children[0],state.implicit!==state.useDecoder._baseState.implicit)state.useDecoder=state.useDecoder.clone(),state.useDecoder._baseState.implicit=state.implicit;return state.useDecoder};Node.prototype._decodeChoice=function(input,options){var state=this._baseState,result=null,match=!1;if(Object.keys(state.choice).some(function(key){var save=input.save(),node=state.choice[key];try{var value=node._decode(input,options);if(input.isError(value))return!1;result={type:key,value},match=!0}catch(e){return input.restore(save),!1}return!0},this),!match)return input.error(\"Choice not matched\");return result};Node.prototype._createEncoderBuffer=function(data){return new EncoderBuffer(data,this.reporter)};Node.prototype._encode=function(data,reporter,parent){var state=this._baseState;if(state.default!==null&&state.default===data)return;var result=this._encodeValue(data,reporter,parent);if(result===void 0)return;if(this._skipDefault(result,reporter,parent))return;return result};Node.prototype._encodeValue=function(data,reporter,parent){var state=this._baseState;if(state.parent===null)return state.children[0]._encode(data,reporter||new Reporter);var result=null;if(this.reporter=reporter,state.optional&&data===void 0)if(state.default!==null)data=state.default;else return;var content=null,primitive=!1;if(state.any)result=this._createEncoderBuffer(data);else if(state.choice)result=this._encodeChoice(data,reporter);else if(state.contains)content=this._getUse(state.contains,parent)._encode(data,reporter),primitive=!0;else if(state.children)content=state.children.map(function(child2){if(child2._baseState.tag===\"null_\")return child2._encode(null,reporter,data);if(child2._baseState.key===null)return reporter.error(\"Child should have a key\");var prevKey=reporter.enterKey(child2._baseState.key);if(typeof data!==\"object\")return reporter.error(\"Child expected, but input is not object\");var res=child2._encode(data[child2._baseState.key],reporter,data);return reporter.leaveKey(prevKey),res},this).filter(function(child2){return child2}),content=this._createEncoderBuffer(content);else if(state.tag===\"seqof\"||state.tag===\"setof\"){if(!(state.args&&state.args.length===1))return reporter.error(\"Too many args for : \"+state.tag);if(!Array.isArray(data))return reporter.error(\"seqof/setof, but data is not Array\");var child=this.clone();child._baseState.implicit=null,content=this._createEncoderBuffer(data.map(function(item){var state2=this._baseState;return this._getUse(state2.args[0],data)._encode(item,reporter)},child))}else if(state.use!==null)result=this._getUse(state.use,parent)._encode(data,reporter);else content=this._encodePrimitive(state.tag,data),primitive=!0;var result;if(!state.any&&state.choice===null){var tag=state.implicit!==null?state.implicit:state.tag,cls=state.implicit===null?\"universal\":\"context\";if(tag===null){if(state.use===null)reporter.error(\"Tag could be omitted only for .use()\")}else if(state.use===null)result=this._encodeComposite(tag,primitive,cls,content)}if(state.explicit!==null)result=this._encodeComposite(state.explicit,!1,\"context\",result);return result};Node.prototype._encodeChoice=function(data,reporter){var state=this._baseState,node=state.choice[data.type];if(!node)assert(!1,data.type+\" not found in \"+JSON.stringify(Object.keys(state.choice)));return node._encode(data.value,reporter)};Node.prototype._encodePrimitive=function(tag,data){var state=this._baseState;if(/str$/.test(tag))return this._encodeStr(data,tag);else if(tag===\"objid\"&&state.args)return this._encodeObjid(data,state.reverseArgs[0],state.args[1]);else if(tag===\"objid\")return this._encodeObjid(data,null,null);else if(tag===\"gentime\"||tag===\"utctime\")return this._encodeTime(data,tag);else if(tag===\"null_\")return this._encodeNull();else if(tag===\"int\"||tag===\"enum\")return this._encodeInt(data,state.args&&state.reverseArgs[0]);else if(tag===\"bool\")return this._encodeBool(data);else if(tag===\"objDesc\")return this._encodeStr(data,tag);else throw Error(\"Unsupported tag: \"+tag)};Node.prototype._isNumstr=function(str){return/^[0-9 ]*$/.test(str)};Node.prototype._isPrintstr=function(str){return/^[A-Za-z0-9 '\\(\\)\\+,\\-\\.\\/:=\\?]*$/.test(str)}});var require_base2=__commonJS((exports)=>{var base=exports;base.Reporter=require_reporter().Reporter;base.DecoderBuffer=require_buffer().DecoderBuffer;base.EncoderBuffer=require_buffer().EncoderBuffer;base.Node=require_node()});var require_der=__commonJS((exports)=>{var constants=require_constants();exports.tagClass={0:\"universal\",1:\"application\",2:\"context\",3:\"private\"};exports.tagClassByName=constants._reverse(exports.tagClass);exports.tag={0:\"end\",1:\"bool\",2:\"int\",3:\"bitstr\",4:\"octstr\",5:\"null_\",6:\"objid\",7:\"objDesc\",8:\"external\",9:\"real\",10:\"enum\",11:\"embed\",12:\"utf8str\",13:\"relativeOid\",16:\"seq\",17:\"set\",18:\"numstr\",19:\"printstr\",20:\"t61str\",21:\"videostr\",22:\"ia5str\",23:\"utctime\",24:\"gentime\",25:\"graphstr\",26:\"iso646str\",27:\"genstr\",28:\"unistr\",29:\"charstr\",30:\"bmpstr\"};exports.tagByName=constants._reverse(exports.tag)});var require_constants=__commonJS((exports)=>{var constants=exports;constants._reverse=function(map){var res={};return Object.keys(map).forEach(function(key){if((key|0)==key)key=key|0;var value=map[key];res[value]=key}),res};constants.der=require_der()});var require_der2=__commonJS((exports,module)=>{var inherits=require_inherits(),asn1=require_asn1(),base=asn1.base,bignum=asn1.bignum,der=asn1.constants.der;function DERDecoder(entity){this.enc=\"der\",this.name=entity.name,this.entity=entity,this.tree=new DERNode,this.tree._init(entity.body)}module.exports=DERDecoder;DERDecoder.prototype.decode=function(data,options){if(!(data instanceof base.DecoderBuffer))data=new base.DecoderBuffer(data,options);return this.tree._decode(data,options)};function DERNode(parent){base.Node.call(this,\"der\",parent)}inherits(DERNode,base.Node);DERNode.prototype._peekTag=function(buffer,tag,any){if(buffer.isEmpty())return!1;var state=buffer.save(),decodedTag=derDecodeTag(buffer,'Failed to peek tag: \"'+tag+'\"');if(buffer.isError(decodedTag))return decodedTag;return buffer.restore(state),decodedTag.tag===tag||decodedTag.tagStr===tag||decodedTag.tagStr+\"of\"===tag||any};DERNode.prototype._decodeTag=function(buffer,tag,any){var decodedTag=derDecodeTag(buffer,'Failed to decode tag of \"'+tag+'\"');if(buffer.isError(decodedTag))return decodedTag;var len=derDecodeLen(buffer,decodedTag.primitive,'Failed to get length of \"'+tag+'\"');if(buffer.isError(len))return len;if(!any&&decodedTag.tag!==tag&&decodedTag.tagStr!==tag&&decodedTag.tagStr+\"of\"!==tag)return buffer.error('Failed to match tag: \"'+tag+'\"');if(decodedTag.primitive||len!==null)return buffer.skip(len,'Failed to match body of: \"'+tag+'\"');var state=buffer.save(),res=this._skipUntilEnd(buffer,'Failed to skip indefinite length body: \"'+this.tag+'\"');if(buffer.isError(res))return res;return len=buffer.offset-state.offset,buffer.restore(state),buffer.skip(len,'Failed to match body of: \"'+tag+'\"')};DERNode.prototype._skipUntilEnd=function(buffer,fail){while(!0){var tag=derDecodeTag(buffer,fail);if(buffer.isError(tag))return tag;var len=derDecodeLen(buffer,tag.primitive,fail);if(buffer.isError(len))return len;var res;if(tag.primitive||len!==null)res=buffer.skip(len);else res=this._skipUntilEnd(buffer,fail);if(buffer.isError(res))return res;if(tag.tagStr===\"end\")break}};DERNode.prototype._decodeList=function(buffer,tag,decoder,options){var result=[];while(!buffer.isEmpty()){var possibleEnd=this._peekTag(buffer,\"end\");if(buffer.isError(possibleEnd))return possibleEnd;var res=decoder.decode(buffer,\"der\",options);if(buffer.isError(res)&&possibleEnd)break;result.push(res)}return result};DERNode.prototype._decodeStr=function(buffer,tag){if(tag===\"bitstr\"){var unused=buffer.readUInt8();if(buffer.isError(unused))return unused;return{unused,data:buffer.raw()}}else if(tag===\"bmpstr\"){var raw=buffer.raw();if(raw.length%2===1)return buffer.error(\"Decoding of string type: bmpstr length mismatch\");var str=\"\";for(var i=0;i<raw.length/2;i++)str+=String.fromCharCode(raw.readUInt16BE(i*2));return str}else if(tag===\"numstr\"){var numstr=buffer.raw().toString(\"ascii\");if(!this._isNumstr(numstr))return buffer.error(\"Decoding of string type: numstr unsupported characters\");return numstr}else if(tag===\"octstr\")return buffer.raw();else if(tag===\"objDesc\")return buffer.raw();else if(tag===\"printstr\"){var printstr=buffer.raw().toString(\"ascii\");if(!this._isPrintstr(printstr))return buffer.error(\"Decoding of string type: printstr unsupported characters\");return printstr}else if(/str$/.test(tag))return buffer.raw().toString();else return buffer.error(\"Decoding of string type: \"+tag+\" unsupported\")};DERNode.prototype._decodeObjid=function(buffer,values,relative){var result,identifiers=[],ident=0;while(!buffer.isEmpty()){var subident=buffer.readUInt8();if(ident<<=7,ident|=subident&127,(subident&128)===0)identifiers.push(ident),ident=0}if(subident&128)identifiers.push(ident);var first=identifiers[0]/40|0,second=identifiers[0]%40;if(relative)result=identifiers;else result=[first,second].concat(identifiers.slice(1));if(values){var tmp=values[result.join(\" \")];if(tmp===void 0)tmp=values[result.join(\".\")];if(tmp!==void 0)result=tmp}return result};DERNode.prototype._decodeTime=function(buffer,tag){var str=buffer.raw().toString();if(tag===\"gentime\")var year=str.slice(0,4)|0,mon=str.slice(4,6)|0,day=str.slice(6,8)|0,hour=str.slice(8,10)|0,min=str.slice(10,12)|0,sec=str.slice(12,14)|0;else if(tag===\"utctime\"){var year=str.slice(0,2)|0,mon=str.slice(2,4)|0,day=str.slice(4,6)|0,hour=str.slice(6,8)|0,min=str.slice(8,10)|0,sec=str.slice(10,12)|0;if(year<70)year=2000+year;else year=1900+year}else return buffer.error(\"Decoding \"+tag+\" time is not supported yet\");return Date.UTC(year,mon-1,day,hour,min,sec,0)};DERNode.prototype._decodeNull=function(buffer){return null};DERNode.prototype._decodeBool=function(buffer){var res=buffer.readUInt8();if(buffer.isError(res))return res;else return res!==0};DERNode.prototype._decodeInt=function(buffer,values){var raw=buffer.raw(),res=new bignum(raw);if(values)res=values[res.toString(10)]||res;return res};DERNode.prototype._use=function(entity,obj){if(typeof entity===\"function\")entity=entity(obj);return entity._getDecoder(\"der\").tree};function derDecodeTag(buf,fail){var tag=buf.readUInt8(fail);if(buf.isError(tag))return tag;var cls=der.tagClass[tag>>6],primitive=(tag&32)===0;if((tag&31)===31){var oct=tag;tag=0;while((oct&128)===128){if(oct=buf.readUInt8(fail),buf.isError(oct))return oct;tag<<=7,tag|=oct&127}}else tag&=31;var tagStr=der.tag[tag];return{cls,primitive,tag,tagStr}}function derDecodeLen(buf,primitive,fail){var len=buf.readUInt8(fail);if(buf.isError(len))return len;if(!primitive&&len===128)return null;if((len&128)===0)return len;var num=len&127;if(num>4)return buf.error(\"length octect is too long\");len=0;for(var i=0;i<num;i++){len<<=8;var j=buf.readUInt8(fail);if(buf.isError(j))return j;len|=j}return len}});var require_pem=__commonJS((exports,module)=>{var inherits=require_inherits(),Buffer2=require(\"buffer\").Buffer,DERDecoder=require_der2();function PEMDecoder(entity){DERDecoder.call(this,entity),this.enc=\"pem\"}inherits(PEMDecoder,DERDecoder);module.exports=PEMDecoder;PEMDecoder.prototype.decode=function(data,options){var lines=data.toString().split(/[\\r\\n]+/g),label=options.label.toUpperCase(),re=/^-----(BEGIN|END) ([^-]+)-----$/,start=-1,end=-1;for(var i=0;i<lines.length;i++){var match=lines[i].match(re);if(match===null)continue;if(match[2]!==label)continue;if(start===-1){if(match[1]!==\"BEGIN\")break;start=i}else{if(match[1]!==\"END\")break;end=i;break}}if(start===-1||end===-1)throw Error(\"PEM section not found for: \"+label);var base64=lines.slice(start+1,end).join(\"\");base64.replace(/[^a-z0-9\\+\\/=]+/gi,\"\");var input=new Buffer2(base64,\"base64\");return DERDecoder.prototype.decode.call(this,input,options)}});var require_decoders=__commonJS((exports)=>{var decoders=exports;decoders.der=require_der2();decoders.pem=require_pem()});var require_der3=__commonJS((exports,module)=>{var inherits=require_inherits(),Buffer2=require(\"buffer\").Buffer,asn1=require_asn1(),base=asn1.base,der=asn1.constants.der;function DEREncoder(entity){this.enc=\"der\",this.name=entity.name,this.entity=entity,this.tree=new DERNode,this.tree._init(entity.body)}module.exports=DEREncoder;DEREncoder.prototype.encode=function(data,reporter){return this.tree._encode(data,reporter).join()};function DERNode(parent){base.Node.call(this,\"der\",parent)}inherits(DERNode,base.Node);DERNode.prototype._encodeComposite=function(tag,primitive,cls,content){var encodedTag=encodeTag(tag,primitive,cls,this.reporter);if(content.length<128){var header=new Buffer2(2);return header[0]=encodedTag,header[1]=content.length,this._createEncoderBuffer([header,content])}var lenOctets=1;for(var i=content.length;i>=256;i>>=8)lenOctets++;var header=new Buffer2(2+lenOctets);header[0]=encodedTag,header[1]=128|lenOctets;for(var i=1+lenOctets,j=content.length;j>0;i--,j>>=8)header[i]=j&255;return this._createEncoderBuffer([header,content])};DERNode.prototype._encodeStr=function(str,tag){if(tag===\"bitstr\")return this._createEncoderBuffer([str.unused|0,str.data]);else if(tag===\"bmpstr\"){var buf=new Buffer2(str.length*2);for(var i=0;i<str.length;i++)buf.writeUInt16BE(str.charCodeAt(i),i*2);return this._createEncoderBuffer(buf)}else if(tag===\"numstr\"){if(!this._isNumstr(str))return this.reporter.error(\"Encoding of string type: numstr supports only digits and space\");return this._createEncoderBuffer(str)}else if(tag===\"printstr\"){if(!this._isPrintstr(str))return this.reporter.error(\"Encoding of string type: printstr supports only latin upper and lower case letters, digits, space, apostrophe, left and rigth parenthesis, plus sign, comma, hyphen, dot, slash, colon, equal sign, question mark\");return this._createEncoderBuffer(str)}else if(/str$/.test(tag))return this._createEncoderBuffer(str);else if(tag===\"objDesc\")return this._createEncoderBuffer(str);else return this.reporter.error(\"Encoding of string type: \"+tag+\" unsupported\")};DERNode.prototype._encodeObjid=function(id,values,relative){if(typeof id===\"string\"){if(!values)return this.reporter.error(\"string objid given, but no values map found\");if(!values.hasOwnProperty(id))return this.reporter.error(\"objid not found in values map\");id=values[id].split(/[\\s\\.]+/g);for(var i=0;i<id.length;i++)id[i]|=0}else if(Array.isArray(id)){id=id.slice();for(var i=0;i<id.length;i++)id[i]|=0}if(!Array.isArray(id))return this.reporter.error(\"objid() should be either array or string, got: \"+JSON.stringify(id));if(!relative){if(id[1]>=40)return this.reporter.error(\"Second objid identifier OOB\");id.splice(0,2,id[0]*40+id[1])}var size=0;for(var i=0;i<id.length;i++){var ident=id[i];for(size++;ident>=128;ident>>=7)size++}var objid=new Buffer2(size),offset=objid.length-1;for(var i=id.length-1;i>=0;i--){var ident=id[i];objid[offset--]=ident&127;while((ident>>=7)>0)objid[offset--]=128|ident&127}return this._createEncoderBuffer(objid)};function two(num){if(num<10)return\"0\"+num;else return num}DERNode.prototype._encodeTime=function(time,tag){var str,date=new Date(time);if(tag===\"gentime\")str=[two(date.getFullYear()),two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),\"Z\"].join(\"\");else if(tag===\"utctime\")str=[two(date.getFullYear()%100),two(date.getUTCMonth()+1),two(date.getUTCDate()),two(date.getUTCHours()),two(date.getUTCMinutes()),two(date.getUTCSeconds()),\"Z\"].join(\"\");else this.reporter.error(\"Encoding \"+tag+\" time is not supported yet\");return this._encodeStr(str,\"octstr\")};DERNode.prototype._encodeNull=function(){return this._createEncoderBuffer(\"\")};DERNode.prototype._encodeInt=function(num,values){if(typeof num===\"string\"){if(!values)return this.reporter.error(\"String int or enum given, but no values map\");if(!values.hasOwnProperty(num))return this.reporter.error(\"Values map doesn't contain: \"+JSON.stringify(num));num=values[num]}if(typeof num!==\"number\"&&!Buffer2.isBuffer(num)){var numArray=num.toArray();if(!num.sign&&numArray[0]&128)numArray.unshift(0);num=new Buffer2(numArray)}if(Buffer2.isBuffer(num)){var size=num.length;if(num.length===0)size++;var out=new Buffer2(size);if(num.copy(out),num.length===0)out[0]=0;return this._createEncoderBuffer(out)}if(num<128)return this._createEncoderBuffer(num);if(num<256)return this._createEncoderBuffer([0,num]);var size=1;for(var i=num;i>=256;i>>=8)size++;var out=Array(size);for(var i=out.length-1;i>=0;i--)out[i]=num&255,num>>=8;if(out[0]&128)out.unshift(0);return this._createEncoderBuffer(new Buffer2(out))};DERNode.prototype._encodeBool=function(value){return this._createEncoderBuffer(value?255:0)};DERNode.prototype._use=function(entity,obj){if(typeof entity===\"function\")entity=entity(obj);return entity._getEncoder(\"der\").tree};DERNode.prototype._skipDefault=function(dataBuffer,reporter,parent){var state=this._baseState,i;if(state.default===null)return!1;var data=dataBuffer.join();if(state.defaultBuffer===void 0)state.defaultBuffer=this._encodeValue(state.default,reporter,parent).join();if(data.length!==state.defaultBuffer.length)return!1;for(i=0;i<data.length;i++)if(data[i]!==state.defaultBuffer[i])return!1;return!0};function encodeTag(tag,primitive,cls,reporter){var res;if(tag===\"seqof\")tag=\"seq\";else if(tag===\"setof\")tag=\"set\";if(der.tagByName.hasOwnProperty(tag))res=der.tagByName[tag];else if(typeof tag===\"number\"&&(tag|0)===tag)res=tag;else return reporter.error(\"Unknown tag: \"+tag);if(res>=31)return reporter.error(\"Multi-octet tag encoding unsupported\");if(!primitive)res|=32;return res|=der.tagClassByName[cls||\"universal\"]<<6,res}});var require_pem2=__commonJS((exports,module)=>{var inherits=require_inherits(),DEREncoder=require_der3();function PEMEncoder(entity){DEREncoder.call(this,entity),this.enc=\"pem\"}inherits(PEMEncoder,DEREncoder);module.exports=PEMEncoder;PEMEncoder.prototype.encode=function(data,options){var buf=DEREncoder.prototype.encode.call(this,data),p=buf.toString(\"base64\"),out=[\"-----BEGIN \"+options.label+\"-----\"];for(var i=0;i<p.length;i+=64)out.push(p.slice(i,i+64));return out.push(\"-----END \"+options.label+\"-----\"),out.join(`\n`)}});var require_encoders=__commonJS((exports)=>{var encoders=exports;encoders.der=require_der3();encoders.pem=require_pem2()});var require_asn1=__commonJS((exports)=>{var asn1=exports;asn1.bignum=require_bn3();asn1.define=require_api().define;asn1.base=require_base2();asn1.constants=require_constants();asn1.decoders=require_decoders();asn1.encoders=require_encoders()});var require_certificate=__commonJS((exports,module)=>{var asn=require_asn1(),Time=asn.define(\"Time\",function(){this.choice({utcTime:this.utctime(),generalTime:this.gentime()})}),AttributeTypeValue=asn.define(\"AttributeTypeValue\",function(){this.seq().obj(this.key(\"type\").objid(),this.key(\"value\").any())}),AlgorithmIdentifier=asn.define(\"AlgorithmIdentifier\",function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"parameters\").optional(),this.key(\"curve\").objid().optional())}),SubjectPublicKeyInfo=asn.define(\"SubjectPublicKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier),this.key(\"subjectPublicKey\").bitstr())}),RelativeDistinguishedName=asn.define(\"RelativeDistinguishedName\",function(){this.setof(AttributeTypeValue)}),RDNSequence=asn.define(\"RDNSequence\",function(){this.seqof(RelativeDistinguishedName)}),Name=asn.define(\"Name\",function(){this.choice({rdnSequence:this.use(RDNSequence)})}),Validity=asn.define(\"Validity\",function(){this.seq().obj(this.key(\"notBefore\").use(Time),this.key(\"notAfter\").use(Time))}),Extension=asn.define(\"Extension\",function(){this.seq().obj(this.key(\"extnID\").objid(),this.key(\"critical\").bool().def(!1),this.key(\"extnValue\").octstr())}),TBSCertificate=asn.define(\"TBSCertificate\",function(){this.seq().obj(this.key(\"version\").explicit(0).int().optional(),this.key(\"serialNumber\").int(),this.key(\"signature\").use(AlgorithmIdentifier),this.key(\"issuer\").use(Name),this.key(\"validity\").use(Validity),this.key(\"subject\").use(Name),this.key(\"subjectPublicKeyInfo\").use(SubjectPublicKeyInfo),this.key(\"issuerUniqueID\").implicit(1).bitstr().optional(),this.key(\"subjectUniqueID\").implicit(2).bitstr().optional(),this.key(\"extensions\").explicit(3).seqof(Extension).optional())}),X509Certificate=asn.define(\"X509Certificate\",function(){this.seq().obj(this.key(\"tbsCertificate\").use(TBSCertificate),this.key(\"signatureAlgorithm\").use(AlgorithmIdentifier),this.key(\"signatureValue\").bitstr())});module.exports=X509Certificate});var require_asn12=__commonJS((exports)=>{var asn1=require_asn1();exports.certificate=require_certificate();var RSAPrivateKey=asn1.define(\"RSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"modulus\").int(),this.key(\"publicExponent\").int(),this.key(\"privateExponent\").int(),this.key(\"prime1\").int(),this.key(\"prime2\").int(),this.key(\"exponent1\").int(),this.key(\"exponent2\").int(),this.key(\"coefficient\").int())});exports.RSAPrivateKey=RSAPrivateKey;var RSAPublicKey=asn1.define(\"RSAPublicKey\",function(){this.seq().obj(this.key(\"modulus\").int(),this.key(\"publicExponent\").int())});exports.RSAPublicKey=RSAPublicKey;var AlgorithmIdentifier=asn1.define(\"AlgorithmIdentifier\",function(){this.seq().obj(this.key(\"algorithm\").objid(),this.key(\"none\").null_().optional(),this.key(\"curve\").objid().optional(),this.key(\"params\").seq().obj(this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int()).optional())}),PublicKey=asn1.define(\"SubjectPublicKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").use(AlgorithmIdentifier),this.key(\"subjectPublicKey\").bitstr())});exports.PublicKey=PublicKey;var PrivateKeyInfo=asn1.define(\"PrivateKeyInfo\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"algorithm\").use(AlgorithmIdentifier),this.key(\"subjectPrivateKey\").octstr())});exports.PrivateKey=PrivateKeyInfo;var EncryptedPrivateKeyInfo=asn1.define(\"EncryptedPrivateKeyInfo\",function(){this.seq().obj(this.key(\"algorithm\").seq().obj(this.key(\"id\").objid(),this.key(\"decrypt\").seq().obj(this.key(\"kde\").seq().obj(this.key(\"id\").objid(),this.key(\"kdeparams\").seq().obj(this.key(\"salt\").octstr(),this.key(\"iters\").int())),this.key(\"cipher\").seq().obj(this.key(\"algo\").objid(),this.key(\"iv\").octstr()))),this.key(\"subjectPrivateKey\").octstr())});exports.EncryptedPrivateKey=EncryptedPrivateKeyInfo;var DSAPrivateKey=asn1.define(\"DSAPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"p\").int(),this.key(\"q\").int(),this.key(\"g\").int(),this.key(\"pub_key\").int(),this.key(\"priv_key\").int())});exports.DSAPrivateKey=DSAPrivateKey;exports.DSAparam=asn1.define(\"DSAparam\",function(){this.int()});var ECParameters=asn1.define(\"ECParameters\",function(){this.choice({namedCurve:this.objid()})}),ECPrivateKey=asn1.define(\"ECPrivateKey\",function(){this.seq().obj(this.key(\"version\").int(),this.key(\"privateKey\").octstr(),this.key(\"parameters\").optional().explicit(0).use(ECParameters),this.key(\"publicKey\").optional().explicit(1).bitstr())});exports.ECPrivateKey=ECPrivateKey;exports.signature=asn1.define(\"signature\",function(){this.seq().obj(this.key(\"r\").int(),this.key(\"s\").int())})});var require_aesid=__commonJS((exports,module)=>{module.exports={\"2.16.840.1.101.3.4.1.1\":\"aes-128-ecb\",\"2.16.840.1.101.3.4.1.2\":\"aes-128-cbc\",\"2.16.840.1.101.3.4.1.3\":\"aes-128-ofb\",\"2.16.840.1.101.3.4.1.4\":\"aes-128-cfb\",\"2.16.840.1.101.3.4.1.21\":\"aes-192-ecb\",\"2.16.840.1.101.3.4.1.22\":\"aes-192-cbc\",\"2.16.840.1.101.3.4.1.23\":\"aes-192-ofb\",\"2.16.840.1.101.3.4.1.24\":\"aes-192-cfb\",\"2.16.840.1.101.3.4.1.41\":\"aes-256-ecb\",\"2.16.840.1.101.3.4.1.42\":\"aes-256-cbc\",\"2.16.840.1.101.3.4.1.43\":\"aes-256-ofb\",\"2.16.840.1.101.3.4.1.44\":\"aes-256-cfb\"}});var require_hash_base=__commonJS((exports,module)=>{var Buffer2=require_safe_buffer().Buffer,Transform=require(\"stream\").Transform,inherits=require_inherits();function HashBase(blockSize){Transform.call(this),this._block=Buffer2.allocUnsafe(blockSize),this._blockSize=blockSize,this._blockOffset=0,this._length=[0,0,0,0],this._finalized=!1}inherits(HashBase,Transform);HashBase.prototype._transform=function(chunk,encoding,callback){var error=null;try{this.update(chunk,encoding)}catch(err){error=err}callback(error)};HashBase.prototype._flush=function(callback){var error=null;try{this.push(this.digest())}catch(err){error=err}callback(error)};var useUint8Array=typeof Uint8Array<\"u\",useArrayBuffer=typeof ArrayBuffer<\"u\"&&typeof Uint8Array<\"u\"&&ArrayBuffer.isView&&(Buffer2.prototype instanceof Uint8Array||Buffer2.TYPED_ARRAY_SUPPORT);function toBuffer(data,encoding){if(data instanceof Buffer2)return data;if(typeof data===\"string\")return Buffer2.from(data,encoding);if(useArrayBuffer&&ArrayBuffer.isView(data)){if(data.byteLength===0)return Buffer2.alloc(0);var res=Buffer2.from(data.buffer,data.byteOffset,data.byteLength);if(res.byteLength===data.byteLength)return res}if(useUint8Array&&data instanceof Uint8Array)return Buffer2.from(data);if(Buffer2.isBuffer(data)&&data.constructor&&typeof data.constructor.isBuffer===\"function\"&&data.constructor.isBuffer(data))return Buffer2.from(data);throw TypeError('The \"data\" argument must be of type string or an instance of Buffer, TypedArray, or DataView.')}HashBase.prototype.update=function(data,encoding){if(this._finalized)throw Error(\"Digest already called\");data=toBuffer(data,encoding);var block=this._block,offset=0;while(this._blockOffset+data.length-offset>=this._blockSize){for(var i=this._blockOffset;i<this._blockSize;)block[i++]=data[offset++];this._update(),this._blockOffset=0}while(offset<data.length)block[this._blockOffset++]=data[offset++];for(var j=0,carry=data.length*8;carry>0;++j)if(this._length[j]+=carry,carry=this._length[j]/4294967296|0,carry>0)this._length[j]-=4294967296*carry;return this};HashBase.prototype._update=function(){throw Error(\"_update is not implemented\")};HashBase.prototype.digest=function(encoding){if(this._finalized)throw Error(\"Digest already called\");this._finalized=!0;var digest=this._digest();if(encoding!==void 0)digest=digest.toString(encoding);this._block.fill(0),this._blockOffset=0;for(var i=0;i<4;++i)this._length[i]=0;return digest};HashBase.prototype._digest=function(){throw Error(\"_digest is not implemented\")};module.exports=HashBase});var require_md5=__commonJS((exports,module)=>{var inherits=require_inherits(),HashBase=require_hash_base(),Buffer2=require_safe_buffer().Buffer,ARRAY16=Array(16);function MD5(){HashBase.call(this,64),this._a=1732584193,this._b=4023233417,this._c=2562383102,this._d=271733878}inherits(MD5,HashBase);MD5.prototype._update=function(){var M=ARRAY16;for(var i=0;i<16;++i)M[i]=this._block.readInt32LE(i*4);var a=this._a,b=this._b,c=this._c,d=this._d;a=fnF(a,b,c,d,M[0],3614090360,7),d=fnF(d,a,b,c,M[1],3905402710,12),c=fnF(c,d,a,b,M[2],606105819,17),b=fnF(b,c,d,a,M[3],3250441966,22),a=fnF(a,b,c,d,M[4],4118548399,7),d=fnF(d,a,b,c,M[5],1200080426,12),c=fnF(c,d,a,b,M[6],2821735955,17),b=fnF(b,c,d,a,M[7],4249261313,22),a=fnF(a,b,c,d,M[8],1770035416,7),d=fnF(d,a,b,c,M[9],2336552879,12),c=fnF(c,d,a,b,M[10],4294925233,17),b=fnF(b,c,d,a,M[11],2304563134,22),a=fnF(a,b,c,d,M[12],1804603682,7),d=fnF(d,a,b,c,M[13],4254626195,12),c=fnF(c,d,a,b,M[14],2792965006,17),b=fnF(b,c,d,a,M[15],1236535329,22),a=fnG(a,b,c,d,M[1],4129170786,5),d=fnG(d,a,b,c,M[6],3225465664,9),c=fnG(c,d,a,b,M[11],643717713,14),b=fnG(b,c,d,a,M[0],3921069994,20),a=fnG(a,b,c,d,M[5],3593408605,5),d=fnG(d,a,b,c,M[10],38016083,9),c=fnG(c,d,a,b,M[15],3634488961,14),b=fnG(b,c,d,a,M[4],3889429448,20),a=fnG(a,b,c,d,M[9],568446438,5),d=fnG(d,a,b,c,M[14],3275163606,9),c=fnG(c,d,a,b,M[3],4107603335,14),b=fnG(b,c,d,a,M[8],1163531501,20),a=fnG(a,b,c,d,M[13],2850285829,5),d=fnG(d,a,b,c,M[2],4243563512,9),c=fnG(c,d,a,b,M[7],1735328473,14),b=fnG(b,c,d,a,M[12],2368359562,20),a=fnH(a,b,c,d,M[5],4294588738,4),d=fnH(d,a,b,c,M[8],2272392833,11),c=fnH(c,d,a,b,M[11],1839030562,16),b=fnH(b,c,d,a,M[14],4259657740,23),a=fnH(a,b,c,d,M[1],2763975236,4),d=fnH(d,a,b,c,M[4],1272893353,11),c=fnH(c,d,a,b,M[7],4139469664,16),b=fnH(b,c,d,a,M[10],3200236656,23),a=fnH(a,b,c,d,M[13],681279174,4),d=fnH(d,a,b,c,M[0],3936430074,11),c=fnH(c,d,a,b,M[3],3572445317,16),b=fnH(b,c,d,a,M[6],76029189,23),a=fnH(a,b,c,d,M[9],3654602809,4),d=fnH(d,a,b,c,M[12],3873151461,11),c=fnH(c,d,a,b,M[15],530742520,16),b=fnH(b,c,d,a,M[2],3299628645,23),a=fnI(a,b,c,d,M[0],4096336452,6),d=fnI(d,a,b,c,M[7],1126891415,10),c=fnI(c,d,a,b,M[14],2878612391,15),b=fnI(b,c,d,a,M[5],4237533241,21),a=fnI(a,b,c,d,M[12],1700485571,6),d=fnI(d,a,b,c,M[3],2399980690,10),c=fnI(c,d,a,b,M[10],4293915773,15),b=fnI(b,c,d,a,M[1],2240044497,21),a=fnI(a,b,c,d,M[8],1873313359,6),d=fnI(d,a,b,c,M[15],4264355552,10),c=fnI(c,d,a,b,M[6],2734768916,15),b=fnI(b,c,d,a,M[13],1309151649,21),a=fnI(a,b,c,d,M[4],4149444226,6),d=fnI(d,a,b,c,M[11],3174756917,10),c=fnI(c,d,a,b,M[2],718787259,15),b=fnI(b,c,d,a,M[9],3951481745,21),this._a=this._a+a|0,this._b=this._b+b|0,this._c=this._c+c|0,this._d=this._d+d|0};MD5.prototype._digest=function(){if(this._block[this._blockOffset++]=128,this._blockOffset>56)this._block.fill(0,this._blockOffset,64),this._update(),this._blockOffset=0;this._block.fill(0,this._blockOffset,56),this._block.writeUInt32LE(this._length[0],56),this._block.writeUInt32LE(this._length[1],60),this._update();var buffer=Buffer2.allocUnsafe(16);return buffer.writeInt32LE(this._a,0),buffer.writeInt32LE(this._b,4),buffer.writeInt32LE(this._c,8),buffer.writeInt32LE(this._d,12),buffer};function rotl(x,n){return x<<n|x>>>32-n}function fnF(a,b,c,d,m,k,s){return rotl(a+(b&c|~b&d)+m+k|0,s)+b|0}function fnG(a,b,c,d,m,k,s){return rotl(a+(b&d|c&~d)+m+k|0,s)+b|0}function fnH(a,b,c,d,m,k,s){return rotl(a+(b^c^d)+m+k|0,s)+b|0}function fnI(a,b,c,d,m,k,s){return rotl(a+(c^(b|~d))+m+k|0,s)+b|0}module.exports=MD5});var require_evp_bytestokey=__commonJS((exports,module)=>{var Buffer2=require_safe_buffer().Buffer,MD5=require_md5();function EVP_BytesToKey(password,salt,keyBits,ivLen){if(!Buffer2.isBuffer(password))password=Buffer2.from(password,\"binary\");if(salt){if(!Buffer2.isBuffer(salt))salt=Buffer2.from(salt,\"binary\");if(salt.length!==8)throw RangeError(\"salt should be Buffer with 8 byte length\")}var keyLen=keyBits/8,key=Buffer2.alloc(keyLen),iv=Buffer2.alloc(ivLen||0),tmp=Buffer2.alloc(0);while(keyLen>0||ivLen>0){var hash=new MD5;if(hash.update(tmp),hash.update(password),salt)hash.update(salt);tmp=hash.digest();var used=0;if(keyLen>0){var keyStart=key.length-keyLen;used=Math.min(keyLen,tmp.length),tmp.copy(key,keyStart,0,used),keyLen-=used}if(used<tmp.length&&ivLen>0){var ivStart=iv.length-ivLen,length=Math.min(ivLen,tmp.length-used);tmp.copy(iv,ivStart,used,used+length),ivLen-=length}}return tmp.fill(0),{key,iv}}module.exports=EVP_BytesToKey});var require_browserify_aes=__commonJS((exports)=>{var crypto2=require(\"crypto\");exports.createCipher=exports.Cipher=crypto2.createCipher;exports.createCipheriv=exports.Cipheriv=crypto2.createCipheriv;exports.createDecipher=exports.Decipher=crypto2.createDecipher;exports.createDecipheriv=exports.Decipheriv=crypto2.createDecipheriv;exports.listCiphers=exports.getCiphers=crypto2.getCiphers});var require_fixProc=__commonJS((exports,module)=>{var findProc=/Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m,startRegex=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m,fullRegex=/^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m,evp=require_evp_bytestokey(),ciphers=require_browserify_aes(),Buffer2=require_safe_buffer().Buffer;module.exports=function(okey,password){var key=okey.toString(),match=key.match(findProc),decrypted;if(!match){var match2=key.match(fullRegex);decrypted=Buffer2.from(match2[2].replace(/[\\r\\n]/g,\"\"),\"base64\")}else{var suite=\"aes\"+match[1],iv=Buffer2.from(match[2],\"hex\"),cipherText=Buffer2.from(match[3].replace(/[\\r\\n]/g,\"\"),\"base64\"),cipherKey=evp(password,iv.slice(0,8),parseInt(match[1],10)).key,out=[],cipher=ciphers.createDecipheriv(suite,cipherKey,iv);out.push(cipher.update(cipherText)),out.push(cipher.final()),decrypted=Buffer2.concat(out)}var tag=key.match(startRegex)[1];return{tag,data:decrypted}}});var require_parse_asn1=__commonJS((exports,module)=>{var asn1=require_asn12(),aesid=require_aesid(),fixProc=require_fixProc(),ciphers=require_browserify_aes(),pbkdf2Sync=require_pbkdf2().pbkdf2Sync,Buffer2=require_safe_buffer().Buffer;function decrypt(data,password){var salt=data.algorithm.decrypt.kde.kdeparams.salt,iters=parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(),10),algo=aesid[data.algorithm.decrypt.cipher.algo.join(\".\")],iv=data.algorithm.decrypt.cipher.iv,cipherText=data.subjectPrivateKey,keylen=parseInt(algo.split(\"-\")[1],10)/8,key=pbkdf2Sync(password,salt,iters,keylen,\"sha1\"),cipher=ciphers.createDecipheriv(algo,key,iv),out=[];return out.push(cipher.update(cipherText)),out.push(cipher.final()),Buffer2.concat(out)}function parseKeys(buffer){var password;if(typeof buffer===\"object\"&&!Buffer2.isBuffer(buffer))password=buffer.passphrase,buffer=buffer.key;if(typeof buffer===\"string\")buffer=Buffer2.from(buffer);var stripped=fixProc(buffer,password),type=stripped.tag,data=stripped.data,subtype,ndata;switch(type){case\"CERTIFICATE\":ndata=asn1.certificate.decode(data,\"der\").tbsCertificate.subjectPublicKeyInfo;case\"PUBLIC KEY\":if(!ndata)ndata=asn1.PublicKey.decode(data,\"der\");switch(subtype=ndata.algorithm.algorithm.join(\".\"),subtype){case\"1.2.840.113549.1.1.1\":return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data,\"der\");case\"1.2.840.10045.2.1\":return ndata.subjectPrivateKey=ndata.subjectPublicKey,{type:\"ec\",data:ndata};case\"1.2.840.10040.4.1\":return ndata.algorithm.params.pub_key=asn1.DSAparam.decode(ndata.subjectPublicKey.data,\"der\"),{type:\"dsa\",data:ndata.algorithm.params};default:throw Error(\"unknown key id \"+subtype)}case\"ENCRYPTED PRIVATE KEY\":data=asn1.EncryptedPrivateKey.decode(data,\"der\"),data=decrypt(data,password);case\"PRIVATE KEY\":switch(ndata=asn1.PrivateKey.decode(data,\"der\"),subtype=ndata.algorithm.algorithm.join(\".\"),subtype){case\"1.2.840.113549.1.1.1\":return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey,\"der\");case\"1.2.840.10045.2.1\":return{curve:ndata.algorithm.curve,privateKey:asn1.ECPrivateKey.decode(ndata.subjectPrivateKey,\"der\").privateKey};case\"1.2.840.10040.4.1\":return ndata.algorithm.params.priv_key=asn1.DSAparam.decode(ndata.subjectPrivateKey,\"der\"),{type:\"dsa\",params:ndata.algorithm.params};default:throw Error(\"unknown key id \"+subtype)}case\"RSA PUBLIC KEY\":return asn1.RSAPublicKey.decode(data,\"der\");case\"RSA PRIVATE KEY\":return asn1.RSAPrivateKey.decode(data,\"der\");case\"DSA PRIVATE KEY\":return{type:\"dsa\",params:asn1.DSAPrivateKey.decode(data,\"der\")};case\"EC PRIVATE KEY\":return data=asn1.ECPrivateKey.decode(data,\"der\"),{curve:data.parameters.value,privateKey:data.privateKey};default:throw Error(\"unknown key type \"+type)}}parseKeys.signature=asn1.signature;module.exports=parseKeys});var require_mgf=__commonJS((exports,module)=>{var createHash=require_create_hash(),Buffer2=require_safe_buffer().Buffer;module.exports=function(seed,len){var t=Buffer2.alloc(0),i=0,c;while(t.length<len)c=i2ops(i++),t=Buffer2.concat([t,createHash(\"sha1\").update(seed).update(c).digest()]);return t.slice(0,len)};function i2ops(c){var out=Buffer2.allocUnsafe(4);return out.writeUInt32BE(c,0),out}});var require_xor=__commonJS((exports,module)=>{module.exports=function(a,b){var len=a.length,i=-1;while(++i<len)a[i]^=b[i];return a}});var require_bn4=__commonJS((exports,module)=>{(function(module2,exports2){function assert(val,msg){if(!val)throw Error(msg||\"Assertion failed\")}function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype,ctor.prototype=new TempCtor,ctor.prototype.constructor=ctor}function BN(number,base,endian){if(BN.isBN(number))return number;if(this.negative=0,this.words=null,this.length=0,this.red=null,number!==null){if(base===\"le\"||base===\"be\")endian=base,base=10;this._init(number||0,base||10,endian||\"be\")}}if(typeof module2===\"object\")module2.exports=BN;else exports2.BN=BN;BN.BN=BN,BN.wordSize=26;var Buffer2;try{if(typeof window<\"u\"&&typeof window.Buffer<\"u\")Buffer2=window.Buffer;else Buffer2=require(\"buffer\").Buffer}catch(e){}BN.isBN=function(num){if(num instanceof BN)return!0;return num!==null&&typeof num===\"object\"&&num.constructor.wordSize===BN.wordSize&&Array.isArray(num.words)},BN.max=function(left,right){if(left.cmp(right)>0)return left;return right},BN.min=function(left,right){if(left.cmp(right)<0)return left;return right},BN.prototype._init=function(number,base,endian){if(typeof number===\"number\")return this._initNumber(number,base,endian);if(typeof number===\"object\")return this._initArray(number,base,endian);if(base===\"hex\")base=16;assert(base===(base|0)&&base>=2&&base<=36),number=number.toString().replace(/\\s+/g,\"\");var start=0;if(number[0]===\"-\")start++,this.negative=1;if(start<number.length){if(base===16)this._parseHex(number,start,endian);else if(this._parseBase(number,base,start),endian===\"le\")this._initArray(this.toArray(),base,endian)}},BN.prototype._initNumber=function(number,base,endian){if(number<0)this.negative=1,number=-number;if(number<67108864)this.words=[number&67108863],this.length=1;else if(number<4503599627370496)this.words=[number&67108863,number/67108864&67108863],this.length=2;else assert(number<9007199254740992),this.words=[number&67108863,number/67108864&67108863,1],this.length=3;if(endian!==\"le\")return;this._initArray(this.toArray(),base,endian)},BN.prototype._initArray=function(number,base,endian){if(assert(typeof number.length===\"number\"),number.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(number.length/3),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var j,w,off=0;if(endian===\"be\"){for(i=number.length-1,j=0;i>=0;i-=3)if(w=number[i]|number[i-1]<<8|number[i-2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}else if(endian===\"le\"){for(i=0,j=0;i<number.length;i+=3)if(w=number[i]|number[i+1]<<8|number[i+2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}return this.strip()};function parseHex4Bits(string,index){var c=string.charCodeAt(index);if(c>=65&&c<=70)return c-55;else if(c>=97&&c<=102)return c-87;else return c-48&15}function parseHexByte(string,lowerBound,index){var r=parseHex4Bits(string,index);if(index-1>=lowerBound)r|=parseHex4Bits(string,index-1)<<4;return r}BN.prototype._parseHex=function(number,start,endian){this.length=Math.ceil((number.length-start)/6),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var off=0,j=0,w;if(endian===\"be\")for(i=number.length-1;i>=start;i-=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8;else{var parseLength=number.length-start;for(i=parseLength%2===0?start+1:start;i<number.length;i+=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8}this.strip()};function parseBase(str,start,end,mul){var r=0,len=Math.min(str.length,end);for(var i=start;i<len;i++){var c=str.charCodeAt(i)-48;if(r*=mul,c>=49)r+=c-49+10;else if(c>=17)r+=c-17+10;else r+=c}return r}BN.prototype._parseBase=function(number,base,start){this.words=[0],this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base)limbLen++;limbLen--,limbPow=limbPow/base|0;var total=number.length-start,mod=total%limbLen,end=Math.min(total,total-mod)+start,word=0;for(var i=start;i<end;i+=limbLen)if(word=parseBase(number,i,i+limbLen,base),this.imuln(limbPow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word);if(mod!==0){var pow=1;word=parseBase(number,i,number.length,base);for(i=0;i<mod;i++)pow*=base;if(this.imuln(pow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word)}this.strip()},BN.prototype.copy=function(dest){dest.words=Array(this.length);for(var i=0;i<this.length;i++)dest.words[i]=this.words[i];dest.length=this.length,dest.negative=this.negative,dest.red=this.red},BN.prototype.clone=function(){var r=new BN(null);return this.copy(r),r},BN.prototype._expand=function(size){while(this.length<size)this.words[this.length++]=0;return this},BN.prototype.strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},BN.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},BN.prototype.inspect=function(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"};var zeros=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(BN.prototype.toString=function(base,padding){base=base||10,padding=padding|0||1;var out;if(base===16||base===\"hex\"){out=\"\";var off=0,carry=0;for(var i=0;i<this.length;i++){var w=this.words[i],word=((w<<off|carry)&16777215).toString(16);if(carry=w>>>24-off&16777215,off+=2,off>=26)off-=26,i--;if(carry!==0||i!==this.length-1)out=zeros[6-word.length]+word+out;else out=word+out}if(carry!==0)out=carry.toString(16)+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base],groupBase=groupBases[base];out=\"\";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modn(groupBase).toString(base);if(c=c.idivn(groupBase),!c.isZero())out=zeros[groupSize-r.length]+r+out;else out=r+out}if(this.isZero())out=\"0\"+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}assert(!1,\"Base should be between 2 and 36\")},BN.prototype.toNumber=function(){var ret=this.words[0];if(this.length===2)ret+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)ret+=4503599627370496+this.words[1]*67108864;else if(this.length>2)assert(!1,\"Number can only safely store up to 53 bits\");return this.negative!==0?-ret:ret},BN.prototype.toJSON=function(){return this.toString(16)},BN.prototype.toBuffer=function(endian,length){return assert(typeof Buffer2<\"u\"),this.toArrayLike(Buffer2,endian,length)},BN.prototype.toArray=function(endian,length){return this.toArrayLike(Array,endian,length)},BN.prototype.toArrayLike=function(ArrayType,endian,length){var byteLength=this.byteLength(),reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,\"byte array longer than desired length\"),assert(reqLength>0,\"Requested array length <= 0\"),this.strip();var littleEndian=endian===\"le\",res=new ArrayType(reqLength),b,i,q=this.clone();if(!littleEndian){for(i=0;i<reqLength-byteLength;i++)res[i]=0;for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[reqLength-i-1]=b}else{for(i=0;!q.isZero();i++)b=q.andln(255),q.iushrn(8),res[i]=b;for(;i<reqLength;i++)res[i]=0}return res},Math.clz32)BN.prototype._countBits=function(w){return 32-Math.clz32(w)};else BN.prototype._countBits=function(w){var t=w,r=0;if(t>=4096)r+=13,t>>>=13;if(t>=64)r+=7,t>>>=7;if(t>=8)r+=4,t>>>=4;if(t>=2)r+=2,t>>>=2;return r+t};BN.prototype._zeroBits=function(w){if(w===0)return 26;var t=w,r=0;if((t&8191)===0)r+=13,t>>>=13;if((t&127)===0)r+=7,t>>>=7;if((t&15)===0)r+=4,t>>>=4;if((t&3)===0)r+=2,t>>>=2;if((t&1)===0)r++;return r},BN.prototype.bitLength=function(){var w=this.words[this.length-1],hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=Array(num.bitLength());for(var bit=0;bit<w.length;bit++){var off=bit/26|0,wbit=bit%26;w[bit]=(num.words[off]&1<<wbit)>>>wbit}return w}BN.prototype.zeroBits=function(){if(this.isZero())return 0;var r=0;for(var i=0;i<this.length;i++){var b=this._zeroBits(this.words[i]);if(r+=b,b!==26)break}return r},BN.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},BN.prototype.toTwos=function(width){if(this.negative!==0)return this.abs().inotn(width).iaddn(1);return this.clone()},BN.prototype.fromTwos=function(width){if(this.testn(width-1))return this.notn(width).iaddn(1).ineg();return this.clone()},BN.prototype.isNeg=function(){return this.negative!==0},BN.prototype.neg=function(){return this.clone().ineg()},BN.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},BN.prototype.iuor=function(num){while(this.length<num.length)this.words[this.length++]=0;for(var i=0;i<num.length;i++)this.words[i]=this.words[i]|num.words[i];return this.strip()},BN.prototype.ior=function(num){return assert((this.negative|num.negative)===0),this.iuor(num)},BN.prototype.or=function(num){if(this.length>num.length)return this.clone().ior(num);return num.clone().ior(this)},BN.prototype.uor=function(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)},BN.prototype.iuand=function(num){var b;if(this.length>num.length)b=num;else b=this;for(var i=0;i<b.length;i++)this.words[i]=this.words[i]&num.words[i];return this.length=b.length,this.strip()},BN.prototype.iand=function(num){return assert((this.negative|num.negative)===0),this.iuand(num)},BN.prototype.and=function(num){if(this.length>num.length)return this.clone().iand(num);return num.clone().iand(this)},BN.prototype.uand=function(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)},BN.prototype.iuxor=function(num){var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;for(var i=0;i<b.length;i++)this.words[i]=a.words[i]^b.words[i];if(this!==a)for(;i<a.length;i++)this.words[i]=a.words[i];return this.length=a.length,this.strip()},BN.prototype.ixor=function(num){return assert((this.negative|num.negative)===0),this.iuxor(num)},BN.prototype.xor=function(num){if(this.length>num.length)return this.clone().ixor(num);return num.clone().ixor(this)},BN.prototype.uxor=function(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)},BN.prototype.inotn=function(width){assert(typeof width===\"number\"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0,bitsLeft=width%26;if(this._expand(bytesNeeded),bitsLeft>0)bytesNeeded--;for(var i=0;i<bytesNeeded;i++)this.words[i]=~this.words[i]&67108863;if(bitsLeft>0)this.words[i]=~this.words[i]&67108863>>26-bitsLeft;return this.strip()},BN.prototype.notn=function(width){return this.clone().inotn(width)},BN.prototype.setn=function(bit,val){assert(typeof bit===\"number\"&&bit>=0);var off=bit/26|0,wbit=bit%26;if(this._expand(off+1),val)this.words[off]=this.words[off]|1<<wbit;else this.words[off]=this.words[off]&~(1<<wbit);return this.strip()},BN.prototype.iadd=function(num){var r;if(this.negative!==0&&num.negative===0)return this.negative=0,r=this.isub(num),this.negative^=1,this._normSign();else if(this.negative===0&&num.negative!==0)return num.negative=0,r=this.isub(num),num.negative=1,r._normSign();var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)+(b.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;if(this.length=a.length,carry!==0)this.words[this.length]=carry,this.length++;else if(a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];return this},BN.prototype.add=function(num){var res;if(num.negative!==0&&this.negative===0)return num.negative=0,res=this.sub(num),num.negative^=1,res;else if(num.negative===0&&this.negative!==0)return this.negative=0,res=num.sub(this),this.negative=1,res;if(this.length>num.length)return this.clone().iadd(num);return num.clone().iadd(this)},BN.prototype.isub=function(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);return num.negative=1,r._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(num),this.negative=1,this._normSign();var cmp=this.cmp(num);if(cmp===0)return this.negative=0,this.length=1,this.words[0]=0,this;var a,b;if(cmp>0)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)-(b.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;if(carry===0&&i<a.length&&a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];if(this.length=Math.max(this.length,i),a!==this)this.negative=1;return this.strip()},BN.prototype.sub=function(num){return this.clone().isub(num)};function smallMulTo(self2,num,out){out.negative=num.negative^self2.negative;var len=self2.length+num.length|0;out.length=len,len=len-1|0;var a=self2.words[0]|0,b=num.words[0]|0,r=a*b,lo=r&67108863,carry=r/67108864|0;out.words[0]=lo;for(var k=1;k<len;k++){var ncarry=carry>>>26,rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j|0;a=self2.words[i]|0,b=num.words[j]|0,r=a*b+rword,ncarry+=r/67108864|0,rword=r&67108863}out.words[k]=rword|0,carry=ncarry|0}if(carry!==0)out.words[k]=carry|0;else out.length--;return out.strip()}var comb10MulTo=function(self2,num,out){var a=self2.words,b=num.words,o=out.words,c=0,lo,mid,hi,a0=a[0]|0,al0=a0&8191,ah0=a0>>>13,a1=a[1]|0,al1=a1&8191,ah1=a1>>>13,a2=a[2]|0,al2=a2&8191,ah2=a2>>>13,a3=a[3]|0,al3=a3&8191,ah3=a3>>>13,a4=a[4]|0,al4=a4&8191,ah4=a4>>>13,a5=a[5]|0,al5=a5&8191,ah5=a5>>>13,a6=a[6]|0,al6=a6&8191,ah6=a6>>>13,a7=a[7]|0,al7=a7&8191,ah7=a7>>>13,a8=a[8]|0,al8=a8&8191,ah8=a8>>>13,a9=a[9]|0,al9=a9&8191,ah9=a9>>>13,b0=b[0]|0,bl0=b0&8191,bh0=b0>>>13,b1=b[1]|0,bl1=b1&8191,bh1=b1>>>13,b2=b[2]|0,bl2=b2&8191,bh2=b2>>>13,b3=b[3]|0,bl3=b3&8191,bh3=b3>>>13,b4=b[4]|0,bl4=b4&8191,bh4=b4>>>13,b5=b[5]|0,bl5=b5&8191,bh5=b5>>>13,b6=b[6]|0,bl6=b6&8191,bh6=b6>>>13,b7=b[7]|0,bl7=b7&8191,bh7=b7>>>13,b8=b[8]|0,bl8=b8&8191,bh8=b8>>>13,b9=b[9]|0,bl9=b9&8191,bh9=b9>>>13;out.negative=self2.negative^num.negative,out.length=19,lo=Math.imul(al0,bl0),mid=Math.imul(al0,bh0),mid=mid+Math.imul(ah0,bl0)|0,hi=Math.imul(ah0,bh0);var w0=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w0>>>26)|0,w0&=67108863,lo=Math.imul(al1,bl0),mid=Math.imul(al1,bh0),mid=mid+Math.imul(ah1,bl0)|0,hi=Math.imul(ah1,bh0),lo=lo+Math.imul(al0,bl1)|0,mid=mid+Math.imul(al0,bh1)|0,mid=mid+Math.imul(ah0,bl1)|0,hi=hi+Math.imul(ah0,bh1)|0;var w1=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w1>>>26)|0,w1&=67108863,lo=Math.imul(al2,bl0),mid=Math.imul(al2,bh0),mid=mid+Math.imul(ah2,bl0)|0,hi=Math.imul(ah2,bh0),lo=lo+Math.imul(al1,bl1)|0,mid=mid+Math.imul(al1,bh1)|0,mid=mid+Math.imul(ah1,bl1)|0,hi=hi+Math.imul(ah1,bh1)|0,lo=lo+Math.imul(al0,bl2)|0,mid=mid+Math.imul(al0,bh2)|0,mid=mid+Math.imul(ah0,bl2)|0,hi=hi+Math.imul(ah0,bh2)|0;var w2=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w2>>>26)|0,w2&=67108863,lo=Math.imul(al3,bl0),mid=Math.imul(al3,bh0),mid=mid+Math.imul(ah3,bl0)|0,hi=Math.imul(ah3,bh0),lo=lo+Math.imul(al2,bl1)|0,mid=mid+Math.imul(al2,bh1)|0,mid=mid+Math.imul(ah2,bl1)|0,hi=hi+Math.imul(ah2,bh1)|0,lo=lo+Math.imul(al1,bl2)|0,mid=mid+Math.imul(al1,bh2)|0,mid=mid+Math.imul(ah1,bl2)|0,hi=hi+Math.imul(ah1,bh2)|0,lo=lo+Math.imul(al0,bl3)|0,mid=mid+Math.imul(al0,bh3)|0,mid=mid+Math.imul(ah0,bl3)|0,hi=hi+Math.imul(ah0,bh3)|0;var w3=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w3>>>26)|0,w3&=67108863,lo=Math.imul(al4,bl0),mid=Math.imul(al4,bh0),mid=mid+Math.imul(ah4,bl0)|0,hi=Math.imul(ah4,bh0),lo=lo+Math.imul(al3,bl1)|0,mid=mid+Math.imul(al3,bh1)|0,mid=mid+Math.imul(ah3,bl1)|0,hi=hi+Math.imul(ah3,bh1)|0,lo=lo+Math.imul(al2,bl2)|0,mid=mid+Math.imul(al2,bh2)|0,mid=mid+Math.imul(ah2,bl2)|0,hi=hi+Math.imul(ah2,bh2)|0,lo=lo+Math.imul(al1,bl3)|0,mid=mid+Math.imul(al1,bh3)|0,mid=mid+Math.imul(ah1,bl3)|0,hi=hi+Math.imul(ah1,bh3)|0,lo=lo+Math.imul(al0,bl4)|0,mid=mid+Math.imul(al0,bh4)|0,mid=mid+Math.imul(ah0,bl4)|0,hi=hi+Math.imul(ah0,bh4)|0;var w4=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w4>>>26)|0,w4&=67108863,lo=Math.imul(al5,bl0),mid=Math.imul(al5,bh0),mid=mid+Math.imul(ah5,bl0)|0,hi=Math.imul(ah5,bh0),lo=lo+Math.imul(al4,bl1)|0,mid=mid+Math.imul(al4,bh1)|0,mid=mid+Math.imul(ah4,bl1)|0,hi=hi+Math.imul(ah4,bh1)|0,lo=lo+Math.imul(al3,bl2)|0,mid=mid+Math.imul(al3,bh2)|0,mid=mid+Math.imul(ah3,bl2)|0,hi=hi+Math.imul(ah3,bh2)|0,lo=lo+Math.imul(al2,bl3)|0,mid=mid+Math.imul(al2,bh3)|0,mid=mid+Math.imul(ah2,bl3)|0,hi=hi+Math.imul(ah2,bh3)|0,lo=lo+Math.imul(al1,bl4)|0,mid=mid+Math.imul(al1,bh4)|0,mid=mid+Math.imul(ah1,bl4)|0,hi=hi+Math.imul(ah1,bh4)|0,lo=lo+Math.imul(al0,bl5)|0,mid=mid+Math.imul(al0,bh5)|0,mid=mid+Math.imul(ah0,bl5)|0,hi=hi+Math.imul(ah0,bh5)|0;var w5=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w5>>>26)|0,w5&=67108863,lo=Math.imul(al6,bl0),mid=Math.imul(al6,bh0),mid=mid+Math.imul(ah6,bl0)|0,hi=Math.imul(ah6,bh0),lo=lo+Math.imul(al5,bl1)|0,mid=mid+Math.imul(al5,bh1)|0,mid=mid+Math.imul(ah5,bl1)|0,hi=hi+Math.imul(ah5,bh1)|0,lo=lo+Math.imul(al4,bl2)|0,mid=mid+Math.imul(al4,bh2)|0,mid=mid+Math.imul(ah4,bl2)|0,hi=hi+Math.imul(ah4,bh2)|0,lo=lo+Math.imul(al3,bl3)|0,mid=mid+Math.imul(al3,bh3)|0,mid=mid+Math.imul(ah3,bl3)|0,hi=hi+Math.imul(ah3,bh3)|0,lo=lo+Math.imul(al2,bl4)|0,mid=mid+Math.imul(al2,bh4)|0,mid=mid+Math.imul(ah2,bl4)|0,hi=hi+Math.imul(ah2,bh4)|0,lo=lo+Math.imul(al1,bl5)|0,mid=mid+Math.imul(al1,bh5)|0,mid=mid+Math.imul(ah1,bl5)|0,hi=hi+Math.imul(ah1,bh5)|0,lo=lo+Math.imul(al0,bl6)|0,mid=mid+Math.imul(al0,bh6)|0,mid=mid+Math.imul(ah0,bl6)|0,hi=hi+Math.imul(ah0,bh6)|0;var w6=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w6>>>26)|0,w6&=67108863,lo=Math.imul(al7,bl0),mid=Math.imul(al7,bh0),mid=mid+Math.imul(ah7,bl0)|0,hi=Math.imul(ah7,bh0),lo=lo+Math.imul(al6,bl1)|0,mid=mid+Math.imul(al6,bh1)|0,mid=mid+Math.imul(ah6,bl1)|0,hi=hi+Math.imul(ah6,bh1)|0,lo=lo+Math.imul(al5,bl2)|0,mid=mid+Math.imul(al5,bh2)|0,mid=mid+Math.imul(ah5,bl2)|0,hi=hi+Math.imul(ah5,bh2)|0,lo=lo+Math.imul(al4,bl3)|0,mid=mid+Math.imul(al4,bh3)|0,mid=mid+Math.imul(ah4,bl3)|0,hi=hi+Math.imul(ah4,bh3)|0,lo=lo+Math.imul(al3,bl4)|0,mid=mid+Math.imul(al3,bh4)|0,mid=mid+Math.imul(ah3,bl4)|0,hi=hi+Math.imul(ah3,bh4)|0,lo=lo+Math.imul(al2,bl5)|0,mid=mid+Math.imul(al2,bh5)|0,mid=mid+Math.imul(ah2,bl5)|0,hi=hi+Math.imul(ah2,bh5)|0,lo=lo+Math.imul(al1,bl6)|0,mid=mid+Math.imul(al1,bh6)|0,mid=mid+Math.imul(ah1,bl6)|0,hi=hi+Math.imul(ah1,bh6)|0,lo=lo+Math.imul(al0,bl7)|0,mid=mid+Math.imul(al0,bh7)|0,mid=mid+Math.imul(ah0,bl7)|0,hi=hi+Math.imul(ah0,bh7)|0;var w7=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w7>>>26)|0,w7&=67108863,lo=Math.imul(al8,bl0),mid=Math.imul(al8,bh0),mid=mid+Math.imul(ah8,bl0)|0,hi=Math.imul(ah8,bh0),lo=lo+Math.imul(al7,bl1)|0,mid=mid+Math.imul(al7,bh1)|0,mid=mid+Math.imul(ah7,bl1)|0,hi=hi+Math.imul(ah7,bh1)|0,lo=lo+Math.imul(al6,bl2)|0,mid=mid+Math.imul(al6,bh2)|0,mid=mid+Math.imul(ah6,bl2)|0,hi=hi+Math.imul(ah6,bh2)|0,lo=lo+Math.imul(al5,bl3)|0,mid=mid+Math.imul(al5,bh3)|0,mid=mid+Math.imul(ah5,bl3)|0,hi=hi+Math.imul(ah5,bh3)|0,lo=lo+Math.imul(al4,bl4)|0,mid=mid+Math.imul(al4,bh4)|0,mid=mid+Math.imul(ah4,bl4)|0,hi=hi+Math.imul(ah4,bh4)|0,lo=lo+Math.imul(al3,bl5)|0,mid=mid+Math.imul(al3,bh5)|0,mid=mid+Math.imul(ah3,bl5)|0,hi=hi+Math.imul(ah3,bh5)|0,lo=lo+Math.imul(al2,bl6)|0,mid=mid+Math.imul(al2,bh6)|0,mid=mid+Math.imul(ah2,bl6)|0,hi=hi+Math.imul(ah2,bh6)|0,lo=lo+Math.imul(al1,bl7)|0,mid=mid+Math.imul(al1,bh7)|0,mid=mid+Math.imul(ah1,bl7)|0,hi=hi+Math.imul(ah1,bh7)|0,lo=lo+Math.imul(al0,bl8)|0,mid=mid+Math.imul(al0,bh8)|0,mid=mid+Math.imul(ah0,bl8)|0,hi=hi+Math.imul(ah0,bh8)|0;var w8=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w8>>>26)|0,w8&=67108863,lo=Math.imul(al9,bl0),mid=Math.imul(al9,bh0),mid=mid+Math.imul(ah9,bl0)|0,hi=Math.imul(ah9,bh0),lo=lo+Math.imul(al8,bl1)|0,mid=mid+Math.imul(al8,bh1)|0,mid=mid+Math.imul(ah8,bl1)|0,hi=hi+Math.imul(ah8,bh1)|0,lo=lo+Math.imul(al7,bl2)|0,mid=mid+Math.imul(al7,bh2)|0,mid=mid+Math.imul(ah7,bl2)|0,hi=hi+Math.imul(ah7,bh2)|0,lo=lo+Math.imul(al6,bl3)|0,mid=mid+Math.imul(al6,bh3)|0,mid=mid+Math.imul(ah6,bl3)|0,hi=hi+Math.imul(ah6,bh3)|0,lo=lo+Math.imul(al5,bl4)|0,mid=mid+Math.imul(al5,bh4)|0,mid=mid+Math.imul(ah5,bl4)|0,hi=hi+Math.imul(ah5,bh4)|0,lo=lo+Math.imul(al4,bl5)|0,mid=mid+Math.imul(al4,bh5)|0,mid=mid+Math.imul(ah4,bl5)|0,hi=hi+Math.imul(ah4,bh5)|0,lo=lo+Math.imul(al3,bl6)|0,mid=mid+Math.imul(al3,bh6)|0,mid=mid+Math.imul(ah3,bl6)|0,hi=hi+Math.imul(ah3,bh6)|0,lo=lo+Math.imul(al2,bl7)|0,mid=mid+Math.imul(al2,bh7)|0,mid=mid+Math.imul(ah2,bl7)|0,hi=hi+Math.imul(ah2,bh7)|0,lo=lo+Math.imul(al1,bl8)|0,mid=mid+Math.imul(al1,bh8)|0,mid=mid+Math.imul(ah1,bl8)|0,hi=hi+Math.imul(ah1,bh8)|0,lo=lo+Math.imul(al0,bl9)|0,mid=mid+Math.imul(al0,bh9)|0,mid=mid+Math.imul(ah0,bl9)|0,hi=hi+Math.imul(ah0,bh9)|0;var w9=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w9>>>26)|0,w9&=67108863,lo=Math.imul(al9,bl1),mid=Math.imul(al9,bh1),mid=mid+Math.imul(ah9,bl1)|0,hi=Math.imul(ah9,bh1),lo=lo+Math.imul(al8,bl2)|0,mid=mid+Math.imul(al8,bh2)|0,mid=mid+Math.imul(ah8,bl2)|0,hi=hi+Math.imul(ah8,bh2)|0,lo=lo+Math.imul(al7,bl3)|0,mid=mid+Math.imul(al7,bh3)|0,mid=mid+Math.imul(ah7,bl3)|0,hi=hi+Math.imul(ah7,bh3)|0,lo=lo+Math.imul(al6,bl4)|0,mid=mid+Math.imul(al6,bh4)|0,mid=mid+Math.imul(ah6,bl4)|0,hi=hi+Math.imul(ah6,bh4)|0,lo=lo+Math.imul(al5,bl5)|0,mid=mid+Math.imul(al5,bh5)|0,mid=mid+Math.imul(ah5,bl5)|0,hi=hi+Math.imul(ah5,bh5)|0,lo=lo+Math.imul(al4,bl6)|0,mid=mid+Math.imul(al4,bh6)|0,mid=mid+Math.imul(ah4,bl6)|0,hi=hi+Math.imul(ah4,bh6)|0,lo=lo+Math.imul(al3,bl7)|0,mid=mid+Math.imul(al3,bh7)|0,mid=mid+Math.imul(ah3,bl7)|0,hi=hi+Math.imul(ah3,bh7)|0,lo=lo+Math.imul(al2,bl8)|0,mid=mid+Math.imul(al2,bh8)|0,mid=mid+Math.imul(ah2,bl8)|0,hi=hi+Math.imul(ah2,bh8)|0,lo=lo+Math.imul(al1,bl9)|0,mid=mid+Math.imul(al1,bh9)|0,mid=mid+Math.imul(ah1,bl9)|0,hi=hi+Math.imul(ah1,bh9)|0;var w10=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w10>>>26)|0,w10&=67108863,lo=Math.imul(al9,bl2),mid=Math.imul(al9,bh2),mid=mid+Math.imul(ah9,bl2)|0,hi=Math.imul(ah9,bh2),lo=lo+Math.imul(al8,bl3)|0,mid=mid+Math.imul(al8,bh3)|0,mid=mid+Math.imul(ah8,bl3)|0,hi=hi+Math.imul(ah8,bh3)|0,lo=lo+Math.imul(al7,bl4)|0,mid=mid+Math.imul(al7,bh4)|0,mid=mid+Math.imul(ah7,bl4)|0,hi=hi+Math.imul(ah7,bh4)|0,lo=lo+Math.imul(al6,bl5)|0,mid=mid+Math.imul(al6,bh5)|0,mid=mid+Math.imul(ah6,bl5)|0,hi=hi+Math.imul(ah6,bh5)|0,lo=lo+Math.imul(al5,bl6)|0,mid=mid+Math.imul(al5,bh6)|0,mid=mid+Math.imul(ah5,bl6)|0,hi=hi+Math.imul(ah5,bh6)|0,lo=lo+Math.imul(al4,bl7)|0,mid=mid+Math.imul(al4,bh7)|0,mid=mid+Math.imul(ah4,bl7)|0,hi=hi+Math.imul(ah4,bh7)|0,lo=lo+Math.imul(al3,bl8)|0,mid=mid+Math.imul(al3,bh8)|0,mid=mid+Math.imul(ah3,bl8)|0,hi=hi+Math.imul(ah3,bh8)|0,lo=lo+Math.imul(al2,bl9)|0,mid=mid+Math.imul(al2,bh9)|0,mid=mid+Math.imul(ah2,bl9)|0,hi=hi+Math.imul(ah2,bh9)|0;var w11=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w11>>>26)|0,w11&=67108863,lo=Math.imul(al9,bl3),mid=Math.imul(al9,bh3),mid=mid+Math.imul(ah9,bl3)|0,hi=Math.imul(ah9,bh3),lo=lo+Math.imul(al8,bl4)|0,mid=mid+Math.imul(al8,bh4)|0,mid=mid+Math.imul(ah8,bl4)|0,hi=hi+Math.imul(ah8,bh4)|0,lo=lo+Math.imul(al7,bl5)|0,mid=mid+Math.imul(al7,bh5)|0,mid=mid+Math.imul(ah7,bl5)|0,hi=hi+Math.imul(ah7,bh5)|0,lo=lo+Math.imul(al6,bl6)|0,mid=mid+Math.imul(al6,bh6)|0,mid=mid+Math.imul(ah6,bl6)|0,hi=hi+Math.imul(ah6,bh6)|0,lo=lo+Math.imul(al5,bl7)|0,mid=mid+Math.imul(al5,bh7)|0,mid=mid+Math.imul(ah5,bl7)|0,hi=hi+Math.imul(ah5,bh7)|0,lo=lo+Math.imul(al4,bl8)|0,mid=mid+Math.imul(al4,bh8)|0,mid=mid+Math.imul(ah4,bl8)|0,hi=hi+Math.imul(ah4,bh8)|0,lo=lo+Math.imul(al3,bl9)|0,mid=mid+Math.imul(al3,bh9)|0,mid=mid+Math.imul(ah3,bl9)|0,hi=hi+Math.imul(ah3,bh9)|0;var w12=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w12>>>26)|0,w12&=67108863,lo=Math.imul(al9,bl4),mid=Math.imul(al9,bh4),mid=mid+Math.imul(ah9,bl4)|0,hi=Math.imul(ah9,bh4),lo=lo+Math.imul(al8,bl5)|0,mid=mid+Math.imul(al8,bh5)|0,mid=mid+Math.imul(ah8,bl5)|0,hi=hi+Math.imul(ah8,bh5)|0,lo=lo+Math.imul(al7,bl6)|0,mid=mid+Math.imul(al7,bh6)|0,mid=mid+Math.imul(ah7,bl6)|0,hi=hi+Math.imul(ah7,bh6)|0,lo=lo+Math.imul(al6,bl7)|0,mid=mid+Math.imul(al6,bh7)|0,mid=mid+Math.imul(ah6,bl7)|0,hi=hi+Math.imul(ah6,bh7)|0,lo=lo+Math.imul(al5,bl8)|0,mid=mid+Math.imul(al5,bh8)|0,mid=mid+Math.imul(ah5,bl8)|0,hi=hi+Math.imul(ah5,bh8)|0,lo=lo+Math.imul(al4,bl9)|0,mid=mid+Math.imul(al4,bh9)|0,mid=mid+Math.imul(ah4,bl9)|0,hi=hi+Math.imul(ah4,bh9)|0;var w13=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w13>>>26)|0,w13&=67108863,lo=Math.imul(al9,bl5),mid=Math.imul(al9,bh5),mid=mid+Math.imul(ah9,bl5)|0,hi=Math.imul(ah9,bh5),lo=lo+Math.imul(al8,bl6)|0,mid=mid+Math.imul(al8,bh6)|0,mid=mid+Math.imul(ah8,bl6)|0,hi=hi+Math.imul(ah8,bh6)|0,lo=lo+Math.imul(al7,bl7)|0,mid=mid+Math.imul(al7,bh7)|0,mid=mid+Math.imul(ah7,bl7)|0,hi=hi+Math.imul(ah7,bh7)|0,lo=lo+Math.imul(al6,bl8)|0,mid=mid+Math.imul(al6,bh8)|0,mid=mid+Math.imul(ah6,bl8)|0,hi=hi+Math.imul(ah6,bh8)|0,lo=lo+Math.imul(al5,bl9)|0,mid=mid+Math.imul(al5,bh9)|0,mid=mid+Math.imul(ah5,bl9)|0,hi=hi+Math.imul(ah5,bh9)|0;var w14=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w14>>>26)|0,w14&=67108863,lo=Math.imul(al9,bl6),mid=Math.imul(al9,bh6),mid=mid+Math.imul(ah9,bl6)|0,hi=Math.imul(ah9,bh6),lo=lo+Math.imul(al8,bl7)|0,mid=mid+Math.imul(al8,bh7)|0,mid=mid+Math.imul(ah8,bl7)|0,hi=hi+Math.imul(ah8,bh7)|0,lo=lo+Math.imul(al7,bl8)|0,mid=mid+Math.imul(al7,bh8)|0,mid=mid+Math.imul(ah7,bl8)|0,hi=hi+Math.imul(ah7,bh8)|0,lo=lo+Math.imul(al6,bl9)|0,mid=mid+Math.imul(al6,bh9)|0,mid=mid+Math.imul(ah6,bl9)|0,hi=hi+Math.imul(ah6,bh9)|0;var w15=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w15>>>26)|0,w15&=67108863,lo=Math.imul(al9,bl7),mid=Math.imul(al9,bh7),mid=mid+Math.imul(ah9,bl7)|0,hi=Math.imul(ah9,bh7),lo=lo+Math.imul(al8,bl8)|0,mid=mid+Math.imul(al8,bh8)|0,mid=mid+Math.imul(ah8,bl8)|0,hi=hi+Math.imul(ah8,bh8)|0,lo=lo+Math.imul(al7,bl9)|0,mid=mid+Math.imul(al7,bh9)|0,mid=mid+Math.imul(ah7,bl9)|0,hi=hi+Math.imul(ah7,bh9)|0;var w16=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w16>>>26)|0,w16&=67108863,lo=Math.imul(al9,bl8),mid=Math.imul(al9,bh8),mid=mid+Math.imul(ah9,bl8)|0,hi=Math.imul(ah9,bh8),lo=lo+Math.imul(al8,bl9)|0,mid=mid+Math.imul(al8,bh9)|0,mid=mid+Math.imul(ah8,bl9)|0,hi=hi+Math.imul(ah8,bh9)|0;var w17=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w17>>>26)|0,w17&=67108863,lo=Math.imul(al9,bl9),mid=Math.imul(al9,bh9),mid=mid+Math.imul(ah9,bl9)|0,hi=Math.imul(ah9,bh9);var w18=(c+lo|0)+((mid&8191)<<13)|0;if(c=(hi+(mid>>>13)|0)+(w18>>>26)|0,w18&=67108863,o[0]=w0,o[1]=w1,o[2]=w2,o[3]=w3,o[4]=w4,o[5]=w5,o[6]=w6,o[7]=w7,o[8]=w8,o[9]=w9,o[10]=w10,o[11]=w11,o[12]=w12,o[13]=w13,o[14]=w14,o[15]=w15,o[16]=w16,o[17]=w17,o[18]=w18,c!==0)o[19]=c,out.length++;return out};if(!Math.imul)comb10MulTo=smallMulTo;function bigMulTo(self2,num,out){out.negative=num.negative^self2.negative,out.length=self2.length+num.length;var carry=0,hncarry=0;for(var k=0;k<out.length-1;k++){var ncarry=hncarry;hncarry=0;var rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j,a=self2.words[i]|0,b=num.words[j]|0,r=a*b,lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0,lo=lo+rword|0,rword=lo&67108863,ncarry=ncarry+(lo>>>26)|0,hncarry+=ncarry>>>26,ncarry&=67108863}out.words[k]=rword,carry=ncarry,ncarry=hncarry}if(carry!==0)out.words[k]=carry;else out.length--;return out.strip()}function jumboMulTo(self2,num,out){var fftm=new FFTM;return fftm.mulp(self2,num,out)}BN.prototype.mulTo=function(num,out){var res,len=this.length+num.length;if(this.length===10&&num.length===10)res=comb10MulTo(this,num,out);else if(len<63)res=smallMulTo(this,num,out);else if(len<1024)res=bigMulTo(this,num,out);else res=jumboMulTo(this,num,out);return res};function FFTM(x,y){this.x=x,this.y=y}FFTM.prototype.makeRBT=function(N){var t=Array(N),l=BN.prototype._countBits(N)-1;for(var i=0;i<N;i++)t[i]=this.revBin(i,l,N);return t},FFTM.prototype.revBin=function(x,l,N){if(x===0||x===N-1)return x;var rb=0;for(var i=0;i<l;i++)rb|=(x&1)<<l-i-1,x>>=1;return rb},FFTM.prototype.permute=function(rbt,rws,iws,rtws,itws,N){for(var i=0;i<N;i++)rtws[i]=rws[rbt[i]],itws[i]=iws[rbt[i]]},FFTM.prototype.transform=function(rws,iws,rtws,itws,N,rbt){this.permute(rbt,rws,iws,rtws,itws,N);for(var s=1;s<N;s<<=1){var l=s<<1,rtwdf=Math.cos(2*Math.PI/l),itwdf=Math.sin(2*Math.PI/l);for(var p=0;p<N;p+=l){var rtwdf_=rtwdf,itwdf_=itwdf;for(var j=0;j<s;j++){var re=rtws[p+j],ie=itws[p+j],ro=rtws[p+j+s],io=itws[p+j+s],rx=rtwdf_*ro-itwdf_*io;if(io=rtwdf_*io+itwdf_*ro,ro=rx,rtws[p+j]=re+ro,itws[p+j]=ie+io,rtws[p+j+s]=re-ro,itws[p+j+s]=ie-io,j!==l)rx=rtwdf*rtwdf_-itwdf*itwdf_,itwdf_=rtwdf*itwdf_+itwdf*rtwdf_,rtwdf_=rx}}}},FFTM.prototype.guessLen13b=function(n,m){var N=Math.max(m,n)|1,odd=N&1,i=0;for(N=N/2|0;N;N=N>>>1)i++;return 1<<i+1+odd},FFTM.prototype.conjugate=function(rws,iws,N){if(N<=1)return;for(var i=0;i<N/2;i++){var t=rws[i];rws[i]=rws[N-i-1],rws[N-i-1]=t,t=iws[i],iws[i]=-iws[N-i-1],iws[N-i-1]=-t}},FFTM.prototype.normalize13b=function(ws,N){var carry=0;for(var i=0;i<N/2;i++){var w=Math.round(ws[2*i+1]/N)*8192+Math.round(ws[2*i]/N)+carry;if(ws[i]=w&67108863,w<67108864)carry=0;else carry=w/67108864|0}return ws},FFTM.prototype.convert13b=function(ws,len,rws,N){var carry=0;for(var i=0;i<len;i++)carry=carry+(ws[i]|0),rws[2*i]=carry&8191,carry=carry>>>13,rws[2*i+1]=carry&8191,carry=carry>>>13;for(i=2*len;i<N;++i)rws[i]=0;assert(carry===0),assert((carry&-8192)===0)},FFTM.prototype.stub=function(N){var ph=Array(N);for(var i=0;i<N;i++)ph[i]=0;return ph},FFTM.prototype.mulp=function(x,y,out){var N=2*this.guessLen13b(x.length,y.length),rbt=this.makeRBT(N),_=this.stub(N),rws=Array(N),rwst=Array(N),iwst=Array(N),nrws=Array(N),nrwst=Array(N),niwst=Array(N),rmws=out.words;rmws.length=N,this.convert13b(x.words,x.length,rws,N),this.convert13b(y.words,y.length,nrws,N),this.transform(rws,_,rwst,iwst,N,rbt),this.transform(nrws,_,nrwst,niwst,N,rbt);for(var i=0;i<N;i++){var rx=rwst[i]*nrwst[i]-iwst[i]*niwst[i];iwst[i]=rwst[i]*niwst[i]+iwst[i]*nrwst[i],rwst[i]=rx}return this.conjugate(rwst,iwst,N),this.transform(rwst,iwst,rmws,_,N,rbt),this.conjugate(rmws,_,N),this.normalize13b(rmws,N),out.negative=x.negative^y.negative,out.length=x.length+y.length,out.strip()},BN.prototype.mul=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),this.mulTo(num,out)},BN.prototype.mulf=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),jumboMulTo(this,num,out)},BN.prototype.imul=function(num){return this.clone().mulTo(num,this)},BN.prototype.imuln=function(num){assert(typeof num===\"number\"),assert(num<67108864);var carry=0;for(var i=0;i<this.length;i++){var w=(this.words[i]|0)*num,lo=(w&67108863)+(carry&67108863);carry>>=26,carry+=w/67108864|0,carry+=lo>>>26,this.words[i]=lo&67108863}if(carry!==0)this.words[i]=carry,this.length++;return this.length=num===0?1:this.length,this},BN.prototype.muln=function(num){return this.clone().imuln(num)},BN.prototype.sqr=function(){return this.mul(this)},BN.prototype.isqr=function(){return this.imul(this.clone())},BN.prototype.pow=function(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i<w.length;i++,res=res.sqr())if(w[i]!==0)break;if(++i<w.length)for(var q=res.sqr();i<w.length;i++,q=q.sqr()){if(w[i]===0)continue;res=res.mul(q)}return res},BN.prototype.iushln=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26,carryMask=67108863>>>26-r<<26-r,i;if(r!==0){var carry=0;for(i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask,c=(this.words[i]|0)-newCarry<<r;this.words[i]=c|carry,carry=newCarry>>>26-r}if(carry)this.words[i]=carry,this.length++}if(s!==0){for(i=this.length-1;i>=0;i--)this.words[i+s]=this.words[i];for(i=0;i<s;i++)this.words[i]=0;this.length+=s}return this.strip()},BN.prototype.ishln=function(bits){return assert(this.negative===0),this.iushln(bits)},BN.prototype.iushrn=function(bits,hint,extended){assert(typeof bits===\"number\"&&bits>=0);var h;if(hint)h=(hint-hint%26)/26;else h=0;var r=bits%26,s=Math.min((bits-r)/26,this.length),mask=67108863^67108863>>>r<<r,maskedWords=extended;if(h-=s,h=Math.max(0,h),maskedWords){for(var i=0;i<s;i++)maskedWords.words[i]=this.words[i];maskedWords.length=s}if(s===0);else if(this.length>s){this.length-=s;for(i=0;i<this.length;i++)this.words[i]=this.words[i+s]}else this.words[0]=0,this.length=1;var carry=0;for(i=this.length-1;i>=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r,carry=word&mask}if(maskedWords&&carry!==0)maskedWords.words[maskedWords.length++]=carry;if(this.length===0)this.words[0]=0,this.length=1;return this.strip()},BN.prototype.ishrn=function(bits,hint,extended){return assert(this.negative===0),this.iushrn(bits,hint,extended)},BN.prototype.shln=function(bits){return this.clone().ishln(bits)},BN.prototype.ushln=function(bits){return this.clone().iushln(bits)},BN.prototype.shrn=function(bits){return this.clone().ishrn(bits)},BN.prototype.ushrn=function(bits){return this.clone().iushrn(bits)},BN.prototype.testn=function(bit){assert(typeof bit===\"number\"&&bit>=0);var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return!1;var w=this.words[s];return!!(w&q)},BN.prototype.imaskn=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26;if(assert(this.negative===0,\"imaskn works only with positive numbers\"),this.length<=s)return this;if(r!==0)s++;if(this.length=Math.min(s,this.length),r!==0){var mask=67108863^67108863>>>r<<r;this.words[this.length-1]&=mask}return this.strip()},BN.prototype.maskn=function(bits){return this.clone().imaskn(bits)},BN.prototype.iaddn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.isubn(-num);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<num)return this.words[0]=num-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(num),this.negative=1,this}return this._iaddn(num)},BN.prototype._iaddn=function(num){this.words[0]+=num;for(var i=0;i<this.length&&this.words[i]>=67108864;i++)if(this.words[i]-=67108864,i===this.length-1)this.words[i+1]=1;else this.words[i+1]++;return this.length=Math.max(this.length,i+1),this},BN.prototype.isubn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.iaddn(-num);if(this.negative!==0)return this.negative=0,this.iaddn(num),this.negative=1,this;if(this.words[0]-=num,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var i=0;i<this.length&&this.words[i]<0;i++)this.words[i]+=67108864,this.words[i+1]-=1;return this.strip()},BN.prototype.addn=function(num){return this.clone().iaddn(num)},BN.prototype.subn=function(num){return this.clone().isubn(num)},BN.prototype.iabs=function(){return this.negative=0,this},BN.prototype.abs=function(){return this.clone().iabs()},BN.prototype._ishlnsubmul=function(num,mul,shift){var len=num.length+shift,i;this._expand(len);var w,carry=0;for(i=0;i<num.length;i++){w=(this.words[i+shift]|0)+carry;var right=(num.words[i]|0)*mul;w-=right&67108863,carry=(w>>26)-(right/67108864|0),this.words[i+shift]=w&67108863}for(;i<this.length-shift;i++)w=(this.words[i+shift]|0)+carry,carry=w>>26,this.words[i+shift]=w&67108863;if(carry===0)return this.strip();assert(carry===-1),carry=0;for(i=0;i<this.length;i++)w=-(this.words[i]|0)+carry,carry=w>>26,this.words[i]=w&67108863;return this.negative=1,this.strip()},BN.prototype._wordDiv=function(num,mode){var shift=this.length-num.length,a=this.clone(),b=num,bhi=b.words[b.length-1]|0,bhiBits=this._countBits(bhi);if(shift=26-bhiBits,shift!==0)b=b.ushln(shift),a.iushln(shift),bhi=b.words[b.length-1]|0;var m=a.length-b.length,q;if(mode!==\"mod\"){q=new BN(null),q.length=m+1,q.words=Array(q.length);for(var i=0;i<q.length;i++)q.words[i]=0}var diff=a.clone()._ishlnsubmul(b,1,m);if(diff.negative===0){if(a=diff,q)q.words[m]=1}for(var j=m-1;j>=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863),a._ishlnsubmul(b,qj,j);while(a.negative!==0)if(qj--,a.negative=0,a._ishlnsubmul(b,1,j),!a.isZero())a.negative^=1;if(q)q.words[j]=qj}if(q)q.strip();if(a.strip(),mode!==\"div\"&&shift!==0)a.iushrn(shift);return{div:q||null,mod:a}},BN.prototype.divmod=function(num,mode,positive){if(assert(!num.isZero()),this.isZero())return{div:new BN(0),mod:new BN(0)};var div,mod,res;if(this.negative!==0&&num.negative===0){if(res=this.neg().divmod(num,mode),mode!==\"mod\")div=res.div.neg();if(mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.iadd(num)}return{div,mod}}if(this.negative===0&&num.negative!==0){if(res=this.divmod(num.neg(),mode),mode!==\"mod\")div=res.div.neg();return{div,mod:res.mod}}if((this.negative&num.negative)!==0){if(res=this.neg().divmod(num.neg(),mode),mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.isub(num)}return{div:res.div,mod}}if(num.length>this.length||this.cmp(num)<0)return{div:new BN(0),mod:this};if(num.length===1){if(mode===\"div\")return{div:this.divn(num.words[0]),mod:null};if(mode===\"mod\")return{div:null,mod:new BN(this.modn(num.words[0]))};return{div:this.divn(num.words[0]),mod:new BN(this.modn(num.words[0]))}}return this._wordDiv(num,mode)},BN.prototype.div=function(num){return this.divmod(num,\"div\",!1).div},BN.prototype.mod=function(num){return this.divmod(num,\"mod\",!1).mod},BN.prototype.umod=function(num){return this.divmod(num,\"mod\",!0).mod},BN.prototype.divRound=function(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod,half=num.ushrn(1),r2=num.andln(1),cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)},BN.prototype.modn=function(num){assert(num<=67108863);var p=67108864%num,acc=0;for(var i=this.length-1;i>=0;i--)acc=(p*acc+(this.words[i]|0))%num;return acc},BN.prototype.idivn=function(num){assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0,carry=w%num}return this.strip()},BN.prototype.divn=function(num){return this.clone().idivn(num)},BN.prototype.egcd=function(p){assert(p.negative===0),assert(!p.isZero());var x=this,y=p.clone();if(x.negative!==0)x=x.umod(p);else x=x.clone();var A=new BN(1),B=new BN(0),C=new BN(0),D=new BN(1),g=0;while(x.isEven()&&y.isEven())x.iushrn(1),y.iushrn(1),++g;var yp=y.clone(),xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd())A.iadd(yp),B.isub(xp);A.iushrn(1),B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd())C.iadd(yp),D.isub(xp);C.iushrn(1),D.iushrn(1)}}if(x.cmp(y)>=0)x.isub(y),A.isub(C),B.isub(D);else y.isub(x),C.isub(A),D.isub(B)}return{a:C,b:D,gcd:y.iushln(g)}},BN.prototype._invmp=function(p){assert(p.negative===0),assert(!p.isZero());var a=this,b=p.clone();if(a.negative!==0)a=a.umod(p);else a=a.clone();var x1=new BN(1),x2=new BN(0),delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd())x1.iadd(delta);x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd())x2.iadd(delta);x2.iushrn(1)}}if(a.cmp(b)>=0)a.isub(b),x1.isub(x2);else b.isub(a),x2.isub(x1)}var res;if(a.cmpn(1)===0)res=x1;else res=x2;if(res.cmpn(0)<0)res.iadd(p);return res},BN.prototype.gcd=function(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone(),b=num.clone();a.negative=0,b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++)a.iushrn(1),b.iushrn(1);do{while(a.isEven())a.iushrn(1);while(b.isEven())b.iushrn(1);var r=a.cmp(b);if(r<0){var t=a;a=b,b=t}else if(r===0||b.cmpn(1)===0)break;a.isub(b)}while(!0);return b.iushln(shift)},BN.prototype.invm=function(num){return this.egcd(num).a.umod(num)},BN.prototype.isEven=function(){return(this.words[0]&1)===0},BN.prototype.isOdd=function(){return(this.words[0]&1)===1},BN.prototype.andln=function(num){return this.words[0]&num},BN.prototype.bincn=function(bit){assert(typeof bit===\"number\");var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return this._expand(s+1),this.words[s]|=q,this;var carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i]|0;w+=carry,carry=w>>>26,w&=67108863,this.words[i]=w}if(carry!==0)this.words[i]=carry,this.length++;return this},BN.prototype.isZero=function(){return this.length===1&&this.words[0]===0},BN.prototype.cmpn=function(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this.strip();var res;if(this.length>1)res=1;else{if(negative)num=-num;assert(num<=67108863,\"Number is too big\");var w=this.words[0]|0;res=w===num?0:w<num?-1:1}if(this.negative!==0)return-res|0;return res},BN.prototype.cmp=function(num){if(this.negative!==0&&num.negative===0)return-1;if(this.negative===0&&num.negative!==0)return 1;var res=this.ucmp(num);if(this.negative!==0)return-res|0;return res},BN.prototype.ucmp=function(num){if(this.length>num.length)return 1;if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i]|0,b=num.words[i]|0;if(a===b)continue;if(a<b)res=-1;else if(a>b)res=1;break}return res},BN.prototype.gtn=function(num){return this.cmpn(num)===1},BN.prototype.gt=function(num){return this.cmp(num)===1},BN.prototype.gten=function(num){return this.cmpn(num)>=0},BN.prototype.gte=function(num){return this.cmp(num)>=0},BN.prototype.ltn=function(num){return this.cmpn(num)===-1},BN.prototype.lt=function(num){return this.cmp(num)===-1},BN.prototype.lten=function(num){return this.cmpn(num)<=0},BN.prototype.lte=function(num){return this.cmp(num)<=0},BN.prototype.eqn=function(num){return this.cmpn(num)===0},BN.prototype.eq=function(num){return this.cmp(num)===0},BN.red=function(num){return new Red(num)},BN.prototype.toRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),assert(this.negative===0,\"red works only with positives\"),ctx.convertTo(this)._forceRed(ctx)},BN.prototype.fromRed=function(){return assert(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},BN.prototype._forceRed=function(ctx){return this.red=ctx,this},BN.prototype.forceRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),this._forceRed(ctx)},BN.prototype.redAdd=function(num){return assert(this.red,\"redAdd works only with red numbers\"),this.red.add(this,num)},BN.prototype.redIAdd=function(num){return assert(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,num)},BN.prototype.redSub=function(num){return assert(this.red,\"redSub works only with red numbers\"),this.red.sub(this,num)},BN.prototype.redISub=function(num){return assert(this.red,\"redISub works only with red numbers\"),this.red.isub(this,num)},BN.prototype.redShl=function(num){return assert(this.red,\"redShl works only with red numbers\"),this.red.shl(this,num)},BN.prototype.redMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.mul(this,num)},BN.prototype.redIMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.imul(this,num)},BN.prototype.redSqr=function(){return assert(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},BN.prototype.redISqr=function(){return assert(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},BN.prototype.redSqrt=function(){return assert(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},BN.prototype.redInvm=function(){return assert(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},BN.prototype.redNeg=function(){return assert(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},BN.prototype.redPow=function(num){return assert(this.red&&!num.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name,this.p=new BN(p,16),this.n=this.p.bitLength(),this.k=new BN(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}MPrime.prototype._tmp=function(){var tmp=new BN(null);return tmp.words=Array(Math.ceil(this.n/13)),tmp},MPrime.prototype.ireduce=function(num){var r=num,rlen;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),rlen=r.bitLength();while(rlen>this.n);var cmp=rlen<this.n?-1:r.ucmp(this.p);if(cmp===0)r.words[0]=0,r.length=1;else if(cmp>0)r.isub(this.p);else if(r.strip!==void 0)r.strip();else r._strip();return r},MPrime.prototype.split=function(input,out){input.iushrn(this.n,0,out)},MPrime.prototype.imulK=function(num){return num.imul(this.k)};function K256(){MPrime.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}inherits(K256,MPrime),K256.prototype.split=function(input,output){var mask=4194303,outLen=Math.min(input.length,9);for(var i=0;i<outLen;i++)output.words[i]=input.words[i];if(output.length=outLen,input.length<=9){input.words[0]=0,input.length=1;return}var prev=input.words[9];output.words[output.length++]=prev&mask;for(i=10;i<input.length;i++){var next=input.words[i]|0;input.words[i-10]=(next&mask)<<4|prev>>>22,prev=next}if(prev>>>=22,input.words[i-10]=prev,prev===0&&input.length>10)input.length-=10;else input.length-=9},K256.prototype.imulK=function(num){num.words[num.length]=0,num.words[num.length+1]=0,num.length+=2;var lo=0;for(var i=0;i<num.length;i++){var w=num.words[i]|0;lo+=w*977,num.words[i]=lo&67108863,lo=w*64+(lo/67108864|0)}if(num.words[num.length-1]===0){if(num.length--,num.words[num.length-1]===0)num.length--}return num};function P224(){MPrime.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}inherits(P224,MPrime);function P192(){MPrime.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}inherits(P192,MPrime);function P25519(){MPrime.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}inherits(P25519,MPrime),P25519.prototype.imulK=function(num){var carry=0;for(var i=0;i<num.length;i++){var hi=(num.words[i]|0)*19+carry,lo=hi&67108863;hi>>>=26,num.words[i]=lo,carry=hi}if(carry!==0)num.words[num.length++]=carry;return num},BN._prime=function(name){if(primes[name])return primes[name];var prime;if(name===\"k256\")prime=new K256;else if(name===\"p224\")prime=new P224;else if(name===\"p192\")prime=new P192;else if(name===\"p25519\")prime=new P25519;else throw Error(\"Unknown prime \"+name);return primes[name]=prime,prime};function Red(m){if(typeof m===\"string\"){var prime=BN._prime(m);this.m=prime.p,this.prime=prime}else assert(m.gtn(1),\"modulus must be greater than 1\"),this.m=m,this.prime=null}Red.prototype._verify1=function(a){assert(a.negative===0,\"red works only with positives\"),assert(a.red,\"red works only with red numbers\")},Red.prototype._verify2=function(a,b){assert((a.negative|b.negative)===0,\"red works only with positives\"),assert(a.red&&a.red===b.red,\"red works only with red numbers\")},Red.prototype.imod=function(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return a.umod(this.m)._forceRed(this)},Red.prototype.neg=function(a){if(a.isZero())return a.clone();return this.m.sub(a)._forceRed(this)},Red.prototype.add=function(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res._forceRed(this)},Red.prototype.iadd=function(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res},Red.prototype.sub=function(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res._forceRed(this)},Red.prototype.isub=function(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res},Red.prototype.shl=function(a,num){return this._verify1(a),this.imod(a.ushln(num))},Red.prototype.imul=function(a,b){return this._verify2(a,b),this.imod(a.imul(b))},Red.prototype.mul=function(a,b){return this._verify2(a,b),this.imod(a.mul(b))},Red.prototype.isqr=function(a){return this.imul(a,a.clone())},Red.prototype.sqr=function(a){return this.mul(a,a)},Red.prototype.sqrt=function(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);if(assert(mod3%2===1),mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1),s=0;while(!q.isZero()&&q.andln(1)===0)s++,q.iushrn(1);assert(!q.isZero());var one=new BN(1).toRed(this),nOne=one.redNeg(),lpow=this.m.subn(1).iushrn(1),z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0)z.redIAdd(nOne);var c=this.pow(z,q),r=this.pow(a,q.addn(1).iushrn(1)),t=this.pow(a,q),m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++)tmp=tmp.redSqr();assert(i<m);var b=this.pow(c,new BN(1).iushln(m-i-1));r=r.redMul(b),c=b.redSqr(),t=t.redMul(c),m=i}return r},Red.prototype.invm=function(a){var inv=a._invmp(this.m);if(inv.negative!==0)return inv.negative=0,this.imod(inv).redNeg();else return this.imod(inv)},Red.prototype.pow=function(a,num){if(num.isZero())return new BN(1).toRed(this);if(num.cmpn(1)===0)return a.clone();var windowSize=4,wnd=Array(1<<windowSize);wnd[0]=new BN(1).toRed(this),wnd[1]=a;for(var i=2;i<wnd.length;i++)wnd[i]=this.mul(wnd[i-1],a);var res=wnd[0],current=0,currentLen=0,start=num.bitLength()%26;if(start===0)start=26;for(i=num.length-1;i>=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0])res=this.sqr(res);if(bit===0&&current===0){currentLen=0;continue}if(current<<=1,current|=bit,currentLen++,currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]),currentLen=0,current=0}start=26}return res},Red.prototype.convertTo=function(num){var r=num.umod(this.m);return r===num?r.clone():r},Red.prototype.convertFrom=function(num){var res=num.clone();return res.red=null,res},BN.mont=function(num){return new Mont(num)};function Mont(m){if(Red.call(this,m),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new BN(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}inherits(Mont,Red),Mont.prototype.convertTo=function(num){return this.imod(num.ushln(this.shift))},Mont.prototype.convertFrom=function(num){var r=this.imod(num.mul(this.rinv));return r.red=null,r},Mont.prototype.imul=function(a,b){if(a.isZero()||b.isZero())return a.words[0]=0,a.length=1,a;var t=a.imul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.mul=function(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.invm=function(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(typeof module>\"u\"||module,exports)});var require_withPublic=__commonJS((exports,module)=>{var BN=require_bn4(),Buffer2=require_safe_buffer().Buffer;function withPublic(paddedMsg,key){return Buffer2.from(paddedMsg.toRed(BN.mont(key.modulus)).redPow(new BN(key.publicExponent)).fromRed().toArray())}module.exports=withPublic});var require_bn5=__commonJS((exports,module)=>{(function(module2,exports2){function assert(val,msg){if(!val)throw Error(msg||\"Assertion failed\")}function inherits(ctor,superCtor){ctor.super_=superCtor;var TempCtor=function(){};TempCtor.prototype=superCtor.prototype,ctor.prototype=new TempCtor,ctor.prototype.constructor=ctor}function BN(number,base,endian){if(BN.isBN(number))return number;if(this.negative=0,this.words=null,this.length=0,this.red=null,number!==null){if(base===\"le\"||base===\"be\")endian=base,base=10;this._init(number||0,base||10,endian||\"be\")}}if(typeof module2===\"object\")module2.exports=BN;else exports2.BN=BN;BN.BN=BN,BN.wordSize=26;var Buffer2;try{if(typeof window<\"u\"&&typeof window.Buffer<\"u\")Buffer2=window.Buffer;else Buffer2=require(\"buffer\").Buffer}catch(e){}BN.isBN=function(num){if(num instanceof BN)return!0;return num!==null&&typeof num===\"object\"&&num.constructor.wordSize===BN.wordSize&&Array.isArray(num.words)},BN.max=function(left,right){if(left.cmp(right)>0)return left;return right},BN.min=function(left,right){if(left.cmp(right)<0)return left;return right},BN.prototype._init=function(number,base,endian){if(typeof number===\"number\")return this._initNumber(number,base,endian);if(typeof number===\"object\")return this._initArray(number,base,endian);if(base===\"hex\")base=16;assert(base===(base|0)&&base>=2&&base<=36),number=number.toString().replace(/\\s+/g,\"\");var start=0;if(number[0]===\"-\")start++,this.negative=1;if(start<number.length){if(base===16)this._parseHex(number,start,endian);else if(this._parseBase(number,base,start),endian===\"le\")this._initArray(this.toArray(),base,endian)}},BN.prototype._initNumber=function(number,base,endian){if(number<0)this.negative=1,number=-number;if(number<67108864)this.words=[number&67108863],this.length=1;else if(number<4503599627370496)this.words=[number&67108863,number/67108864&67108863],this.length=2;else assert(number<9007199254740992),this.words=[number&67108863,number/67108864&67108863,1],this.length=3;if(endian!==\"le\")return;this._initArray(this.toArray(),base,endian)},BN.prototype._initArray=function(number,base,endian){if(assert(typeof number.length===\"number\"),number.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(number.length/3),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var j,w,off=0;if(endian===\"be\"){for(i=number.length-1,j=0;i>=0;i-=3)if(w=number[i]|number[i-1]<<8|number[i-2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}else if(endian===\"le\"){for(i=0,j=0;i<number.length;i+=3)if(w=number[i]|number[i+1]<<8|number[i+2]<<16,this.words[j]|=w<<off&67108863,this.words[j+1]=w>>>26-off&67108863,off+=24,off>=26)off-=26,j++}return this._strip()};function parseHex4Bits(string,index){var c=string.charCodeAt(index);if(c>=48&&c<=57)return c-48;else if(c>=65&&c<=70)return c-55;else if(c>=97&&c<=102)return c-87;else assert(!1,\"Invalid character in \"+string)}function parseHexByte(string,lowerBound,index){var r=parseHex4Bits(string,index);if(index-1>=lowerBound)r|=parseHex4Bits(string,index-1)<<4;return r}BN.prototype._parseHex=function(number,start,endian){this.length=Math.ceil((number.length-start)/6),this.words=Array(this.length);for(var i=0;i<this.length;i++)this.words[i]=0;var off=0,j=0,w;if(endian===\"be\")for(i=number.length-1;i>=start;i-=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8;else{var parseLength=number.length-start;for(i=parseLength%2===0?start+1:start;i<number.length;i+=2)if(w=parseHexByte(number,start,i)<<off,this.words[j]|=w&67108863,off>=18)off-=18,j+=1,this.words[j]|=w>>>26;else off+=8}this._strip()};function parseBase(str,start,end,mul){var r=0,b=0,len=Math.min(str.length,end);for(var i=start;i<len;i++){var c=str.charCodeAt(i)-48;if(r*=mul,c>=49)b=c-49+10;else if(c>=17)b=c-17+10;else b=c;assert(c>=0&&b<mul,\"Invalid character\"),r+=b}return r}BN.prototype._parseBase=function(number,base,start){this.words=[0],this.length=1;for(var limbLen=0,limbPow=1;limbPow<=67108863;limbPow*=base)limbLen++;limbLen--,limbPow=limbPow/base|0;var total=number.length-start,mod=total%limbLen,end=Math.min(total,total-mod)+start,word=0;for(var i=start;i<end;i+=limbLen)if(word=parseBase(number,i,i+limbLen,base),this.imuln(limbPow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word);if(mod!==0){var pow=1;word=parseBase(number,i,number.length,base);for(i=0;i<mod;i++)pow*=base;if(this.imuln(pow),this.words[0]+word<67108864)this.words[0]+=word;else this._iaddn(word)}this._strip()},BN.prototype.copy=function(dest){dest.words=Array(this.length);for(var i=0;i<this.length;i++)dest.words[i]=this.words[i];dest.length=this.length,dest.negative=this.negative,dest.red=this.red};function move(dest,src){dest.words=src.words,dest.length=src.length,dest.negative=src.negative,dest.red=src.red}if(BN.prototype._move=function(dest){move(dest,this)},BN.prototype.clone=function(){var r=new BN(null);return this.copy(r),r},BN.prototype._expand=function(size){while(this.length<size)this.words[this.length++]=0;return this},BN.prototype._strip=function(){while(this.length>1&&this.words[this.length-1]===0)this.length--;return this._normSign()},BN.prototype._normSign=function(){if(this.length===1&&this.words[0]===0)this.negative=0;return this},typeof Symbol<\"u\"&&typeof Symbol.for===\"function\")try{BN.prototype[Symbol.for(\"nodejs.util.inspect.custom\")]=inspect}catch(e){BN.prototype.inspect=inspect}else BN.prototype.inspect=inspect;function inspect(){return(this.red?\"<BN-R: \":\"<BN: \")+this.toString(16)+\">\"}var zeros=[\"\",\"0\",\"00\",\"000\",\"0000\",\"00000\",\"000000\",\"0000000\",\"00000000\",\"000000000\",\"0000000000\",\"00000000000\",\"000000000000\",\"0000000000000\",\"00000000000000\",\"000000000000000\",\"0000000000000000\",\"00000000000000000\",\"000000000000000000\",\"0000000000000000000\",\"00000000000000000000\",\"000000000000000000000\",\"0000000000000000000000\",\"00000000000000000000000\",\"000000000000000000000000\",\"0000000000000000000000000\"],groupSizes=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],groupBases=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64000000,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,24300000,28629151,33554432,39135393,45435424,52521875,60466176];if(BN.prototype.toString=function(base,padding){base=base||10,padding=padding|0||1;var out;if(base===16||base===\"hex\"){out=\"\";var off=0,carry=0;for(var i=0;i<this.length;i++){var w=this.words[i],word=((w<<off|carry)&16777215).toString(16);if(carry=w>>>24-off&16777215,off+=2,off>=26)off-=26,i--;if(carry!==0||i!==this.length-1)out=zeros[6-word.length]+word+out;else out=word+out}if(carry!==0)out=carry.toString(16)+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}if(base===(base|0)&&base>=2&&base<=36){var groupSize=groupSizes[base],groupBase=groupBases[base];out=\"\";var c=this.clone();c.negative=0;while(!c.isZero()){var r=c.modrn(groupBase).toString(base);if(c=c.idivn(groupBase),!c.isZero())out=zeros[groupSize-r.length]+r+out;else out=r+out}if(this.isZero())out=\"0\"+out;while(out.length%padding!==0)out=\"0\"+out;if(this.negative!==0)out=\"-\"+out;return out}assert(!1,\"Base should be between 2 and 36\")},BN.prototype.toNumber=function(){var ret=this.words[0];if(this.length===2)ret+=this.words[1]*67108864;else if(this.length===3&&this.words[2]===1)ret+=4503599627370496+this.words[1]*67108864;else if(this.length>2)assert(!1,\"Number can only safely store up to 53 bits\");return this.negative!==0?-ret:ret},BN.prototype.toJSON=function(){return this.toString(16,2)},Buffer2)BN.prototype.toBuffer=function(endian,length){return this.toArrayLike(Buffer2,endian,length)};BN.prototype.toArray=function(endian,length){return this.toArrayLike(Array,endian,length)};var allocate=function(ArrayType,size){if(ArrayType.allocUnsafe)return ArrayType.allocUnsafe(size);return new ArrayType(size)};if(BN.prototype.toArrayLike=function(ArrayType,endian,length){this._strip();var byteLength=this.byteLength(),reqLength=length||Math.max(1,byteLength);assert(byteLength<=reqLength,\"byte array longer than desired length\"),assert(reqLength>0,\"Requested array length <= 0\");var res=allocate(ArrayType,reqLength),postfix=endian===\"le\"?\"LE\":\"BE\";return this[\"_toArrayLike\"+postfix](res,byteLength),res},BN.prototype._toArrayLikeLE=function(res,byteLength){var position=0,carry=0;for(var i=0,shift=0;i<this.length;i++){var word=this.words[i]<<shift|carry;if(res[position++]=word&255,position<res.length)res[position++]=word>>8&255;if(position<res.length)res[position++]=word>>16&255;if(shift===6){if(position<res.length)res[position++]=word>>24&255;carry=0,shift=0}else carry=word>>>24,shift+=2}if(position<res.length){res[position++]=carry;while(position<res.length)res[position++]=0}},BN.prototype._toArrayLikeBE=function(res,byteLength){var position=res.length-1,carry=0;for(var i=0,shift=0;i<this.length;i++){var word=this.words[i]<<shift|carry;if(res[position--]=word&255,position>=0)res[position--]=word>>8&255;if(position>=0)res[position--]=word>>16&255;if(shift===6){if(position>=0)res[position--]=word>>24&255;carry=0,shift=0}else carry=word>>>24,shift+=2}if(position>=0){res[position--]=carry;while(position>=0)res[position--]=0}},Math.clz32)BN.prototype._countBits=function(w){return 32-Math.clz32(w)};else BN.prototype._countBits=function(w){var t=w,r=0;if(t>=4096)r+=13,t>>>=13;if(t>=64)r+=7,t>>>=7;if(t>=8)r+=4,t>>>=4;if(t>=2)r+=2,t>>>=2;return r+t};BN.prototype._zeroBits=function(w){if(w===0)return 26;var t=w,r=0;if((t&8191)===0)r+=13,t>>>=13;if((t&127)===0)r+=7,t>>>=7;if((t&15)===0)r+=4,t>>>=4;if((t&3)===0)r+=2,t>>>=2;if((t&1)===0)r++;return r},BN.prototype.bitLength=function(){var w=this.words[this.length-1],hi=this._countBits(w);return(this.length-1)*26+hi};function toBitArray(num){var w=Array(num.bitLength());for(var bit=0;bit<w.length;bit++){var off=bit/26|0,wbit=bit%26;w[bit]=num.words[off]>>>wbit&1}return w}BN.prototype.zeroBits=function(){if(this.isZero())return 0;var r=0;for(var i=0;i<this.length;i++){var b=this._zeroBits(this.words[i]);if(r+=b,b!==26)break}return r},BN.prototype.byteLength=function(){return Math.ceil(this.bitLength()/8)},BN.prototype.toTwos=function(width){if(this.negative!==0)return this.abs().inotn(width).iaddn(1);return this.clone()},BN.prototype.fromTwos=function(width){if(this.testn(width-1))return this.notn(width).iaddn(1).ineg();return this.clone()},BN.prototype.isNeg=function(){return this.negative!==0},BN.prototype.neg=function(){return this.clone().ineg()},BN.prototype.ineg=function(){if(!this.isZero())this.negative^=1;return this},BN.prototype.iuor=function(num){while(this.length<num.length)this.words[this.length++]=0;for(var i=0;i<num.length;i++)this.words[i]=this.words[i]|num.words[i];return this._strip()},BN.prototype.ior=function(num){return assert((this.negative|num.negative)===0),this.iuor(num)},BN.prototype.or=function(num){if(this.length>num.length)return this.clone().ior(num);return num.clone().ior(this)},BN.prototype.uor=function(num){if(this.length>num.length)return this.clone().iuor(num);return num.clone().iuor(this)},BN.prototype.iuand=function(num){var b;if(this.length>num.length)b=num;else b=this;for(var i=0;i<b.length;i++)this.words[i]=this.words[i]&num.words[i];return this.length=b.length,this._strip()},BN.prototype.iand=function(num){return assert((this.negative|num.negative)===0),this.iuand(num)},BN.prototype.and=function(num){if(this.length>num.length)return this.clone().iand(num);return num.clone().iand(this)},BN.prototype.uand=function(num){if(this.length>num.length)return this.clone().iuand(num);return num.clone().iuand(this)},BN.prototype.iuxor=function(num){var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;for(var i=0;i<b.length;i++)this.words[i]=a.words[i]^b.words[i];if(this!==a)for(;i<a.length;i++)this.words[i]=a.words[i];return this.length=a.length,this._strip()},BN.prototype.ixor=function(num){return assert((this.negative|num.negative)===0),this.iuxor(num)},BN.prototype.xor=function(num){if(this.length>num.length)return this.clone().ixor(num);return num.clone().ixor(this)},BN.prototype.uxor=function(num){if(this.length>num.length)return this.clone().iuxor(num);return num.clone().iuxor(this)},BN.prototype.inotn=function(width){assert(typeof width===\"number\"&&width>=0);var bytesNeeded=Math.ceil(width/26)|0,bitsLeft=width%26;if(this._expand(bytesNeeded),bitsLeft>0)bytesNeeded--;for(var i=0;i<bytesNeeded;i++)this.words[i]=~this.words[i]&67108863;if(bitsLeft>0)this.words[i]=~this.words[i]&67108863>>26-bitsLeft;return this._strip()},BN.prototype.notn=function(width){return this.clone().inotn(width)},BN.prototype.setn=function(bit,val){assert(typeof bit===\"number\"&&bit>=0);var off=bit/26|0,wbit=bit%26;if(this._expand(off+1),val)this.words[off]=this.words[off]|1<<wbit;else this.words[off]=this.words[off]&~(1<<wbit);return this._strip()},BN.prototype.iadd=function(num){var r;if(this.negative!==0&&num.negative===0)return this.negative=0,r=this.isub(num),this.negative^=1,this._normSign();else if(this.negative===0&&num.negative!==0)return num.negative=0,r=this.isub(num),num.negative=1,r._normSign();var a,b;if(this.length>num.length)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)+(b.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,this.words[i]=r&67108863,carry=r>>>26;if(this.length=a.length,carry!==0)this.words[this.length]=carry,this.length++;else if(a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];return this},BN.prototype.add=function(num){var res;if(num.negative!==0&&this.negative===0)return num.negative=0,res=this.sub(num),num.negative^=1,res;else if(num.negative===0&&this.negative!==0)return this.negative=0,res=num.sub(this),this.negative=1,res;if(this.length>num.length)return this.clone().iadd(num);return num.clone().iadd(this)},BN.prototype.isub=function(num){if(num.negative!==0){num.negative=0;var r=this.iadd(num);return num.negative=1,r._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(num),this.negative=1,this._normSign();var cmp=this.cmp(num);if(cmp===0)return this.negative=0,this.length=1,this.words[0]=0,this;var a,b;if(cmp>0)a=this,b=num;else a=num,b=this;var carry=0;for(var i=0;i<b.length;i++)r=(a.words[i]|0)-(b.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;for(;carry!==0&&i<a.length;i++)r=(a.words[i]|0)+carry,carry=r>>26,this.words[i]=r&67108863;if(carry===0&&i<a.length&&a!==this)for(;i<a.length;i++)this.words[i]=a.words[i];if(this.length=Math.max(this.length,i),a!==this)this.negative=1;return this._strip()},BN.prototype.sub=function(num){return this.clone().isub(num)};function smallMulTo(self2,num,out){out.negative=num.negative^self2.negative;var len=self2.length+num.length|0;out.length=len,len=len-1|0;var a=self2.words[0]|0,b=num.words[0]|0,r=a*b,lo=r&67108863,carry=r/67108864|0;out.words[0]=lo;for(var k=1;k<len;k++){var ncarry=carry>>>26,rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j|0;a=self2.words[i]|0,b=num.words[j]|0,r=a*b+rword,ncarry+=r/67108864|0,rword=r&67108863}out.words[k]=rword|0,carry=ncarry|0}if(carry!==0)out.words[k]=carry|0;else out.length--;return out._strip()}var comb10MulTo=function(self2,num,out){var a=self2.words,b=num.words,o=out.words,c=0,lo,mid,hi,a0=a[0]|0,al0=a0&8191,ah0=a0>>>13,a1=a[1]|0,al1=a1&8191,ah1=a1>>>13,a2=a[2]|0,al2=a2&8191,ah2=a2>>>13,a3=a[3]|0,al3=a3&8191,ah3=a3>>>13,a4=a[4]|0,al4=a4&8191,ah4=a4>>>13,a5=a[5]|0,al5=a5&8191,ah5=a5>>>13,a6=a[6]|0,al6=a6&8191,ah6=a6>>>13,a7=a[7]|0,al7=a7&8191,ah7=a7>>>13,a8=a[8]|0,al8=a8&8191,ah8=a8>>>13,a9=a[9]|0,al9=a9&8191,ah9=a9>>>13,b0=b[0]|0,bl0=b0&8191,bh0=b0>>>13,b1=b[1]|0,bl1=b1&8191,bh1=b1>>>13,b2=b[2]|0,bl2=b2&8191,bh2=b2>>>13,b3=b[3]|0,bl3=b3&8191,bh3=b3>>>13,b4=b[4]|0,bl4=b4&8191,bh4=b4>>>13,b5=b[5]|0,bl5=b5&8191,bh5=b5>>>13,b6=b[6]|0,bl6=b6&8191,bh6=b6>>>13,b7=b[7]|0,bl7=b7&8191,bh7=b7>>>13,b8=b[8]|0,bl8=b8&8191,bh8=b8>>>13,b9=b[9]|0,bl9=b9&8191,bh9=b9>>>13;out.negative=self2.negative^num.negative,out.length=19,lo=Math.imul(al0,bl0),mid=Math.imul(al0,bh0),mid=mid+Math.imul(ah0,bl0)|0,hi=Math.imul(ah0,bh0);var w0=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w0>>>26)|0,w0&=67108863,lo=Math.imul(al1,bl0),mid=Math.imul(al1,bh0),mid=mid+Math.imul(ah1,bl0)|0,hi=Math.imul(ah1,bh0),lo=lo+Math.imul(al0,bl1)|0,mid=mid+Math.imul(al0,bh1)|0,mid=mid+Math.imul(ah0,bl1)|0,hi=hi+Math.imul(ah0,bh1)|0;var w1=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w1>>>26)|0,w1&=67108863,lo=Math.imul(al2,bl0),mid=Math.imul(al2,bh0),mid=mid+Math.imul(ah2,bl0)|0,hi=Math.imul(ah2,bh0),lo=lo+Math.imul(al1,bl1)|0,mid=mid+Math.imul(al1,bh1)|0,mid=mid+Math.imul(ah1,bl1)|0,hi=hi+Math.imul(ah1,bh1)|0,lo=lo+Math.imul(al0,bl2)|0,mid=mid+Math.imul(al0,bh2)|0,mid=mid+Math.imul(ah0,bl2)|0,hi=hi+Math.imul(ah0,bh2)|0;var w2=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w2>>>26)|0,w2&=67108863,lo=Math.imul(al3,bl0),mid=Math.imul(al3,bh0),mid=mid+Math.imul(ah3,bl0)|0,hi=Math.imul(ah3,bh0),lo=lo+Math.imul(al2,bl1)|0,mid=mid+Math.imul(al2,bh1)|0,mid=mid+Math.imul(ah2,bl1)|0,hi=hi+Math.imul(ah2,bh1)|0,lo=lo+Math.imul(al1,bl2)|0,mid=mid+Math.imul(al1,bh2)|0,mid=mid+Math.imul(ah1,bl2)|0,hi=hi+Math.imul(ah1,bh2)|0,lo=lo+Math.imul(al0,bl3)|0,mid=mid+Math.imul(al0,bh3)|0,mid=mid+Math.imul(ah0,bl3)|0,hi=hi+Math.imul(ah0,bh3)|0;var w3=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w3>>>26)|0,w3&=67108863,lo=Math.imul(al4,bl0),mid=Math.imul(al4,bh0),mid=mid+Math.imul(ah4,bl0)|0,hi=Math.imul(ah4,bh0),lo=lo+Math.imul(al3,bl1)|0,mid=mid+Math.imul(al3,bh1)|0,mid=mid+Math.imul(ah3,bl1)|0,hi=hi+Math.imul(ah3,bh1)|0,lo=lo+Math.imul(al2,bl2)|0,mid=mid+Math.imul(al2,bh2)|0,mid=mid+Math.imul(ah2,bl2)|0,hi=hi+Math.imul(ah2,bh2)|0,lo=lo+Math.imul(al1,bl3)|0,mid=mid+Math.imul(al1,bh3)|0,mid=mid+Math.imul(ah1,bl3)|0,hi=hi+Math.imul(ah1,bh3)|0,lo=lo+Math.imul(al0,bl4)|0,mid=mid+Math.imul(al0,bh4)|0,mid=mid+Math.imul(ah0,bl4)|0,hi=hi+Math.imul(ah0,bh4)|0;var w4=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w4>>>26)|0,w4&=67108863,lo=Math.imul(al5,bl0),mid=Math.imul(al5,bh0),mid=mid+Math.imul(ah5,bl0)|0,hi=Math.imul(ah5,bh0),lo=lo+Math.imul(al4,bl1)|0,mid=mid+Math.imul(al4,bh1)|0,mid=mid+Math.imul(ah4,bl1)|0,hi=hi+Math.imul(ah4,bh1)|0,lo=lo+Math.imul(al3,bl2)|0,mid=mid+Math.imul(al3,bh2)|0,mid=mid+Math.imul(ah3,bl2)|0,hi=hi+Math.imul(ah3,bh2)|0,lo=lo+Math.imul(al2,bl3)|0,mid=mid+Math.imul(al2,bh3)|0,mid=mid+Math.imul(ah2,bl3)|0,hi=hi+Math.imul(ah2,bh3)|0,lo=lo+Math.imul(al1,bl4)|0,mid=mid+Math.imul(al1,bh4)|0,mid=mid+Math.imul(ah1,bl4)|0,hi=hi+Math.imul(ah1,bh4)|0,lo=lo+Math.imul(al0,bl5)|0,mid=mid+Math.imul(al0,bh5)|0,mid=mid+Math.imul(ah0,bl5)|0,hi=hi+Math.imul(ah0,bh5)|0;var w5=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w5>>>26)|0,w5&=67108863,lo=Math.imul(al6,bl0),mid=Math.imul(al6,bh0),mid=mid+Math.imul(ah6,bl0)|0,hi=Math.imul(ah6,bh0),lo=lo+Math.imul(al5,bl1)|0,mid=mid+Math.imul(al5,bh1)|0,mid=mid+Math.imul(ah5,bl1)|0,hi=hi+Math.imul(ah5,bh1)|0,lo=lo+Math.imul(al4,bl2)|0,mid=mid+Math.imul(al4,bh2)|0,mid=mid+Math.imul(ah4,bl2)|0,hi=hi+Math.imul(ah4,bh2)|0,lo=lo+Math.imul(al3,bl3)|0,mid=mid+Math.imul(al3,bh3)|0,mid=mid+Math.imul(ah3,bl3)|0,hi=hi+Math.imul(ah3,bh3)|0,lo=lo+Math.imul(al2,bl4)|0,mid=mid+Math.imul(al2,bh4)|0,mid=mid+Math.imul(ah2,bl4)|0,hi=hi+Math.imul(ah2,bh4)|0,lo=lo+Math.imul(al1,bl5)|0,mid=mid+Math.imul(al1,bh5)|0,mid=mid+Math.imul(ah1,bl5)|0,hi=hi+Math.imul(ah1,bh5)|0,lo=lo+Math.imul(al0,bl6)|0,mid=mid+Math.imul(al0,bh6)|0,mid=mid+Math.imul(ah0,bl6)|0,hi=hi+Math.imul(ah0,bh6)|0;var w6=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w6>>>26)|0,w6&=67108863,lo=Math.imul(al7,bl0),mid=Math.imul(al7,bh0),mid=mid+Math.imul(ah7,bl0)|0,hi=Math.imul(ah7,bh0),lo=lo+Math.imul(al6,bl1)|0,mid=mid+Math.imul(al6,bh1)|0,mid=mid+Math.imul(ah6,bl1)|0,hi=hi+Math.imul(ah6,bh1)|0,lo=lo+Math.imul(al5,bl2)|0,mid=mid+Math.imul(al5,bh2)|0,mid=mid+Math.imul(ah5,bl2)|0,hi=hi+Math.imul(ah5,bh2)|0,lo=lo+Math.imul(al4,bl3)|0,mid=mid+Math.imul(al4,bh3)|0,mid=mid+Math.imul(ah4,bl3)|0,hi=hi+Math.imul(ah4,bh3)|0,lo=lo+Math.imul(al3,bl4)|0,mid=mid+Math.imul(al3,bh4)|0,mid=mid+Math.imul(ah3,bl4)|0,hi=hi+Math.imul(ah3,bh4)|0,lo=lo+Math.imul(al2,bl5)|0,mid=mid+Math.imul(al2,bh5)|0,mid=mid+Math.imul(ah2,bl5)|0,hi=hi+Math.imul(ah2,bh5)|0,lo=lo+Math.imul(al1,bl6)|0,mid=mid+Math.imul(al1,bh6)|0,mid=mid+Math.imul(ah1,bl6)|0,hi=hi+Math.imul(ah1,bh6)|0,lo=lo+Math.imul(al0,bl7)|0,mid=mid+Math.imul(al0,bh7)|0,mid=mid+Math.imul(ah0,bl7)|0,hi=hi+Math.imul(ah0,bh7)|0;var w7=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w7>>>26)|0,w7&=67108863,lo=Math.imul(al8,bl0),mid=Math.imul(al8,bh0),mid=mid+Math.imul(ah8,bl0)|0,hi=Math.imul(ah8,bh0),lo=lo+Math.imul(al7,bl1)|0,mid=mid+Math.imul(al7,bh1)|0,mid=mid+Math.imul(ah7,bl1)|0,hi=hi+Math.imul(ah7,bh1)|0,lo=lo+Math.imul(al6,bl2)|0,mid=mid+Math.imul(al6,bh2)|0,mid=mid+Math.imul(ah6,bl2)|0,hi=hi+Math.imul(ah6,bh2)|0,lo=lo+Math.imul(al5,bl3)|0,mid=mid+Math.imul(al5,bh3)|0,mid=mid+Math.imul(ah5,bl3)|0,hi=hi+Math.imul(ah5,bh3)|0,lo=lo+Math.imul(al4,bl4)|0,mid=mid+Math.imul(al4,bh4)|0,mid=mid+Math.imul(ah4,bl4)|0,hi=hi+Math.imul(ah4,bh4)|0,lo=lo+Math.imul(al3,bl5)|0,mid=mid+Math.imul(al3,bh5)|0,mid=mid+Math.imul(ah3,bl5)|0,hi=hi+Math.imul(ah3,bh5)|0,lo=lo+Math.imul(al2,bl6)|0,mid=mid+Math.imul(al2,bh6)|0,mid=mid+Math.imul(ah2,bl6)|0,hi=hi+Math.imul(ah2,bh6)|0,lo=lo+Math.imul(al1,bl7)|0,mid=mid+Math.imul(al1,bh7)|0,mid=mid+Math.imul(ah1,bl7)|0,hi=hi+Math.imul(ah1,bh7)|0,lo=lo+Math.imul(al0,bl8)|0,mid=mid+Math.imul(al0,bh8)|0,mid=mid+Math.imul(ah0,bl8)|0,hi=hi+Math.imul(ah0,bh8)|0;var w8=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w8>>>26)|0,w8&=67108863,lo=Math.imul(al9,bl0),mid=Math.imul(al9,bh0),mid=mid+Math.imul(ah9,bl0)|0,hi=Math.imul(ah9,bh0),lo=lo+Math.imul(al8,bl1)|0,mid=mid+Math.imul(al8,bh1)|0,mid=mid+Math.imul(ah8,bl1)|0,hi=hi+Math.imul(ah8,bh1)|0,lo=lo+Math.imul(al7,bl2)|0,mid=mid+Math.imul(al7,bh2)|0,mid=mid+Math.imul(ah7,bl2)|0,hi=hi+Math.imul(ah7,bh2)|0,lo=lo+Math.imul(al6,bl3)|0,mid=mid+Math.imul(al6,bh3)|0,mid=mid+Math.imul(ah6,bl3)|0,hi=hi+Math.imul(ah6,bh3)|0,lo=lo+Math.imul(al5,bl4)|0,mid=mid+Math.imul(al5,bh4)|0,mid=mid+Math.imul(ah5,bl4)|0,hi=hi+Math.imul(ah5,bh4)|0,lo=lo+Math.imul(al4,bl5)|0,mid=mid+Math.imul(al4,bh5)|0,mid=mid+Math.imul(ah4,bl5)|0,hi=hi+Math.imul(ah4,bh5)|0,lo=lo+Math.imul(al3,bl6)|0,mid=mid+Math.imul(al3,bh6)|0,mid=mid+Math.imul(ah3,bl6)|0,hi=hi+Math.imul(ah3,bh6)|0,lo=lo+Math.imul(al2,bl7)|0,mid=mid+Math.imul(al2,bh7)|0,mid=mid+Math.imul(ah2,bl7)|0,hi=hi+Math.imul(ah2,bh7)|0,lo=lo+Math.imul(al1,bl8)|0,mid=mid+Math.imul(al1,bh8)|0,mid=mid+Math.imul(ah1,bl8)|0,hi=hi+Math.imul(ah1,bh8)|0,lo=lo+Math.imul(al0,bl9)|0,mid=mid+Math.imul(al0,bh9)|0,mid=mid+Math.imul(ah0,bl9)|0,hi=hi+Math.imul(ah0,bh9)|0;var w9=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w9>>>26)|0,w9&=67108863,lo=Math.imul(al9,bl1),mid=Math.imul(al9,bh1),mid=mid+Math.imul(ah9,bl1)|0,hi=Math.imul(ah9,bh1),lo=lo+Math.imul(al8,bl2)|0,mid=mid+Math.imul(al8,bh2)|0,mid=mid+Math.imul(ah8,bl2)|0,hi=hi+Math.imul(ah8,bh2)|0,lo=lo+Math.imul(al7,bl3)|0,mid=mid+Math.imul(al7,bh3)|0,mid=mid+Math.imul(ah7,bl3)|0,hi=hi+Math.imul(ah7,bh3)|0,lo=lo+Math.imul(al6,bl4)|0,mid=mid+Math.imul(al6,bh4)|0,mid=mid+Math.imul(ah6,bl4)|0,hi=hi+Math.imul(ah6,bh4)|0,lo=lo+Math.imul(al5,bl5)|0,mid=mid+Math.imul(al5,bh5)|0,mid=mid+Math.imul(ah5,bl5)|0,hi=hi+Math.imul(ah5,bh5)|0,lo=lo+Math.imul(al4,bl6)|0,mid=mid+Math.imul(al4,bh6)|0,mid=mid+Math.imul(ah4,bl6)|0,hi=hi+Math.imul(ah4,bh6)|0,lo=lo+Math.imul(al3,bl7)|0,mid=mid+Math.imul(al3,bh7)|0,mid=mid+Math.imul(ah3,bl7)|0,hi=hi+Math.imul(ah3,bh7)|0,lo=lo+Math.imul(al2,bl8)|0,mid=mid+Math.imul(al2,bh8)|0,mid=mid+Math.imul(ah2,bl8)|0,hi=hi+Math.imul(ah2,bh8)|0,lo=lo+Math.imul(al1,bl9)|0,mid=mid+Math.imul(al1,bh9)|0,mid=mid+Math.imul(ah1,bl9)|0,hi=hi+Math.imul(ah1,bh9)|0;var w10=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w10>>>26)|0,w10&=67108863,lo=Math.imul(al9,bl2),mid=Math.imul(al9,bh2),mid=mid+Math.imul(ah9,bl2)|0,hi=Math.imul(ah9,bh2),lo=lo+Math.imul(al8,bl3)|0,mid=mid+Math.imul(al8,bh3)|0,mid=mid+Math.imul(ah8,bl3)|0,hi=hi+Math.imul(ah8,bh3)|0,lo=lo+Math.imul(al7,bl4)|0,mid=mid+Math.imul(al7,bh4)|0,mid=mid+Math.imul(ah7,bl4)|0,hi=hi+Math.imul(ah7,bh4)|0,lo=lo+Math.imul(al6,bl5)|0,mid=mid+Math.imul(al6,bh5)|0,mid=mid+Math.imul(ah6,bl5)|0,hi=hi+Math.imul(ah6,bh5)|0,lo=lo+Math.imul(al5,bl6)|0,mid=mid+Math.imul(al5,bh6)|0,mid=mid+Math.imul(ah5,bl6)|0,hi=hi+Math.imul(ah5,bh6)|0,lo=lo+Math.imul(al4,bl7)|0,mid=mid+Math.imul(al4,bh7)|0,mid=mid+Math.imul(ah4,bl7)|0,hi=hi+Math.imul(ah4,bh7)|0,lo=lo+Math.imul(al3,bl8)|0,mid=mid+Math.imul(al3,bh8)|0,mid=mid+Math.imul(ah3,bl8)|0,hi=hi+Math.imul(ah3,bh8)|0,lo=lo+Math.imul(al2,bl9)|0,mid=mid+Math.imul(al2,bh9)|0,mid=mid+Math.imul(ah2,bl9)|0,hi=hi+Math.imul(ah2,bh9)|0;var w11=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w11>>>26)|0,w11&=67108863,lo=Math.imul(al9,bl3),mid=Math.imul(al9,bh3),mid=mid+Math.imul(ah9,bl3)|0,hi=Math.imul(ah9,bh3),lo=lo+Math.imul(al8,bl4)|0,mid=mid+Math.imul(al8,bh4)|0,mid=mid+Math.imul(ah8,bl4)|0,hi=hi+Math.imul(ah8,bh4)|0,lo=lo+Math.imul(al7,bl5)|0,mid=mid+Math.imul(al7,bh5)|0,mid=mid+Math.imul(ah7,bl5)|0,hi=hi+Math.imul(ah7,bh5)|0,lo=lo+Math.imul(al6,bl6)|0,mid=mid+Math.imul(al6,bh6)|0,mid=mid+Math.imul(ah6,bl6)|0,hi=hi+Math.imul(ah6,bh6)|0,lo=lo+Math.imul(al5,bl7)|0,mid=mid+Math.imul(al5,bh7)|0,mid=mid+Math.imul(ah5,bl7)|0,hi=hi+Math.imul(ah5,bh7)|0,lo=lo+Math.imul(al4,bl8)|0,mid=mid+Math.imul(al4,bh8)|0,mid=mid+Math.imul(ah4,bl8)|0,hi=hi+Math.imul(ah4,bh8)|0,lo=lo+Math.imul(al3,bl9)|0,mid=mid+Math.imul(al3,bh9)|0,mid=mid+Math.imul(ah3,bl9)|0,hi=hi+Math.imul(ah3,bh9)|0;var w12=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w12>>>26)|0,w12&=67108863,lo=Math.imul(al9,bl4),mid=Math.imul(al9,bh4),mid=mid+Math.imul(ah9,bl4)|0,hi=Math.imul(ah9,bh4),lo=lo+Math.imul(al8,bl5)|0,mid=mid+Math.imul(al8,bh5)|0,mid=mid+Math.imul(ah8,bl5)|0,hi=hi+Math.imul(ah8,bh5)|0,lo=lo+Math.imul(al7,bl6)|0,mid=mid+Math.imul(al7,bh6)|0,mid=mid+Math.imul(ah7,bl6)|0,hi=hi+Math.imul(ah7,bh6)|0,lo=lo+Math.imul(al6,bl7)|0,mid=mid+Math.imul(al6,bh7)|0,mid=mid+Math.imul(ah6,bl7)|0,hi=hi+Math.imul(ah6,bh7)|0,lo=lo+Math.imul(al5,bl8)|0,mid=mid+Math.imul(al5,bh8)|0,mid=mid+Math.imul(ah5,bl8)|0,hi=hi+Math.imul(ah5,bh8)|0,lo=lo+Math.imul(al4,bl9)|0,mid=mid+Math.imul(al4,bh9)|0,mid=mid+Math.imul(ah4,bl9)|0,hi=hi+Math.imul(ah4,bh9)|0;var w13=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w13>>>26)|0,w13&=67108863,lo=Math.imul(al9,bl5),mid=Math.imul(al9,bh5),mid=mid+Math.imul(ah9,bl5)|0,hi=Math.imul(ah9,bh5),lo=lo+Math.imul(al8,bl6)|0,mid=mid+Math.imul(al8,bh6)|0,mid=mid+Math.imul(ah8,bl6)|0,hi=hi+Math.imul(ah8,bh6)|0,lo=lo+Math.imul(al7,bl7)|0,mid=mid+Math.imul(al7,bh7)|0,mid=mid+Math.imul(ah7,bl7)|0,hi=hi+Math.imul(ah7,bh7)|0,lo=lo+Math.imul(al6,bl8)|0,mid=mid+Math.imul(al6,bh8)|0,mid=mid+Math.imul(ah6,bl8)|0,hi=hi+Math.imul(ah6,bh8)|0,lo=lo+Math.imul(al5,bl9)|0,mid=mid+Math.imul(al5,bh9)|0,mid=mid+Math.imul(ah5,bl9)|0,hi=hi+Math.imul(ah5,bh9)|0;var w14=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w14>>>26)|0,w14&=67108863,lo=Math.imul(al9,bl6),mid=Math.imul(al9,bh6),mid=mid+Math.imul(ah9,bl6)|0,hi=Math.imul(ah9,bh6),lo=lo+Math.imul(al8,bl7)|0,mid=mid+Math.imul(al8,bh7)|0,mid=mid+Math.imul(ah8,bl7)|0,hi=hi+Math.imul(ah8,bh7)|0,lo=lo+Math.imul(al7,bl8)|0,mid=mid+Math.imul(al7,bh8)|0,mid=mid+Math.imul(ah7,bl8)|0,hi=hi+Math.imul(ah7,bh8)|0,lo=lo+Math.imul(al6,bl9)|0,mid=mid+Math.imul(al6,bh9)|0,mid=mid+Math.imul(ah6,bl9)|0,hi=hi+Math.imul(ah6,bh9)|0;var w15=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w15>>>26)|0,w15&=67108863,lo=Math.imul(al9,bl7),mid=Math.imul(al9,bh7),mid=mid+Math.imul(ah9,bl7)|0,hi=Math.imul(ah9,bh7),lo=lo+Math.imul(al8,bl8)|0,mid=mid+Math.imul(al8,bh8)|0,mid=mid+Math.imul(ah8,bl8)|0,hi=hi+Math.imul(ah8,bh8)|0,lo=lo+Math.imul(al7,bl9)|0,mid=mid+Math.imul(al7,bh9)|0,mid=mid+Math.imul(ah7,bl9)|0,hi=hi+Math.imul(ah7,bh9)|0;var w16=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w16>>>26)|0,w16&=67108863,lo=Math.imul(al9,bl8),mid=Math.imul(al9,bh8),mid=mid+Math.imul(ah9,bl8)|0,hi=Math.imul(ah9,bh8),lo=lo+Math.imul(al8,bl9)|0,mid=mid+Math.imul(al8,bh9)|0,mid=mid+Math.imul(ah8,bl9)|0,hi=hi+Math.imul(ah8,bh9)|0;var w17=(c+lo|0)+((mid&8191)<<13)|0;c=(hi+(mid>>>13)|0)+(w17>>>26)|0,w17&=67108863,lo=Math.imul(al9,bl9),mid=Math.imul(al9,bh9),mid=mid+Math.imul(ah9,bl9)|0,hi=Math.imul(ah9,bh9);var w18=(c+lo|0)+((mid&8191)<<13)|0;if(c=(hi+(mid>>>13)|0)+(w18>>>26)|0,w18&=67108863,o[0]=w0,o[1]=w1,o[2]=w2,o[3]=w3,o[4]=w4,o[5]=w5,o[6]=w6,o[7]=w7,o[8]=w8,o[9]=w9,o[10]=w10,o[11]=w11,o[12]=w12,o[13]=w13,o[14]=w14,o[15]=w15,o[16]=w16,o[17]=w17,o[18]=w18,c!==0)o[19]=c,out.length++;return out};if(!Math.imul)comb10MulTo=smallMulTo;function bigMulTo(self2,num,out){out.negative=num.negative^self2.negative,out.length=self2.length+num.length;var carry=0,hncarry=0;for(var k=0;k<out.length-1;k++){var ncarry=hncarry;hncarry=0;var rword=carry&67108863,maxJ=Math.min(k,num.length-1);for(var j=Math.max(0,k-self2.length+1);j<=maxJ;j++){var i=k-j,a=self2.words[i]|0,b=num.words[j]|0,r=a*b,lo=r&67108863;ncarry=ncarry+(r/67108864|0)|0,lo=lo+rword|0,rword=lo&67108863,ncarry=ncarry+(lo>>>26)|0,hncarry+=ncarry>>>26,ncarry&=67108863}out.words[k]=rword,carry=ncarry,ncarry=hncarry}if(carry!==0)out.words[k]=carry;else out.length--;return out._strip()}function jumboMulTo(self2,num,out){return bigMulTo(self2,num,out)}BN.prototype.mulTo=function(num,out){var res,len=this.length+num.length;if(this.length===10&&num.length===10)res=comb10MulTo(this,num,out);else if(len<63)res=smallMulTo(this,num,out);else if(len<1024)res=bigMulTo(this,num,out);else res=jumboMulTo(this,num,out);return res};function FFTM(x,y){this.x=x,this.y=y}FFTM.prototype.makeRBT=function(N){var t=Array(N),l=BN.prototype._countBits(N)-1;for(var i=0;i<N;i++)t[i]=this.revBin(i,l,N);return t},FFTM.prototype.revBin=function(x,l,N){if(x===0||x===N-1)return x;var rb=0;for(var i=0;i<l;i++)rb|=(x&1)<<l-i-1,x>>=1;return rb},FFTM.prototype.permute=function(rbt,rws,iws,rtws,itws,N){for(var i=0;i<N;i++)rtws[i]=rws[rbt[i]],itws[i]=iws[rbt[i]]},FFTM.prototype.transform=function(rws,iws,rtws,itws,N,rbt){this.permute(rbt,rws,iws,rtws,itws,N);for(var s=1;s<N;s<<=1){var l=s<<1,rtwdf=Math.cos(2*Math.PI/l),itwdf=Math.sin(2*Math.PI/l);for(var p=0;p<N;p+=l){var rtwdf_=rtwdf,itwdf_=itwdf;for(var j=0;j<s;j++){var re=rtws[p+j],ie=itws[p+j],ro=rtws[p+j+s],io=itws[p+j+s],rx=rtwdf_*ro-itwdf_*io;if(io=rtwdf_*io+itwdf_*ro,ro=rx,rtws[p+j]=re+ro,itws[p+j]=ie+io,rtws[p+j+s]=re-ro,itws[p+j+s]=ie-io,j!==l)rx=rtwdf*rtwdf_-itwdf*itwdf_,itwdf_=rtwdf*itwdf_+itwdf*rtwdf_,rtwdf_=rx}}}},FFTM.prototype.guessLen13b=function(n,m){var N=Math.max(m,n)|1,odd=N&1,i=0;for(N=N/2|0;N;N=N>>>1)i++;return 1<<i+1+odd},FFTM.prototype.conjugate=function(rws,iws,N){if(N<=1)return;for(var i=0;i<N/2;i++){var t=rws[i];rws[i]=rws[N-i-1],rws[N-i-1]=t,t=iws[i],iws[i]=-iws[N-i-1],iws[N-i-1]=-t}},FFTM.prototype.normalize13b=function(ws,N){var carry=0;for(var i=0;i<N/2;i++){var w=Math.round(ws[2*i+1]/N)*8192+Math.round(ws[2*i]/N)+carry;if(ws[i]=w&67108863,w<67108864)carry=0;else carry=w/67108864|0}return ws},FFTM.prototype.convert13b=function(ws,len,rws,N){var carry=0;for(var i=0;i<len;i++)carry=carry+(ws[i]|0),rws[2*i]=carry&8191,carry=carry>>>13,rws[2*i+1]=carry&8191,carry=carry>>>13;for(i=2*len;i<N;++i)rws[i]=0;assert(carry===0),assert((carry&-8192)===0)},FFTM.prototype.stub=function(N){var ph=Array(N);for(var i=0;i<N;i++)ph[i]=0;return ph},FFTM.prototype.mulp=function(x,y,out){var N=2*this.guessLen13b(x.length,y.length),rbt=this.makeRBT(N),_=this.stub(N),rws=Array(N),rwst=Array(N),iwst=Array(N),nrws=Array(N),nrwst=Array(N),niwst=Array(N),rmws=out.words;rmws.length=N,this.convert13b(x.words,x.length,rws,N),this.convert13b(y.words,y.length,nrws,N),this.transform(rws,_,rwst,iwst,N,rbt),this.transform(nrws,_,nrwst,niwst,N,rbt);for(var i=0;i<N;i++){var rx=rwst[i]*nrwst[i]-iwst[i]*niwst[i];iwst[i]=rwst[i]*niwst[i]+iwst[i]*nrwst[i],rwst[i]=rx}return this.conjugate(rwst,iwst,N),this.transform(rwst,iwst,rmws,_,N,rbt),this.conjugate(rmws,_,N),this.normalize13b(rmws,N),out.negative=x.negative^y.negative,out.length=x.length+y.length,out._strip()},BN.prototype.mul=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),this.mulTo(num,out)},BN.prototype.mulf=function(num){var out=new BN(null);return out.words=Array(this.length+num.length),jumboMulTo(this,num,out)},BN.prototype.imul=function(num){return this.clone().mulTo(num,this)},BN.prototype.imuln=function(num){var isNegNum=num<0;if(isNegNum)num=-num;assert(typeof num===\"number\"),assert(num<67108864);var carry=0;for(var i=0;i<this.length;i++){var w=(this.words[i]|0)*num,lo=(w&67108863)+(carry&67108863);carry>>=26,carry+=w/67108864|0,carry+=lo>>>26,this.words[i]=lo&67108863}if(carry!==0)this.words[i]=carry,this.length++;return this.length=num===0?1:this.length,isNegNum?this.ineg():this},BN.prototype.muln=function(num){return this.clone().imuln(num)},BN.prototype.sqr=function(){return this.mul(this)},BN.prototype.isqr=function(){return this.imul(this.clone())},BN.prototype.pow=function(num){var w=toBitArray(num);if(w.length===0)return new BN(1);var res=this;for(var i=0;i<w.length;i++,res=res.sqr())if(w[i]!==0)break;if(++i<w.length)for(var q=res.sqr();i<w.length;i++,q=q.sqr()){if(w[i]===0)continue;res=res.mul(q)}return res},BN.prototype.iushln=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26,carryMask=67108863>>>26-r<<26-r,i;if(r!==0){var carry=0;for(i=0;i<this.length;i++){var newCarry=this.words[i]&carryMask,c=(this.words[i]|0)-newCarry<<r;this.words[i]=c|carry,carry=newCarry>>>26-r}if(carry)this.words[i]=carry,this.length++}if(s!==0){for(i=this.length-1;i>=0;i--)this.words[i+s]=this.words[i];for(i=0;i<s;i++)this.words[i]=0;this.length+=s}return this._strip()},BN.prototype.ishln=function(bits){return assert(this.negative===0),this.iushln(bits)},BN.prototype.iushrn=function(bits,hint,extended){assert(typeof bits===\"number\"&&bits>=0);var h;if(hint)h=(hint-hint%26)/26;else h=0;var r=bits%26,s=Math.min((bits-r)/26,this.length),mask=67108863^67108863>>>r<<r,maskedWords=extended;if(h-=s,h=Math.max(0,h),maskedWords){for(var i=0;i<s;i++)maskedWords.words[i]=this.words[i];maskedWords.length=s}if(s===0);else if(this.length>s){this.length-=s;for(i=0;i<this.length;i++)this.words[i]=this.words[i+s]}else this.words[0]=0,this.length=1;var carry=0;for(i=this.length-1;i>=0&&(carry!==0||i>=h);i--){var word=this.words[i]|0;this.words[i]=carry<<26-r|word>>>r,carry=word&mask}if(maskedWords&&carry!==0)maskedWords.words[maskedWords.length++]=carry;if(this.length===0)this.words[0]=0,this.length=1;return this._strip()},BN.prototype.ishrn=function(bits,hint,extended){return assert(this.negative===0),this.iushrn(bits,hint,extended)},BN.prototype.shln=function(bits){return this.clone().ishln(bits)},BN.prototype.ushln=function(bits){return this.clone().iushln(bits)},BN.prototype.shrn=function(bits){return this.clone().ishrn(bits)},BN.prototype.ushrn=function(bits){return this.clone().iushrn(bits)},BN.prototype.testn=function(bit){assert(typeof bit===\"number\"&&bit>=0);var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return!1;var w=this.words[s];return!!(w&q)},BN.prototype.imaskn=function(bits){assert(typeof bits===\"number\"&&bits>=0);var r=bits%26,s=(bits-r)/26;if(assert(this.negative===0,\"imaskn works only with positive numbers\"),this.length<=s)return this;if(r!==0)s++;if(this.length=Math.min(s,this.length),r!==0){var mask=67108863^67108863>>>r<<r;this.words[this.length-1]&=mask}return this._strip()},BN.prototype.maskn=function(bits){return this.clone().imaskn(bits)},BN.prototype.iaddn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.isubn(-num);if(this.negative!==0){if(this.length===1&&(this.words[0]|0)<=num)return this.words[0]=num-(this.words[0]|0),this.negative=0,this;return this.negative=0,this.isubn(num),this.negative=1,this}return this._iaddn(num)},BN.prototype._iaddn=function(num){this.words[0]+=num;for(var i=0;i<this.length&&this.words[i]>=67108864;i++)if(this.words[i]-=67108864,i===this.length-1)this.words[i+1]=1;else this.words[i+1]++;return this.length=Math.max(this.length,i+1),this},BN.prototype.isubn=function(num){if(assert(typeof num===\"number\"),assert(num<67108864),num<0)return this.iaddn(-num);if(this.negative!==0)return this.negative=0,this.iaddn(num),this.negative=1,this;if(this.words[0]-=num,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var i=0;i<this.length&&this.words[i]<0;i++)this.words[i]+=67108864,this.words[i+1]-=1;return this._strip()},BN.prototype.addn=function(num){return this.clone().iaddn(num)},BN.prototype.subn=function(num){return this.clone().isubn(num)},BN.prototype.iabs=function(){return this.negative=0,this},BN.prototype.abs=function(){return this.clone().iabs()},BN.prototype._ishlnsubmul=function(num,mul,shift){var len=num.length+shift,i;this._expand(len);var w,carry=0;for(i=0;i<num.length;i++){w=(this.words[i+shift]|0)+carry;var right=(num.words[i]|0)*mul;w-=right&67108863,carry=(w>>26)-(right/67108864|0),this.words[i+shift]=w&67108863}for(;i<this.length-shift;i++)w=(this.words[i+shift]|0)+carry,carry=w>>26,this.words[i+shift]=w&67108863;if(carry===0)return this._strip();assert(carry===-1),carry=0;for(i=0;i<this.length;i++)w=-(this.words[i]|0)+carry,carry=w>>26,this.words[i]=w&67108863;return this.negative=1,this._strip()},BN.prototype._wordDiv=function(num,mode){var shift=this.length-num.length,a=this.clone(),b=num,bhi=b.words[b.length-1]|0,bhiBits=this._countBits(bhi);if(shift=26-bhiBits,shift!==0)b=b.ushln(shift),a.iushln(shift),bhi=b.words[b.length-1]|0;var m=a.length-b.length,q;if(mode!==\"mod\"){q=new BN(null),q.length=m+1,q.words=Array(q.length);for(var i=0;i<q.length;i++)q.words[i]=0}var diff=a.clone()._ishlnsubmul(b,1,m);if(diff.negative===0){if(a=diff,q)q.words[m]=1}for(var j=m-1;j>=0;j--){var qj=(a.words[b.length+j]|0)*67108864+(a.words[b.length+j-1]|0);qj=Math.min(qj/bhi|0,67108863),a._ishlnsubmul(b,qj,j);while(a.negative!==0)if(qj--,a.negative=0,a._ishlnsubmul(b,1,j),!a.isZero())a.negative^=1;if(q)q.words[j]=qj}if(q)q._strip();if(a._strip(),mode!==\"div\"&&shift!==0)a.iushrn(shift);return{div:q||null,mod:a}},BN.prototype.divmod=function(num,mode,positive){if(assert(!num.isZero()),this.isZero())return{div:new BN(0),mod:new BN(0)};var div,mod,res;if(this.negative!==0&&num.negative===0){if(res=this.neg().divmod(num,mode),mode!==\"mod\")div=res.div.neg();if(mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.iadd(num)}return{div,mod}}if(this.negative===0&&num.negative!==0){if(res=this.divmod(num.neg(),mode),mode!==\"mod\")div=res.div.neg();return{div,mod:res.mod}}if((this.negative&num.negative)!==0){if(res=this.neg().divmod(num.neg(),mode),mode!==\"div\"){if(mod=res.mod.neg(),positive&&mod.negative!==0)mod.isub(num)}return{div:res.div,mod}}if(num.length>this.length||this.cmp(num)<0)return{div:new BN(0),mod:this};if(num.length===1){if(mode===\"div\")return{div:this.divn(num.words[0]),mod:null};if(mode===\"mod\")return{div:null,mod:new BN(this.modrn(num.words[0]))};return{div:this.divn(num.words[0]),mod:new BN(this.modrn(num.words[0]))}}return this._wordDiv(num,mode)},BN.prototype.div=function(num){return this.divmod(num,\"div\",!1).div},BN.prototype.mod=function(num){return this.divmod(num,\"mod\",!1).mod},BN.prototype.umod=function(num){return this.divmod(num,\"mod\",!0).mod},BN.prototype.divRound=function(num){var dm=this.divmod(num);if(dm.mod.isZero())return dm.div;var mod=dm.div.negative!==0?dm.mod.isub(num):dm.mod,half=num.ushrn(1),r2=num.andln(1),cmp=mod.cmp(half);if(cmp<0||r2===1&&cmp===0)return dm.div;return dm.div.negative!==0?dm.div.isubn(1):dm.div.iaddn(1)},BN.prototype.modrn=function(num){var isNegNum=num<0;if(isNegNum)num=-num;assert(num<=67108863);var p=67108864%num,acc=0;for(var i=this.length-1;i>=0;i--)acc=(p*acc+(this.words[i]|0))%num;return isNegNum?-acc:acc},BN.prototype.modn=function(num){return this.modrn(num)},BN.prototype.idivn=function(num){var isNegNum=num<0;if(isNegNum)num=-num;assert(num<=67108863);var carry=0;for(var i=this.length-1;i>=0;i--){var w=(this.words[i]|0)+carry*67108864;this.words[i]=w/num|0,carry=w%num}return this._strip(),isNegNum?this.ineg():this},BN.prototype.divn=function(num){return this.clone().idivn(num)},BN.prototype.egcd=function(p){assert(p.negative===0),assert(!p.isZero());var x=this,y=p.clone();if(x.negative!==0)x=x.umod(p);else x=x.clone();var A=new BN(1),B=new BN(0),C=new BN(0),D=new BN(1),g=0;while(x.isEven()&&y.isEven())x.iushrn(1),y.iushrn(1),++g;var yp=y.clone(),xp=x.clone();while(!x.isZero()){for(var i=0,im=1;(x.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){x.iushrn(i);while(i-- >0){if(A.isOdd()||B.isOdd())A.iadd(yp),B.isub(xp);A.iushrn(1),B.iushrn(1)}}for(var j=0,jm=1;(y.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){y.iushrn(j);while(j-- >0){if(C.isOdd()||D.isOdd())C.iadd(yp),D.isub(xp);C.iushrn(1),D.iushrn(1)}}if(x.cmp(y)>=0)x.isub(y),A.isub(C),B.isub(D);else y.isub(x),C.isub(A),D.isub(B)}return{a:C,b:D,gcd:y.iushln(g)}},BN.prototype._invmp=function(p){assert(p.negative===0),assert(!p.isZero());var a=this,b=p.clone();if(a.negative!==0)a=a.umod(p);else a=a.clone();var x1=new BN(1),x2=new BN(0),delta=b.clone();while(a.cmpn(1)>0&&b.cmpn(1)>0){for(var i=0,im=1;(a.words[0]&im)===0&&i<26;++i,im<<=1);if(i>0){a.iushrn(i);while(i-- >0){if(x1.isOdd())x1.iadd(delta);x1.iushrn(1)}}for(var j=0,jm=1;(b.words[0]&jm)===0&&j<26;++j,jm<<=1);if(j>0){b.iushrn(j);while(j-- >0){if(x2.isOdd())x2.iadd(delta);x2.iushrn(1)}}if(a.cmp(b)>=0)a.isub(b),x1.isub(x2);else b.isub(a),x2.isub(x1)}var res;if(a.cmpn(1)===0)res=x1;else res=x2;if(res.cmpn(0)<0)res.iadd(p);return res},BN.prototype.gcd=function(num){if(this.isZero())return num.abs();if(num.isZero())return this.abs();var a=this.clone(),b=num.clone();a.negative=0,b.negative=0;for(var shift=0;a.isEven()&&b.isEven();shift++)a.iushrn(1),b.iushrn(1);do{while(a.isEven())a.iushrn(1);while(b.isEven())b.iushrn(1);var r=a.cmp(b);if(r<0){var t=a;a=b,b=t}else if(r===0||b.cmpn(1)===0)break;a.isub(b)}while(!0);return b.iushln(shift)},BN.prototype.invm=function(num){return this.egcd(num).a.umod(num)},BN.prototype.isEven=function(){return(this.words[0]&1)===0},BN.prototype.isOdd=function(){return(this.words[0]&1)===1},BN.prototype.andln=function(num){return this.words[0]&num},BN.prototype.bincn=function(bit){assert(typeof bit===\"number\");var r=bit%26,s=(bit-r)/26,q=1<<r;if(this.length<=s)return this._expand(s+1),this.words[s]|=q,this;var carry=q;for(var i=s;carry!==0&&i<this.length;i++){var w=this.words[i]|0;w+=carry,carry=w>>>26,w&=67108863,this.words[i]=w}if(carry!==0)this.words[i]=carry,this.length++;return this},BN.prototype.isZero=function(){return this.length===1&&this.words[0]===0},BN.prototype.cmpn=function(num){var negative=num<0;if(this.negative!==0&&!negative)return-1;if(this.negative===0&&negative)return 1;this._strip();var res;if(this.length>1)res=1;else{if(negative)num=-num;assert(num<=67108863,\"Number is too big\");var w=this.words[0]|0;res=w===num?0:w<num?-1:1}if(this.negative!==0)return-res|0;return res},BN.prototype.cmp=function(num){if(this.negative!==0&&num.negative===0)return-1;if(this.negative===0&&num.negative!==0)return 1;var res=this.ucmp(num);if(this.negative!==0)return-res|0;return res},BN.prototype.ucmp=function(num){if(this.length>num.length)return 1;if(this.length<num.length)return-1;var res=0;for(var i=this.length-1;i>=0;i--){var a=this.words[i]|0,b=num.words[i]|0;if(a===b)continue;if(a<b)res=-1;else if(a>b)res=1;break}return res},BN.prototype.gtn=function(num){return this.cmpn(num)===1},BN.prototype.gt=function(num){return this.cmp(num)===1},BN.prototype.gten=function(num){return this.cmpn(num)>=0},BN.prototype.gte=function(num){return this.cmp(num)>=0},BN.prototype.ltn=function(num){return this.cmpn(num)===-1},BN.prototype.lt=function(num){return this.cmp(num)===-1},BN.prototype.lten=function(num){return this.cmpn(num)<=0},BN.prototype.lte=function(num){return this.cmp(num)<=0},BN.prototype.eqn=function(num){return this.cmpn(num)===0},BN.prototype.eq=function(num){return this.cmp(num)===0},BN.red=function(num){return new Red(num)},BN.prototype.toRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),assert(this.negative===0,\"red works only with positives\"),ctx.convertTo(this)._forceRed(ctx)},BN.prototype.fromRed=function(){return assert(this.red,\"fromRed works only with numbers in reduction context\"),this.red.convertFrom(this)},BN.prototype._forceRed=function(ctx){return this.red=ctx,this},BN.prototype.forceRed=function(ctx){return assert(!this.red,\"Already a number in reduction context\"),this._forceRed(ctx)},BN.prototype.redAdd=function(num){return assert(this.red,\"redAdd works only with red numbers\"),this.red.add(this,num)},BN.prototype.redIAdd=function(num){return assert(this.red,\"redIAdd works only with red numbers\"),this.red.iadd(this,num)},BN.prototype.redSub=function(num){return assert(this.red,\"redSub works only with red numbers\"),this.red.sub(this,num)},BN.prototype.redISub=function(num){return assert(this.red,\"redISub works only with red numbers\"),this.red.isub(this,num)},BN.prototype.redShl=function(num){return assert(this.red,\"redShl works only with red numbers\"),this.red.shl(this,num)},BN.prototype.redMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.mul(this,num)},BN.prototype.redIMul=function(num){return assert(this.red,\"redMul works only with red numbers\"),this.red._verify2(this,num),this.red.imul(this,num)},BN.prototype.redSqr=function(){return assert(this.red,\"redSqr works only with red numbers\"),this.red._verify1(this),this.red.sqr(this)},BN.prototype.redISqr=function(){return assert(this.red,\"redISqr works only with red numbers\"),this.red._verify1(this),this.red.isqr(this)},BN.prototype.redSqrt=function(){return assert(this.red,\"redSqrt works only with red numbers\"),this.red._verify1(this),this.red.sqrt(this)},BN.prototype.redInvm=function(){return assert(this.red,\"redInvm works only with red numbers\"),this.red._verify1(this),this.red.invm(this)},BN.prototype.redNeg=function(){return assert(this.red,\"redNeg works only with red numbers\"),this.red._verify1(this),this.red.neg(this)},BN.prototype.redPow=function(num){return assert(this.red&&!num.red,\"redPow(normalNum)\"),this.red._verify1(this),this.red.pow(this,num)};var primes={k256:null,p224:null,p192:null,p25519:null};function MPrime(name,p){this.name=name,this.p=new BN(p,16),this.n=this.p.bitLength(),this.k=new BN(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}MPrime.prototype._tmp=function(){var tmp=new BN(null);return tmp.words=Array(Math.ceil(this.n/13)),tmp},MPrime.prototype.ireduce=function(num){var r=num,rlen;do this.split(r,this.tmp),r=this.imulK(r),r=r.iadd(this.tmp),rlen=r.bitLength();while(rlen>this.n);var cmp=rlen<this.n?-1:r.ucmp(this.p);if(cmp===0)r.words[0]=0,r.length=1;else if(cmp>0)r.isub(this.p);else if(r.strip!==void 0)r.strip();else r._strip();return r},MPrime.prototype.split=function(input,out){input.iushrn(this.n,0,out)},MPrime.prototype.imulK=function(num){return num.imul(this.k)};function K256(){MPrime.call(this,\"k256\",\"ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f\")}inherits(K256,MPrime),K256.prototype.split=function(input,output){var mask=4194303,outLen=Math.min(input.length,9);for(var i=0;i<outLen;i++)output.words[i]=input.words[i];if(output.length=outLen,input.length<=9){input.words[0]=0,input.length=1;return}var prev=input.words[9];output.words[output.length++]=prev&mask;for(i=10;i<input.length;i++){var next=input.words[i]|0;input.words[i-10]=(next&mask)<<4|prev>>>22,prev=next}if(prev>>>=22,input.words[i-10]=prev,prev===0&&input.length>10)input.length-=10;else input.length-=9},K256.prototype.imulK=function(num){num.words[num.length]=0,num.words[num.length+1]=0,num.length+=2;var lo=0;for(var i=0;i<num.length;i++){var w=num.words[i]|0;lo+=w*977,num.words[i]=lo&67108863,lo=w*64+(lo/67108864|0)}if(num.words[num.length-1]===0){if(num.length--,num.words[num.length-1]===0)num.length--}return num};function P224(){MPrime.call(this,\"p224\",\"ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001\")}inherits(P224,MPrime);function P192(){MPrime.call(this,\"p192\",\"ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff\")}inherits(P192,MPrime);function P25519(){MPrime.call(this,\"25519\",\"7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed\")}inherits(P25519,MPrime),P25519.prototype.imulK=function(num){var carry=0;for(var i=0;i<num.length;i++){var hi=(num.words[i]|0)*19+carry,lo=hi&67108863;hi>>>=26,num.words[i]=lo,carry=hi}if(carry!==0)num.words[num.length++]=carry;return num},BN._prime=function(name){if(primes[name])return primes[name];var prime;if(name===\"k256\")prime=new K256;else if(name===\"p224\")prime=new P224;else if(name===\"p192\")prime=new P192;else if(name===\"p25519\")prime=new P25519;else throw Error(\"Unknown prime \"+name);return primes[name]=prime,prime};function Red(m){if(typeof m===\"string\"){var prime=BN._prime(m);this.m=prime.p,this.prime=prime}else assert(m.gtn(1),\"modulus must be greater than 1\"),this.m=m,this.prime=null}Red.prototype._verify1=function(a){assert(a.negative===0,\"red works only with positives\"),assert(a.red,\"red works only with red numbers\")},Red.prototype._verify2=function(a,b){assert((a.negative|b.negative)===0,\"red works only with positives\"),assert(a.red&&a.red===b.red,\"red works only with red numbers\")},Red.prototype.imod=function(a){if(this.prime)return this.prime.ireduce(a)._forceRed(this);return move(a,a.umod(this.m)._forceRed(this)),a},Red.prototype.neg=function(a){if(a.isZero())return a.clone();return this.m.sub(a)._forceRed(this)},Red.prototype.add=function(a,b){this._verify2(a,b);var res=a.add(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res._forceRed(this)},Red.prototype.iadd=function(a,b){this._verify2(a,b);var res=a.iadd(b);if(res.cmp(this.m)>=0)res.isub(this.m);return res},Red.prototype.sub=function(a,b){this._verify2(a,b);var res=a.sub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res._forceRed(this)},Red.prototype.isub=function(a,b){this._verify2(a,b);var res=a.isub(b);if(res.cmpn(0)<0)res.iadd(this.m);return res},Red.prototype.shl=function(a,num){return this._verify1(a),this.imod(a.ushln(num))},Red.prototype.imul=function(a,b){return this._verify2(a,b),this.imod(a.imul(b))},Red.prototype.mul=function(a,b){return this._verify2(a,b),this.imod(a.mul(b))},Red.prototype.isqr=function(a){return this.imul(a,a.clone())},Red.prototype.sqr=function(a){return this.mul(a,a)},Red.prototype.sqrt=function(a){if(a.isZero())return a.clone();var mod3=this.m.andln(3);if(assert(mod3%2===1),mod3===3){var pow=this.m.add(new BN(1)).iushrn(2);return this.pow(a,pow)}var q=this.m.subn(1),s=0;while(!q.isZero()&&q.andln(1)===0)s++,q.iushrn(1);assert(!q.isZero());var one=new BN(1).toRed(this),nOne=one.redNeg(),lpow=this.m.subn(1).iushrn(1),z=this.m.bitLength();z=new BN(2*z*z).toRed(this);while(this.pow(z,lpow).cmp(nOne)!==0)z.redIAdd(nOne);var c=this.pow(z,q),r=this.pow(a,q.addn(1).iushrn(1)),t=this.pow(a,q),m=s;while(t.cmp(one)!==0){var tmp=t;for(var i=0;tmp.cmp(one)!==0;i++)tmp=tmp.redSqr();assert(i<m);var b=this.pow(c,new BN(1).iushln(m-i-1));r=r.redMul(b),c=b.redSqr(),t=t.redMul(c),m=i}return r},Red.prototype.invm=function(a){var inv=a._invmp(this.m);if(inv.negative!==0)return inv.negative=0,this.imod(inv).redNeg();else return this.imod(inv)},Red.prototype.pow=function(a,num){if(num.isZero())return new BN(1).toRed(this);if(num.cmpn(1)===0)return a.clone();var windowSize=4,wnd=Array(1<<windowSize);wnd[0]=new BN(1).toRed(this),wnd[1]=a;for(var i=2;i<wnd.length;i++)wnd[i]=this.mul(wnd[i-1],a);var res=wnd[0],current=0,currentLen=0,start=num.bitLength()%26;if(start===0)start=26;for(i=num.length-1;i>=0;i--){var word=num.words[i];for(var j=start-1;j>=0;j--){var bit=word>>j&1;if(res!==wnd[0])res=this.sqr(res);if(bit===0&&current===0){currentLen=0;continue}if(current<<=1,current|=bit,currentLen++,currentLen!==windowSize&&(i!==0||j!==0))continue;res=this.mul(res,wnd[current]),currentLen=0,current=0}start=26}return res},Red.prototype.convertTo=function(num){var r=num.umod(this.m);return r===num?r.clone():r},Red.prototype.convertFrom=function(num){var res=num.clone();return res.red=null,res},BN.mont=function(num){return new Mont(num)};function Mont(m){if(Red.call(this,m),this.shift=this.m.bitLength(),this.shift%26!==0)this.shift+=26-this.shift%26;this.r=new BN(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}inherits(Mont,Red),Mont.prototype.convertTo=function(num){return this.imod(num.ushln(this.shift))},Mont.prototype.convertFrom=function(num){var r=this.imod(num.mul(this.rinv));return r.red=null,r},Mont.prototype.imul=function(a,b){if(a.isZero()||b.isZero())return a.words[0]=0,a.length=1,a;var t=a.imul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.mul=function(a,b){if(a.isZero()||b.isZero())return new BN(0)._forceRed(this);var t=a.mul(b),c=t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),u=t.isub(c).iushrn(this.shift),res=u;if(u.cmp(this.m)>=0)res=u.isub(this.m);else if(u.cmpn(0)<0)res=u.iadd(this.m);return res._forceRed(this)},Mont.prototype.invm=function(a){var res=this.imod(a._invmp(this.m).mul(this.r2));return res._forceRed(this)}})(typeof module>\"u\"||module,exports)});var require_browserify_rsa=__commonJS((exports,module)=>{var BN=require_bn5(),randomBytes=require_randombytes(),Buffer2=require_safe_buffer().Buffer;function getr(priv){var len=priv.modulus.byteLength(),r;do r=new BN(randomBytes(len));while(r.cmp(priv.modulus)>=0||!r.umod(priv.prime1)||!r.umod(priv.prime2));return r}function blind(priv){var r=getr(priv),blinder=r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed();return{blinder,unblinder:r.invm(priv.modulus)}}function crt(msg,priv){var blinds=blind(priv),len=priv.modulus.byteLength(),blinded=new BN(msg).mul(blinds.blinder).umod(priv.modulus),c1=blinded.toRed(BN.mont(priv.prime1)),c2=blinded.toRed(BN.mont(priv.prime2)),qinv=priv.coefficient,p=priv.prime1,q=priv.prime2,m1=c1.redPow(priv.exponent1).fromRed(),m2=c2.redPow(priv.exponent2).fromRed(),h=m1.isub(m2).imul(qinv).umod(p).imul(q);return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer2,\"be\",len)}crt.getr=getr;module.exports=crt});var require_publicEncrypt=__commonJS((exports,module)=>{var parseKeys=require_parse_asn1(),randomBytes=require_randombytes(),createHash=require_create_hash(),mgf=require_mgf(),xor=require_xor(),BN=require_bn4(),withPublic=require_withPublic(),crt=require_browserify_rsa(),Buffer2=require_safe_buffer().Buffer;module.exports=function(publicKey,msg,reverse){var padding;if(publicKey.padding)padding=publicKey.padding;else if(reverse)padding=1;else padding=4;var key=parseKeys(publicKey),paddedMsg;if(padding===4)paddedMsg=oaep(key,msg);else if(padding===1)paddedMsg=pkcs1(key,msg,reverse);else if(padding===3){if(paddedMsg=new BN(msg),paddedMsg.cmp(key.modulus)>=0)throw Error(\"data too long for modulus\")}else throw Error(\"unknown padding\");if(reverse)return crt(paddedMsg,key);else return withPublic(paddedMsg,key)};function oaep(key,msg){var k=key.modulus.byteLength(),mLen=msg.length,iHash=createHash(\"sha1\").update(Buffer2.alloc(0)).digest(),hLen=iHash.length,hLen2=2*hLen;if(mLen>k-hLen2-2)throw Error(\"message too long\");var ps=Buffer2.alloc(k-mLen-hLen2-2),dblen=k-hLen-1,seed=randomBytes(hLen),maskedDb=xor(Buffer2.concat([iHash,ps,Buffer2.alloc(1,1),msg],dblen),mgf(seed,dblen)),maskedSeed=xor(seed,mgf(maskedDb,hLen));return new BN(Buffer2.concat([Buffer2.alloc(1),maskedSeed,maskedDb],k))}function pkcs1(key,msg,reverse){var mLen=msg.length,k=key.modulus.byteLength();if(mLen>k-11)throw Error(\"message too long\");var ps;if(reverse)ps=Buffer2.alloc(k-mLen-3,255);else ps=nonZero(k-mLen-3);return new BN(Buffer2.concat([Buffer2.from([0,reverse?1:2]),ps,Buffer2.alloc(1),msg],k))}function nonZero(len){var out=Buffer2.allocUnsafe(len),i=0,cache=randomBytes(len*2),cur=0,num;while(i<len){if(cur===cache.length)cache=randomBytes(len*2),cur=0;if(num=cache[cur++],num)out[i++]=num}return out}});var require_privateDecrypt=__commonJS((exports,module)=>{var parseKeys=require_parse_asn1(),mgf=require_mgf(),xor=require_xor(),BN=require_bn4(),crt=require_browserify_rsa(),createHash=require_create_hash(),withPublic=require_withPublic(),Buffer2=require_safe_buffer().Buffer;module.exports=function(privateKey,enc,reverse){var padding;if(privateKey.padding)padding=privateKey.padding;else if(reverse)padding=1;else padding=4;var key=parseKeys(privateKey),k=key.modulus.byteLength();if(enc.length>k||new BN(enc).cmp(key.modulus)>=0)throw Error(\"decryption error\");var msg;if(reverse)msg=withPublic(new BN(enc),key);else msg=crt(enc,key);var zBuffer=Buffer2.alloc(k-msg.length);if(msg=Buffer2.concat([zBuffer,msg],k),padding===4)return oaep(key,msg);else if(padding===1)return pkcs1(key,msg,reverse);else if(padding===3)return msg;else throw Error(\"unknown padding\")};function oaep(key,msg){var k=key.modulus.byteLength(),iHash=createHash(\"sha1\").update(Buffer2.alloc(0)).digest(),hLen=iHash.length;if(msg[0]!==0)throw Error(\"decryption error\");var maskedSeed=msg.slice(1,hLen+1),maskedDb=msg.slice(hLen+1),seed=xor(maskedSeed,mgf(maskedDb,hLen)),db=xor(maskedDb,mgf(seed,k-hLen-1));if(compare(iHash,db.slice(0,hLen)))throw Error(\"decryption error\");var i=hLen;while(db[i]===0)i++;if(db[i++]!==1)throw Error(\"decryption error\");return db.slice(i)}function pkcs1(key,msg,reverse){var p1=msg.slice(0,2),i=2,status=0;while(msg[i++]!==0)if(i>=msg.length){status++;break}var ps=msg.slice(2,i-1);if(p1.toString(\"hex\")!==\"0002\"&&!reverse||p1.toString(\"hex\")!==\"0001\"&&reverse)status++;if(ps.length<8)status++;if(status)throw Error(\"decryption error\");return msg.slice(i)}function compare(a,b){a=Buffer2.from(a),b=Buffer2.from(b);var dif=0,len=a.length;if(a.length!==b.length)dif++,len=Math.min(a.length,b.length);var i=-1;while(++i<len)dif+=a[i]^b[i];return dif}});var require_browser2=__commonJS((exports)=>{exports.publicEncrypt=require_publicEncrypt();exports.privateDecrypt=require_privateDecrypt();exports.privateEncrypt=function(key,buf){return exports.publicEncrypt(key,buf,!0)};exports.publicDecrypt=function(key,buf){return exports.privateDecrypt(key,buf,!0)}});var require_public_encrypt=__commonJS((exports)=>{var crypto2=require(\"crypto\");if(typeof crypto2.publicEncrypt!==\"function\")crypto2=require_browser2();exports.publicEncrypt=crypto2.publicEncrypt;exports.privateDecrypt=crypto2.privateDecrypt;if(typeof crypto2.privateEncrypt!==\"function\")exports.privateEncrypt=require_browser2().privateEncrypt;else exports.privateEncrypt=crypto2.privateEncrypt;if(typeof crypto2.publicDecrypt!==\"function\")exports.publicDecrypt=require_browser2().publicDecrypt;else exports.publicDecrypt=crypto2.publicDecrypt});var require_browser3=__commonJS((exports)=>{var safeBuffer=require_safe_buffer(),randombytes=require_randombytes(),Buffer2=safeBuffer.Buffer,kBufferMaxLength=safeBuffer.kMaxLength,crypto2=globalThis.crypto||globalThis.msCrypto,kMaxUint32=Math.pow(2,32)-1;function assertOffset(offset,length){if(typeof offset!==\"number\"||offset!==offset)throw TypeError(\"offset must be a number\");if(offset>kMaxUint32||offset<0)throw TypeError(\"offset must be a uint32\");if(offset>kBufferMaxLength||offset>length)throw RangeError(\"offset out of range\")}function assertSize(size,offset,length){if(typeof size!==\"number\"||size!==size)throw TypeError(\"size must be a number\");if(size>kMaxUint32||size<0)throw TypeError(\"size must be a uint32\");if(size+offset>length||size>kBufferMaxLength)throw RangeError(\"buffer too small\")}crypto2&&crypto2.getRandomValues,exports.randomFill=randomFill,exports.randomFillSync=randomFillSync;function randomFill(buf,offset,size,cb){if(!Buffer2.isBuffer(buf)&&!(buf instanceof globalThis.Uint8Array))throw TypeError('\"buf\" argument must be a Buffer or Uint8Array');if(typeof offset===\"function\")cb=offset,offset=0,size=buf.length;else if(typeof size===\"function\")cb=size,size=buf.length-offset;else if(typeof cb!==\"function\")throw TypeError('\"cb\" argument must be a function');return assertOffset(offset,buf.length),assertSize(size,offset,buf.length),actualFill(buf,offset,size,cb)}function actualFill(buf,offset,size,cb){if(!1)var ourBuf,uint;if(cb){randombytes(size,function(err,bytes2){if(err)return cb(err);bytes2.copy(buf,offset),cb(null,buf)});return}var bytes=randombytes(size);return bytes.copy(buf,offset),buf}function randomFillSync(buf,offset,size){if(typeof offset>\"u\")offset=0;if(!Buffer2.isBuffer(buf)&&!(buf instanceof globalThis.Uint8Array))throw TypeError('\"buf\" argument must be a Buffer or Uint8Array');if(assertOffset(offset,buf.length),size===void 0)size=buf.length-offset;return assertSize(size,offset,buf.length),actualFill(buf,offset,size)}});var require_randomfill=__commonJS((exports,module)=>{var crypto2=require(\"crypto\");if(typeof crypto2.randomFill===\"function\"&&typeof crypto2.randomFillSync===\"function\")exports.randomFill=crypto2.randomFill,exports.randomFillSync=crypto2.randomFillSync;else module.exports=require_browser3()});var require_crypto_browserify=__commonJS((exports)=>{exports.randomBytes=exports.rng=exports.pseudoRandomBytes=exports.prng=require_randombytes();exports.createHash=exports.Hash=require_create_hash();exports.createHmac=exports.Hmac=require_create_hmac();var algos=require_algorithms(),algoKeys=Object.keys(algos),hashes=[\"sha1\",\"sha224\",\"sha256\",\"sha384\",\"sha512\",\"md5\",\"rmd160\"].concat(algoKeys);exports.getHashes=function(){return hashes};var p=require_pbkdf2();exports.pbkdf2=p.pbkdf2;exports.pbkdf2Sync=p.pbkdf2Sync;var aes=require_browserify_cipher();exports.Cipher=aes.Cipher;exports.createCipher=aes.createCipher;exports.Cipheriv=aes.Cipheriv;exports.createCipheriv=aes.createCipheriv;exports.Decipher=aes.Decipher;exports.createDecipher=aes.createDecipher;exports.Decipheriv=aes.Decipheriv;exports.createDecipheriv=aes.createDecipheriv;exports.getCiphers=aes.getCiphers;exports.listCiphers=aes.listCiphers;var dh=require_diffie_hellman();exports.DiffieHellmanGroup=dh.DiffieHellmanGroup;exports.createDiffieHellmanGroup=dh.createDiffieHellmanGroup;exports.getDiffieHellman=dh.getDiffieHellman;exports.createDiffieHellman=dh.createDiffieHellman;exports.DiffieHellman=dh.DiffieHellman;var sign=require_browserify_sign();exports.createSign=sign.createSign;exports.Sign=sign.Sign;exports.createVerify=sign.createVerify;exports.Verify=sign.Verify;exports.createECDH=require_create_ecdh();var publicEncrypt=require_public_encrypt();exports.publicEncrypt=publicEncrypt.publicEncrypt;exports.privateEncrypt=publicEncrypt.privateEncrypt;exports.publicDecrypt=publicEncrypt.publicDecrypt;exports.privateDecrypt=publicEncrypt.privateDecrypt;var rf=require_randomfill();exports.randomFill=rf.randomFill;exports.randomFillSync=rf.randomFillSync;exports.createCredentials=function(){throw Error(`sorry, createCredentials is not implemented yet\nwe accept pull requests\nhttps://github.com/browserify/crypto-browserify`)};exports.constants={DH_CHECK_P_NOT_SAFE_PRIME:2,DH_CHECK_P_NOT_PRIME:1,DH_UNABLE_TO_CHECK_GENERATOR:4,DH_NOT_SUITABLE_GENERATOR:8,NPN_ENABLED:1,ALPN_ENABLED:1,RSA_PKCS1_PADDING:1,RSA_SSLV23_PADDING:2,RSA_NO_PADDING:3,RSA_PKCS1_OAEP_PADDING:4,RSA_X931_PADDING:5,RSA_PKCS1_PSS_PADDING:6,POINT_CONVERSION_COMPRESSED:2,POINT_CONVERSION_UNCOMPRESSED:4,POINT_CONVERSION_HYBRID:6}});var cryptoBrowserify=__toESM(require_crypto_browserify(),1),prng2=cryptoBrowserify.prng,pseudoRandomBytes2=cryptoBrowserify.pseudoRandomBytes,rng2=cryptoBrowserify.rng,randomBytes2=cryptoBrowserify.randomBytes,Hash2=cryptoBrowserify.Hash,createHash2=cryptoBrowserify.createHash,Hmac2=cryptoBrowserify.Hmac,createHmac2=cryptoBrowserify.createHmac,getHashes2=cryptoBrowserify.getHashes,pbkdf22=cryptoBrowserify.pbkdf2,pbkdf2Sync2=cryptoBrowserify.pbkdf2Sync,Cipher2=cryptoBrowserify.Cipher,createCipher2=cryptoBrowserify.createCipher,Cipheriv2=cryptoBrowserify.Cipheriv,createCipheriv2=cryptoBrowserify.createCipheriv,Decipher2=cryptoBrowserify.Decipher,createDecipher2=cryptoBrowserify.createDecipher,Decipheriv2=cryptoBrowserify.Decipheriv,createDecipheriv2=cryptoBrowserify.createDecipheriv,getCiphers2=cryptoBrowserify.getCiphers,listCiphers2=cryptoBrowserify.listCiphers,DiffieHellmanGroup2=cryptoBrowserify.DiffieHellmanGroup,createDiffieHellmanGroup2=cryptoBrowserify.createDiffieHellmanGroup,getDiffieHellman2=cryptoBrowserify.getDiffieHellman,createDiffieHellman2=cryptoBrowserify.createDiffieHellman,DiffieHellman2=cryptoBrowserify.DiffieHellman,createSign2=cryptoBrowserify.createSign,Sign2=cryptoBrowserify.Sign,createVerify2=cryptoBrowserify.createVerify,Verify2=cryptoBrowserify.Verify,createECDH2=cryptoBrowserify.createECDH,publicEncrypt2=cryptoBrowserify.publicEncrypt,privateEncrypt2=cryptoBrowserify.privateEncrypt,publicDecrypt2=cryptoBrowserify.publicDecrypt,privateDecrypt2=cryptoBrowserify.privateDecrypt,randomFill2=cryptoBrowserify.randomFill,randomFillSync2=cryptoBrowserify.randomFillSync,createCredentials2=cryptoBrowserify.createCredentials,constants2=cryptoBrowserify.constants,DEFAULT_ENCODING=\"buffer\",getRandomValues=(array)=>{return crypto.getRandomValues(array)},randomUUID=()=>{return crypto.randomUUID()},hardcoded_curves=[\"p192\",\"p224\",\"p256\",\"p384\",\"p521\",\"curve25519\",\"ed25519\",\"secp256k1\",\"secp224r1\",\"prime256v1\",\"prime192v1\",\"ed25519\",\"secp384r1\",\"secp521r1\"];function getCurves(){return hardcoded_curves}var webcrypto=crypto,crypto_default=crypto;export{webcrypto,rng2 as rng,randomUUID,randomFillSync2 as randomFillSync,randomFill2 as randomFill,randomBytes2 as randomBytes,publicEncrypt2 as publicEncrypt,publicDecrypt2 as publicDecrypt,pseudoRandomBytes2 as pseudoRandomBytes,prng2 as prng,privateEncrypt2 as privateEncrypt,privateDecrypt2 as privateDecrypt,pbkdf2Sync2 as pbkdf2Sync,pbkdf22 as pbkdf2,listCiphers2 as listCiphers,getRandomValues,getHashes2 as getHashes,getDiffieHellman2 as getDiffieHellman,getCurves,getCiphers2 as getCiphers,crypto_default as default,createVerify2 as createVerify,createSign2 as createSign,createHmac2 as createHmac,createHash2 as createHash,createECDH2 as createECDH,createDiffieHellmanGroup2 as createDiffieHellmanGroup,createDiffieHellman2 as createDiffieHellman,createDecipheriv2 as createDecipheriv,createDecipher2 as createDecipher,createCredentials2 as createCredentials,createCipheriv2 as createCipheriv,createCipher2 as createCipher,constants2 as constants,Verify2 as Verify,Sign2 as Sign,Hmac2 as Hmac,Hash2 as Hash,DiffieHellmanGroup2 as DiffieHellmanGroup,DiffieHellman2 as DiffieHellman,Decipheriv2 as Decipheriv,Decipher2 as Decipher,DEFAULT_ENCODING,Cipheriv2 as Cipheriv,Cipher2 as Cipher};",
17
- "import { createHash } from 'crypto';\nimport { is, SQL } from 'drizzle-orm';\nimport { PgTable, getTableConfig, PgDialect, type PgColumn } from 'drizzle-orm/pg-core';\nimport type { SchemaSnapshot } from '../types';\n\n/**\n * Utility functions from Drizzle's code\n */\nfunction escapeSingleQuotes(str: string): string {\n return str.replace(/'/g, \"''\");\n}\n\nfunction isPgArrayType(sqlType: string): boolean {\n return sqlType.match(/.*\\[\\d*\\].*|.*\\[\\].*/g) !== null;\n}\n\nfunction buildArrayString(array: any[], sqlType: string): string {\n sqlType = sqlType.split('[')[0];\n const values = array\n .map((value) => {\n if (typeof value === 'number' || typeof value === 'bigint') {\n return value.toString();\n } else if (typeof value === 'boolean') {\n return value ? 'true' : 'false';\n } else if (Array.isArray(value)) {\n return buildArrayString(value, sqlType);\n } else if (value instanceof Date) {\n if (sqlType === 'date') {\n return `\"${value.toISOString().split('T')[0]}\"`;\n } else if (sqlType === 'timestamp') {\n return `\"${value.toISOString().replace('T', ' ').slice(0, 23)}\"`;\n } else {\n return `\"${value.toISOString()}\"`;\n }\n } else if (typeof value === 'object') {\n return `\"${JSON.stringify(value).replaceAll('\"', '\\\\\"')}\"`;\n }\n\n return `\"${value}\"`;\n })\n .join(',');\n\n return `{${values}}`;\n}\n\nconst sqlToStr = (sql: SQL, casing: any) => {\n return sql.toQuery({\n escapeName: () => {\n throw new Error(\"we don't support params for `sql` default values\");\n },\n escapeParam: () => {\n throw new Error(\"we don't support params for `sql` default values\");\n },\n escapeString: () => {\n throw new Error(\"we don't support params for `sql` default values\");\n },\n casing,\n }).sql;\n};\n\n/**\n * Extract Drizzle tables from a schema object\n */\nfunction extractTablesFromSchema(schema: any): PgTable[] {\n const tables: PgTable[] = [];\n\n // Iterate through all exports in the schema\n const exports = Object.values(schema);\n exports.forEach((t: any) => {\n // Check if it's a PgTable using Drizzle's is() function\n if (is(t, PgTable)) {\n tables.push(t);\n }\n });\n\n return tables;\n}\n\n/**\n * Generate a snapshot from a Drizzle schema\n * This is a port of Drizzle's pgSerializer.generatePgSnapshot\n */\nexport async function generateSnapshot(schema: any): Promise<SchemaSnapshot> {\n const dialect = new PgDialect({ casing: undefined });\n const tables: any = {};\n const schemas: any = {};\n const enums: any = {};\n\n // Extract tables from schema\n const pgTables = extractTablesFromSchema(schema);\n\n // Process each table\n for (const table of pgTables) {\n const config = getTableConfig(table);\n const {\n name: tableName,\n columns,\n indexes,\n foreignKeys,\n schema: tableSchema,\n primaryKeys,\n uniqueConstraints,\n checks,\n } = config;\n\n const columnsObject: any = {};\n const indexesObject: any = {};\n const foreignKeysObject: any = {};\n const primaryKeysObject: any = {};\n const uniqueConstraintObject: any = {};\n const checksObject: any = {};\n\n // Process columns - EXACT copy of Drizzle's logic\n columns.forEach((column: PgColumn) => {\n const name = column.name;\n const notNull = column.notNull;\n const primaryKey = column.primary;\n const sqlType = column.getSQLType();\n const sqlTypeLowered = sqlType.toLowerCase();\n\n const columnToSet: any = {\n name,\n type: sqlType,\n primaryKey,\n notNull,\n };\n\n // Handle defaults - EXACT copy from Drizzle's pgSerializer.ts lines 247-273\n if (column.default !== undefined) {\n if (is(column.default, SQL)) {\n columnToSet.default = sqlToStr(column.default, undefined);\n } else {\n if (typeof column.default === 'string') {\n columnToSet.default = `'${escapeSingleQuotes(column.default)}'`;\n } else {\n if (sqlTypeLowered === 'jsonb' || sqlTypeLowered === 'json') {\n columnToSet.default = `'${JSON.stringify(column.default)}'::${sqlTypeLowered}`;\n } else if (column.default instanceof Date) {\n if (sqlTypeLowered === 'date') {\n columnToSet.default = `'${column.default.toISOString().split('T')[0]}'`;\n } else if (sqlTypeLowered === 'timestamp') {\n columnToSet.default = `'${column.default.toISOString().replace('T', ' ').slice(0, 23)}'`;\n } else {\n columnToSet.default = `'${column.default.toISOString()}'`;\n }\n } else if (isPgArrayType(sqlTypeLowered) && Array.isArray(column.default)) {\n columnToSet.default = `'${buildArrayString(column.default, sqlTypeLowered)}'`;\n } else {\n // Should do for all types\n // columnToSet.default = `'${column.default}'::${sqlTypeLowered}`;\n columnToSet.default = column.default;\n }\n }\n }\n }\n\n // Handle column-level unique constraints\n // IMPORTANT: Check isUnique, not just uniqueName presence!\n // Drizzle sets uniqueName for all columns but only unique ones should have constraints\n if ((column as any).isUnique && (column as any).config?.uniqueName) {\n uniqueConstraintObject[(column as any).config.uniqueName] = {\n name: (column as any).config.uniqueName,\n columns: [name],\n nullsNotDistinct: (column as any).config?.uniqueType === 'not distinct',\n };\n }\n\n columnsObject[name] = columnToSet;\n });\n\n // Process primary keys\n primaryKeys.forEach((pk: any) => {\n const columnNames = pk.columns.map((c: any) => c.name);\n const name = pk.getName();\n\n primaryKeysObject[name] = {\n name,\n columns: columnNames,\n };\n });\n\n // Process unique constraints\n uniqueConstraints?.forEach((unq: any) => {\n const columnNames = unq.columns.map((c: any) => c.name);\n const name = unq.name || `${tableName}_${columnNames.join('_')}_unique`;\n\n uniqueConstraintObject[name] = {\n name,\n columns: columnNames,\n nullsNotDistinct: unq.nullsNotDistinct,\n };\n });\n\n // Process foreign keys - includes both explicit foreignKeys and inline references\n // Drizzle's getTableConfig automatically collects inline .references() into foreignKeys\n foreignKeys.forEach((fk: any) => {\n const reference = fk.reference();\n const columnsFrom = reference.columns.map((it: any) => it.name);\n const columnsTo = reference.foreignColumns.map((it: any) => it.name);\n const tableTo = getTableConfig(reference.foreignTable).name;\n const schemaTo = getTableConfig(reference.foreignTable).schema || 'public';\n\n const name = fk.getName();\n\n foreignKeysObject[name] = {\n name,\n tableFrom: tableName,\n schemaFrom: tableSchema, // Add source table schema\n tableTo,\n schemaTo,\n columnsFrom,\n columnsTo,\n onDelete: fk.onDelete || 'no action',\n onUpdate: fk.onUpdate || 'no action',\n };\n });\n\n // Process indexes\n indexes.forEach((idx: any) => {\n const columns = idx.config.columns;\n const indexColumns = columns.map((col: any) => {\n if (is(col, SQL)) {\n return {\n expression: dialect.sqlToQuery(col).sql,\n isExpression: true,\n };\n } else {\n const indexCol: any = {\n expression: col.name,\n isExpression: false,\n asc: col.indexConfig?.order === 'asc',\n };\n // Only add nulls if explicitly specified in the config\n if (col.indexConfig?.nulls) {\n indexCol.nulls = col.indexConfig.nulls;\n }\n return indexCol;\n }\n });\n\n const name =\n idx.config.name ||\n `${tableName}_${indexColumns.map((c: any) => c.expression).join('_')}_index`;\n\n indexesObject[name] = {\n name,\n columns: indexColumns,\n isUnique: idx.config.unique || false,\n method: idx.config.method || 'btree',\n };\n });\n\n // Process check constraints\n if (checks) {\n checks.forEach((check: any) => {\n const checkName = check.name;\n checksObject[checkName] = {\n name: checkName,\n value: dialect.sqlToQuery(check.value).sql,\n };\n });\n }\n\n // Build the table object\n tables[`${tableSchema || 'public'}.${tableName}`] = {\n name: tableName,\n schema: tableSchema || 'public',\n columns: columnsObject,\n indexes: indexesObject,\n foreignKeys: foreignKeysObject,\n compositePrimaryKeys: primaryKeysObject,\n uniqueConstraints: uniqueConstraintObject,\n checkConstraints: checksObject,\n };\n\n // Track schemas\n if (tableSchema && tableSchema !== 'public') {\n schemas[tableSchema] = tableSchema;\n }\n }\n\n // Create snapshot in Drizzle's format\n const snapshot: SchemaSnapshot = {\n version: '7',\n dialect: 'postgresql',\n tables,\n schemas,\n enums,\n _meta: {\n schemas: {},\n tables: {},\n columns: {},\n },\n };\n\n return snapshot;\n}\n\n/**\n * Calculate hash of a snapshot for change detection\n */\nexport function hashSnapshot(snapshot: SchemaSnapshot): string {\n const content = JSON.stringify(snapshot);\n return createHash('sha256').update(content).digest('hex');\n}\n\n/**\n * Create an empty snapshot for initial migration\n */\nexport function createEmptySnapshot(): SchemaSnapshot {\n return {\n version: '7',\n dialect: 'postgresql',\n tables: {},\n schemas: {},\n enums: {},\n _meta: {\n schemas: {},\n tables: {},\n columns: {},\n },\n };\n}\n\n/**\n * Compare two snapshots and detect if there are changes\n */\nexport function hasChanges(\n previousSnapshot: SchemaSnapshot | null,\n currentSnapshot: SchemaSnapshot\n): boolean {\n // If no previous snapshot, there are definitely changes\n if (!previousSnapshot) {\n return Object.keys(currentSnapshot.tables).length > 0;\n }\n\n // Simple comparison for now - in production, use deep comparison\n const prevHash = hashSnapshot(previousSnapshot);\n const currHash = hashSnapshot(currentSnapshot);\n\n return prevHash !== currHash;\n}\n",
18
- "import type { SchemaSnapshot } from '../types';\n\n/**\n * Normalize SQL types for comparison\n * Handles equivalent type variations between introspected DB and schema definitions\n */\nfunction normalizeType(type: string | undefined): string {\n if (!type) return '';\n\n const normalized = type.toLowerCase().trim();\n\n // Handle timestamp variations\n if (normalized === 'timestamp without time zone' || normalized === 'timestamp with time zone') {\n return 'timestamp';\n }\n\n // Handle serial vs integer with identity\n // serial is essentially integer with auto-increment\n if (normalized === 'serial') {\n return 'integer';\n }\n if (normalized === 'bigserial') {\n return 'bigint';\n }\n if (normalized === 'smallserial') {\n return 'smallint';\n }\n\n // Handle numeric/decimal equivalence\n if (normalized.startsWith('numeric') || normalized.startsWith('decimal')) {\n // Extract precision and scale if present\n const match = normalized.match(/\\((\\d+)(?:,\\s*(\\d+))?\\)/);\n if (match) {\n return `numeric(${match[1]}${match[2] ? `,${match[2]}` : ''})`;\n }\n return 'numeric';\n }\n\n // Handle varchar/character varying\n if (normalized.startsWith('character varying')) {\n return normalized.replace('character varying', 'varchar');\n }\n\n // Handle text array variations\n if (normalized === 'text[]' || normalized === '_text') {\n return 'text[]';\n }\n\n return normalized;\n}\n\n/**\n * Helper function to compare two index definitions\n * Returns true if indexes are different and need to be recreated\n */\nfunction isIndexChanged(prevIndex: any, currIndex: any): boolean {\n // Compare basic properties\n if (prevIndex.isUnique !== currIndex.isUnique) return true;\n if (prevIndex.method !== currIndex.method) return true;\n if (prevIndex.where !== currIndex.where) return true;\n if (prevIndex.concurrently !== currIndex.concurrently) return true;\n\n // Compare columns array - must be same columns in same order\n const prevColumns = prevIndex.columns || [];\n const currColumns = currIndex.columns || [];\n\n if (prevColumns.length !== currColumns.length) return true;\n\n for (let i = 0; i < prevColumns.length; i++) {\n const prevCol = prevColumns[i];\n const currCol = currColumns[i];\n\n // Handle both string columns and expression columns\n if (typeof prevCol === 'string' && typeof currCol === 'string') {\n if (prevCol !== currCol) return true;\n } else if (typeof prevCol === 'object' && typeof currCol === 'object') {\n // Compare expression columns\n if (prevCol.expression !== currCol.expression) return true;\n if (prevCol.isExpression !== currCol.isExpression) return true;\n if (prevCol.asc !== currCol.asc) return true;\n if (prevCol.nulls !== currCol.nulls) return true;\n } else {\n // Type mismatch (one is string, other is object)\n return true;\n }\n }\n\n return false;\n}\n\nexport interface SchemaDiff {\n tables: {\n created: string[];\n deleted: string[];\n modified: Array<{\n name: string;\n changes: any;\n }>;\n };\n columns: {\n added: Array<{\n table: string;\n column: string;\n definition: any;\n }>;\n deleted: Array<{\n table: string;\n column: string;\n }>;\n modified: Array<{\n table: string;\n column: string;\n changes: any;\n }>;\n };\n indexes: {\n created: any[];\n deleted: any[];\n altered: Array<{\n // Indexes with same name but different definition\n old: any;\n new: any;\n }>;\n };\n foreignKeys: {\n created: any[];\n deleted: any[];\n altered: Array<{\n // FKs with modified CASCADE behavior\n old: any;\n new: any;\n }>;\n };\n uniqueConstraints: {\n created: any[];\n deleted: any[];\n };\n checkConstraints: {\n created: any[];\n deleted: any[];\n };\n}\n\n/**\n * Calculate the difference between two snapshots\n */\nexport async function calculateDiff(\n previousSnapshot: SchemaSnapshot | null,\n currentSnapshot: SchemaSnapshot\n): Promise<SchemaDiff> {\n const diff: SchemaDiff = {\n tables: {\n created: [],\n deleted: [],\n modified: [],\n },\n columns: {\n added: [],\n deleted: [],\n modified: [],\n },\n indexes: {\n created: [],\n deleted: [],\n altered: [],\n },\n foreignKeys: {\n created: [],\n deleted: [],\n altered: [],\n },\n uniqueConstraints: {\n created: [],\n deleted: [],\n },\n checkConstraints: {\n created: [],\n deleted: [],\n },\n };\n\n // If no previous snapshot, all tables are new\n if (!previousSnapshot) {\n diff.tables.created = Object.keys(currentSnapshot.tables);\n\n // Also track indexes and foreign keys from new tables\n for (const tableName in currentSnapshot.tables) {\n const table = currentSnapshot.tables[tableName];\n\n // Add indexes\n if (table.indexes) {\n for (const indexName in table.indexes) {\n diff.indexes.created.push({\n ...table.indexes[indexName],\n table: tableName,\n });\n }\n }\n\n // Add foreign keys\n if (table.foreignKeys) {\n for (const fkName in table.foreignKeys) {\n diff.foreignKeys.created.push(table.foreignKeys[fkName]);\n }\n }\n }\n\n return diff;\n }\n\n const prevTables = previousSnapshot.tables || {};\n const currTables = currentSnapshot.tables || {};\n\n // Find created tables\n for (const tableName in currTables) {\n if (!(tableName in prevTables)) {\n diff.tables.created.push(tableName);\n\n const table = currTables[tableName];\n\n // Add indexes for new table\n if (table.indexes) {\n for (const indexName in table.indexes) {\n diff.indexes.created.push({\n ...table.indexes[indexName],\n table: tableName,\n });\n }\n }\n\n // Add unique constraints for new table\n if (table.uniqueConstraints) {\n for (const uqName in table.uniqueConstraints) {\n diff.uniqueConstraints.created.push({\n ...table.uniqueConstraints[uqName],\n table: tableName,\n });\n }\n }\n\n // Add check constraints for new table\n if (table.checkConstraints) {\n for (const checkName in table.checkConstraints) {\n diff.checkConstraints.created.push({\n ...table.checkConstraints[checkName],\n table: tableName,\n });\n }\n }\n\n // Add foreign keys for new table\n if (table.foreignKeys) {\n for (const fkName in table.foreignKeys) {\n diff.foreignKeys.created.push(table.foreignKeys[fkName]);\n }\n }\n }\n }\n\n // Find deleted tables\n for (const tableName in prevTables) {\n if (!(tableName in currTables)) {\n diff.tables.deleted.push(tableName);\n }\n }\n\n // Find modified tables (check columns, indexes, foreign keys)\n for (const tableName in currTables) {\n if (tableName in prevTables) {\n const prevTable = prevTables[tableName];\n const currTable = currTables[tableName];\n\n // Early check: if the table schemas are identical, skip it entirely\n // This prevents false positives when other tables are modified\n const prevTableJson = JSON.stringify({\n columns: prevTable.columns || {},\n indexes: prevTable.indexes || {},\n foreignKeys: prevTable.foreignKeys || {},\n uniqueConstraints: prevTable.uniqueConstraints || {},\n checkConstraints: prevTable.checkConstraints || {},\n });\n\n const currTableJson = JSON.stringify({\n columns: currTable.columns || {},\n indexes: currTable.indexes || {},\n foreignKeys: currTable.foreignKeys || {},\n uniqueConstraints: currTable.uniqueConstraints || {},\n checkConstraints: currTable.checkConstraints || {},\n });\n\n // If tables are identical, skip all processing for this table\n if (prevTableJson === currTableJson) {\n continue;\n }\n\n // Compare columns\n const prevColumns = prevTable.columns || {};\n const currColumns = currTable.columns || {};\n\n // Find added columns\n for (const colName in currColumns) {\n if (!(colName in prevColumns)) {\n diff.columns.added.push({\n table: tableName,\n column: colName,\n definition: currColumns[colName],\n });\n }\n }\n\n // Find deleted columns\n for (const colName in prevColumns) {\n if (!(colName in currColumns)) {\n diff.columns.deleted.push({\n table: tableName,\n column: colName,\n });\n }\n }\n\n // Find modified columns\n for (const colName in currColumns) {\n if (colName in prevColumns) {\n const prevCol = prevColumns[colName];\n const currCol = currColumns[colName];\n\n // Check for changes in column properties\n // Use normalized type comparison\n const typeChanged = normalizeType(prevCol.type) !== normalizeType(currCol.type);\n const hasChanges =\n typeChanged ||\n prevCol.notNull !== currCol.notNull ||\n prevCol.default !== currCol.default ||\n prevCol.primaryKey !== currCol.primaryKey;\n\n if (hasChanges) {\n diff.columns.modified.push({\n table: tableName,\n column: colName,\n changes: {\n from: prevCol,\n to: currCol,\n },\n });\n }\n }\n }\n\n // Compare indexes\n const prevIndexes = prevTable.indexes || {};\n const currIndexes = currTable.indexes || {};\n\n // Find new, deleted, and altered indexes\n for (const indexName in currIndexes) {\n if (!(indexName in prevIndexes)) {\n // New index\n diff.indexes.created.push({\n ...currIndexes[indexName],\n table: tableName,\n });\n } else {\n // Check if index definition changed\n const prevIndex = prevIndexes[indexName];\n const currIndex = currIndexes[indexName];\n\n // Deep comparison of index properties\n const indexChanged = isIndexChanged(prevIndex, currIndex);\n\n if (indexChanged) {\n // Index definition changed - need to drop and recreate\n diff.indexes.altered.push({\n old: {\n ...prevIndex,\n table: tableName,\n name: indexName,\n },\n new: {\n ...currIndex,\n table: tableName,\n name: indexName,\n },\n });\n }\n }\n }\n\n // Find deleted indexes (not altered)\n for (const indexName in prevIndexes) {\n if (!(indexName in currIndexes)) {\n diff.indexes.deleted.push({\n name: indexName,\n table: tableName,\n });\n }\n }\n\n // Compare unique constraints\n const prevUniqueConstraints = prevTable.uniqueConstraints || {};\n const currUniqueConstraints = currTable.uniqueConstraints || {};\n\n // Find new unique constraints\n for (const uqName in currUniqueConstraints) {\n if (!(uqName in prevUniqueConstraints)) {\n diff.uniqueConstraints.created.push({\n ...currUniqueConstraints[uqName],\n table: tableName,\n });\n }\n }\n\n // Find deleted unique constraints\n for (const uqName in prevUniqueConstraints) {\n if (!(uqName in currUniqueConstraints)) {\n diff.uniqueConstraints.deleted.push({\n name: uqName,\n table: tableName,\n });\n }\n }\n\n // Compare check constraints\n const prevCheckConstraints = prevTable.checkConstraints || {};\n const currCheckConstraints = currTable.checkConstraints || {};\n\n // Find new check constraints\n for (const checkName in currCheckConstraints) {\n if (!(checkName in prevCheckConstraints)) {\n diff.checkConstraints.created.push({\n ...currCheckConstraints[checkName],\n table: tableName,\n });\n }\n }\n\n // Find deleted check constraints\n for (const checkName in prevCheckConstraints) {\n if (!(checkName in currCheckConstraints)) {\n diff.checkConstraints.deleted.push({\n name: checkName,\n table: tableName,\n });\n }\n }\n\n // Compare foreign keys\n const prevFKs = prevTable.foreignKeys || {};\n const currFKs = currTable.foreignKeys || {};\n\n // Find new, deleted, and altered foreign keys\n for (const fkName in currFKs) {\n if (!(fkName in prevFKs)) {\n // New FK\n diff.foreignKeys.created.push(currFKs[fkName]);\n } else {\n // Check if FK definition changed (CASCADE behavior, etc.)\n const prevFK = prevFKs[fkName];\n const currFK = currFKs[fkName];\n\n // Compare FK properties\n const prevOnDelete = prevFK.onDelete || 'no action';\n const currOnDelete = currFK.onDelete || 'no action';\n const prevOnUpdate = prevFK.onUpdate || 'no action';\n const currOnUpdate = currFK.onUpdate || 'no action';\n\n if (prevOnDelete !== currOnDelete || prevOnUpdate !== currOnUpdate) {\n // FK CASCADE behavior changed - need to drop and recreate\n diff.foreignKeys.altered.push({\n old: prevFK,\n new: currFK,\n });\n }\n }\n }\n\n // Find deleted foreign keys (not altered)\n for (const fkName in prevFKs) {\n if (!(fkName in currFKs)) {\n diff.foreignKeys.deleted.push({\n name: fkName,\n tableFrom: tableName,\n });\n }\n }\n }\n }\n\n return diff;\n}\n\n/**\n * Check if a diff has any changes\n */\nexport function hasDiffChanges(diff: SchemaDiff): boolean {\n return (\n diff.tables.created.length > 0 ||\n diff.tables.deleted.length > 0 ||\n diff.tables.modified.length > 0 ||\n diff.columns.added.length > 0 ||\n diff.columns.deleted.length > 0 ||\n diff.columns.modified.length > 0 ||\n diff.indexes.created.length > 0 ||\n diff.indexes.deleted.length > 0 ||\n diff.indexes.altered.length > 0 ||\n diff.foreignKeys.created.length > 0 ||\n diff.foreignKeys.deleted.length > 0 ||\n diff.foreignKeys.altered.length > 0 ||\n diff.uniqueConstraints.created.length > 0 ||\n diff.uniqueConstraints.deleted.length > 0 ||\n diff.checkConstraints.created.length > 0 ||\n diff.checkConstraints.deleted.length > 0\n );\n}\n",
19
- "import type { SchemaSnapshot } from '../types';\nimport type { SchemaDiff } from './diff-calculator';\nimport { logger } from '@elizaos/core';\n\n/**\n * Data loss detection result\n * Based on Drizzle's pgPushUtils approach\n */\nexport interface DataLossCheck {\n hasDataLoss: boolean;\n tablesToRemove: string[];\n columnsToRemove: string[];\n tablesToTruncate: string[];\n typeChanges: Array<{\n table: string;\n column: string;\n from: string;\n to: string;\n }>;\n warnings: string[];\n requiresConfirmation: boolean;\n}\n\n/**\n * Check for potential data loss in schema changes\n * Based on Drizzle's pgSuggestions function\n */\nexport function checkForDataLoss(diff: SchemaDiff): DataLossCheck {\n const result: DataLossCheck = {\n hasDataLoss: false,\n tablesToRemove: [],\n columnsToRemove: [],\n tablesToTruncate: [],\n typeChanges: [],\n warnings: [],\n requiresConfirmation: false,\n };\n\n // Check for table deletions\n if (diff.tables.deleted.length > 0) {\n result.hasDataLoss = true;\n result.requiresConfirmation = true;\n result.tablesToRemove = [...diff.tables.deleted];\n for (const table of diff.tables.deleted) {\n result.warnings.push(`Table \"${table}\" will be dropped with all its data`);\n }\n }\n\n // Check for column deletions\n if (diff.columns.deleted.length > 0) {\n result.hasDataLoss = true;\n result.requiresConfirmation = true;\n for (const col of diff.columns.deleted) {\n result.columnsToRemove.push(`${col.table}.${col.column}`);\n result.warnings.push(`Column \"${col.column}\" in table \"${col.table}\" will be dropped`);\n }\n }\n\n // Check for column type changes that might cause data loss\n for (const modified of diff.columns.modified) {\n const from = modified.changes.from;\n const to = modified.changes.to;\n\n // Check if type change is destructive\n if (from.type !== to.type) {\n const isDestructive = checkIfTypeChangeIsDestructive(from.type, to.type);\n\n if (isDestructive) {\n result.hasDataLoss = true;\n result.requiresConfirmation = true;\n result.typeChanges.push({\n table: modified.table,\n column: modified.column,\n from: from.type,\n to: to.type,\n });\n result.tablesToTruncate.push(modified.table);\n result.warnings.push(\n `Column \"${modified.column}\" in table \"${modified.table}\" changes type from \"${from.type}\" to \"${to.type}\". ` +\n `This may require truncating the table to avoid data conversion errors.`\n );\n }\n }\n\n // Check for adding NOT NULL without default to existing column\n if (!from.notNull && to.notNull && !to.default) {\n result.hasDataLoss = true;\n result.requiresConfirmation = true;\n result.warnings.push(\n `Column \"${modified.column}\" in table \"${modified.table}\" is becoming NOT NULL without a default value. ` +\n `This will fail if the table contains NULL values.`\n );\n }\n }\n\n // Check for adding NOT NULL columns without defaults\n for (const added of diff.columns.added) {\n if (added.definition.notNull && !added.definition.default) {\n // This is only a problem if the table already has data\n // We'll flag it as a potential issue\n result.warnings.push(\n `Column \"${added.column}\" is being added to table \"${added.table}\" as NOT NULL without a default value. ` +\n `This will fail if the table contains data.`\n );\n // Don't set requiresConfirmation here - it's only a warning\n }\n }\n\n return result;\n}\n\n/**\n * Normalize SQL types for comparison\n * Handles equivalent type variations between introspected DB and schema definitions\n */\nfunction normalizeType(type: string | undefined): string {\n if (!type) return '';\n\n const normalized = type.toLowerCase().trim();\n\n // Handle timestamp variations - all are equivalent\n if (\n normalized === 'timestamp without time zone' ||\n normalized === 'timestamp with time zone' ||\n normalized === 'timestamptz'\n ) {\n return 'timestamp';\n }\n\n // Handle serial vs integer with identity\n // serial is essentially integer with auto-increment\n if (normalized === 'serial') {\n return 'integer';\n }\n if (normalized === 'bigserial') {\n return 'bigint';\n }\n if (normalized === 'smallserial') {\n return 'smallint';\n }\n\n // Handle numeric/decimal equivalence\n if (normalized.startsWith('numeric') || normalized.startsWith('decimal')) {\n // Extract precision and scale if present\n const match = normalized.match(/\\((\\d+)(?:,\\s*(\\d+))?\\)/);\n if (match) {\n return `numeric(${match[1]}${match[2] ? `,${match[2]}` : ''})`;\n }\n return 'numeric';\n }\n\n // Handle varchar/character varying\n if (normalized.startsWith('character varying')) {\n return normalized.replace('character varying', 'varchar');\n }\n\n // Handle text array variations\n if (normalized === 'text[]' || normalized === '_text') {\n return 'text[]';\n }\n\n return normalized;\n}\n\n/**\n * Check if a type change is destructive\n * Based on PostgreSQL's type casting rules\n */\nfunction checkIfTypeChangeIsDestructive(fromType: string, toType: string): boolean {\n // First normalize the types to handle equivalent variations\n const normalizedFrom = normalizeType(fromType);\n const normalizedTo = normalizeType(toType);\n\n // If normalized types match, it's not destructive\n if (normalizedFrom === normalizedTo) {\n return false;\n }\n\n // Safe conversions (PostgreSQL) - based on Drizzle's logic\n const safeConversions: Record<string, string[]> = {\n smallint: ['integer', 'bigint', 'numeric', 'real', 'double precision'],\n integer: ['bigint', 'numeric', 'real', 'double precision'],\n bigint: ['numeric'],\n real: ['double precision'],\n varchar: ['text'],\n char: ['varchar', 'text'],\n citext: ['text'],\n text: ['citext'],\n // UUID to text is safe\n uuid: ['text', 'varchar'],\n // Timestamp variations are generally safe (now handled by normalization)\n timestamp: ['timestamp'], // Simplified since normalization handles variations\n // Date/time conversions\n date: ['timestamp'],\n time: ['timetz'],\n };\n\n const fromBase = normalizedFrom.split('(')[0];\n const toBase = normalizedTo.split('(')[0];\n\n // Same type is always safe\n if (fromBase === toBase) {\n return false;\n }\n\n // Check if it's a safe conversion\n const safeTo = safeConversions[fromBase];\n if (safeTo && safeTo.includes(toBase)) {\n return false;\n }\n\n // All other conversions are considered potentially destructive\n return true;\n}\n\n/**\n * Generate SQL statements from a schema diff\n * This follows Drizzle's approach: create all tables first, then add foreign keys\n */\nexport async function generateMigrationSQL(\n previousSnapshot: SchemaSnapshot | null,\n currentSnapshot: SchemaSnapshot,\n diff?: SchemaDiff\n): Promise<string[]> {\n const statements: string[] = [];\n\n // If no diff provided, calculate it\n if (!diff) {\n const { calculateDiff } = await import('./diff-calculator');\n diff = await calculateDiff(previousSnapshot, currentSnapshot);\n }\n\n // Check for data loss\n const dataLossCheck = checkForDataLoss(diff);\n\n // Log warnings if any\n if (dataLossCheck.warnings.length > 0) {\n logger.warn(\n { src: 'plugin:sql', warnings: dataLossCheck.warnings },\n 'Schema changes may cause data loss'\n );\n }\n\n // Phase 1: Collect unique schemas and create them first\n const schemasToCreate = new Set<string>();\n for (const tableName of diff.tables.created) {\n const table = currentSnapshot.tables[tableName];\n if (table) {\n const schema = table.schema || 'public';\n if (schema !== 'public') {\n schemasToCreate.add(schema);\n }\n }\n }\n\n // Create schemas first (following drizzle-kit pattern)\n for (const schema of schemasToCreate) {\n statements.push(`CREATE SCHEMA IF NOT EXISTS \"${schema}\";`);\n }\n\n // Phase 2: Generate CREATE TABLE statements for new tables (WITHOUT foreign keys)\n const createTableStatements: string[] = [];\n const foreignKeyStatements: string[] = [];\n\n for (const tableName of diff.tables.created) {\n const table = currentSnapshot.tables[tableName];\n if (table) {\n const { tableSQL, fkSQLs } = generateCreateTableSQL(tableName, table);\n createTableStatements.push(tableSQL);\n foreignKeyStatements.push(...fkSQLs);\n }\n }\n\n // Add all CREATE TABLE statements\n statements.push(...createTableStatements);\n\n // Phase 3: Add all foreign keys AFTER tables are created\n // Deduplicate foreign key statements to avoid duplicate constraints\n const uniqueFKs = new Set<string>();\n const dedupedFKStatements: string[] = [];\n\n for (const fkSQL of foreignKeyStatements) {\n // Extract constraint name to check for duplicates\n const match = fkSQL.match(/ADD CONSTRAINT \"([^\"]+)\"/);\n if (match) {\n const constraintName = match[1];\n if (!uniqueFKs.has(constraintName)) {\n uniqueFKs.add(constraintName);\n dedupedFKStatements.push(fkSQL);\n }\n } else {\n dedupedFKStatements.push(fkSQL);\n }\n }\n\n statements.push(...dedupedFKStatements);\n\n // Phase 4: Handle table modifications\n\n // Generate DROP TABLE statements for deleted tables\n for (const tableName of diff.tables.deleted) {\n const [schema, name] = tableName.includes('.') ? tableName.split('.') : ['public', tableName];\n statements.push(`DROP TABLE IF EXISTS \"${schema}\".\"${name}\" CASCADE;`);\n }\n\n // Generate ALTER TABLE statements for column changes\n // Handle column additions\n for (const added of diff.columns.added) {\n statements.push(generateAddColumnSQL(added.table, added.column, added.definition));\n }\n\n // Handle column deletions\n for (const deleted of diff.columns.deleted) {\n statements.push(generateDropColumnSQL(deleted.table, deleted.column));\n }\n\n // Handle column modifications\n for (const modified of diff.columns.modified) {\n const alterStatements = generateAlterColumnSQL(\n modified.table,\n modified.column,\n modified.changes\n );\n statements.push(...alterStatements);\n }\n\n // Generate DROP INDEX statements (including altered ones - drop old version)\n for (const index of diff.indexes.deleted) {\n statements.push(generateDropIndexSQL(index));\n }\n\n // Drop old version of altered indexes\n for (const alteredIndex of diff.indexes.altered) {\n statements.push(generateDropIndexSQL(alteredIndex.old));\n }\n\n // Generate CREATE INDEX statements (including altered ones - create new version)\n for (const index of diff.indexes.created) {\n statements.push(generateCreateIndexSQL(index));\n }\n\n // Create new version of altered indexes\n for (const alteredIndex of diff.indexes.altered) {\n statements.push(generateCreateIndexSQL(alteredIndex.new));\n }\n\n // Generate CREATE UNIQUE CONSTRAINT statements\n for (const constraint of diff.uniqueConstraints.created) {\n // Skip if it's part of a new table (already handled)\n const isNewTable = diff.tables.created.some((tableName) => {\n const [schema, table] = tableName.includes('.')\n ? tableName.split('.')\n : ['public', tableName];\n const constraintTable = constraint.table || '';\n const [constraintSchema, constraintTableName] = constraintTable.includes('.')\n ? constraintTable.split('.')\n : ['public', constraintTable];\n return table === constraintTableName && schema === constraintSchema;\n });\n\n if (!isNewTable) {\n statements.push(generateCreateUniqueConstraintSQL(constraint));\n }\n }\n\n // Generate DROP UNIQUE CONSTRAINT statements\n for (const constraint of diff.uniqueConstraints.deleted) {\n statements.push(generateDropUniqueConstraintSQL(constraint));\n }\n\n // Generate CREATE CHECK CONSTRAINT statements\n for (const constraint of diff.checkConstraints.created) {\n // Skip if it's part of a new table (already handled)\n const isNewTable = diff.tables.created.some((tableName) => {\n const [schema, table] = tableName.includes('.')\n ? tableName.split('.')\n : ['public', tableName];\n const constraintTable = constraint.table || '';\n const [constraintSchema, constraintTableName] = constraintTable.includes('.')\n ? constraintTable.split('.')\n : ['public', constraintTable];\n return table === constraintTableName && schema === constraintSchema;\n });\n\n if (!isNewTable) {\n statements.push(generateCreateCheckConstraintSQL(constraint));\n }\n }\n\n // Generate DROP CHECK CONSTRAINT statements\n for (const constraint of diff.checkConstraints.deleted) {\n statements.push(generateDropCheckConstraintSQL(constraint));\n }\n\n // Handle foreign key deletions first (including altered ones)\n for (const fk of diff.foreignKeys.deleted) {\n statements.push(generateDropForeignKeySQL(fk));\n }\n\n // Drop old version of altered foreign keys\n for (const alteredFK of diff.foreignKeys.altered) {\n statements.push(generateDropForeignKeySQL(alteredFK.old));\n }\n\n // Handle foreign key creations (for existing tables)\n for (const fk of diff.foreignKeys.created) {\n // Only add if it's not part of a new table (those were handled above)\n // Check both with and without schema prefix\n const tableFrom = fk.tableFrom || '';\n const schemaFrom = fk.schemaFrom || 'public';\n\n const isNewTable = diff.tables.created.some((tableName) => {\n // Compare table names, handling schema prefixes\n const [createdSchema, createdTable] = tableName.includes('.')\n ? tableName.split('.')\n : ['public', tableName];\n\n // Compare using the actual schema and table from the FK\n return createdTable === tableFrom && createdSchema === schemaFrom;\n });\n\n if (!isNewTable) {\n statements.push(generateCreateForeignKeySQL(fk));\n }\n }\n\n // Create new version of altered foreign keys\n for (const alteredFK of diff.foreignKeys.altered) {\n statements.push(generateCreateForeignKeySQL(alteredFK.new));\n }\n\n return statements;\n}\n\n/**\n * Generate CREATE TABLE SQL (following Drizzle's pattern)\n * Returns the table creation SQL and separate foreign key SQLs\n */\nfunction generateCreateTableSQL(\n fullTableName: string,\n table: any\n): { tableSQL: string; fkSQLs: string[] } {\n const [schema, tableName] = fullTableName.includes('.')\n ? fullTableName.split('.')\n : ['public', fullTableName];\n const columns: string[] = [];\n const fkSQLs: string[] = [];\n\n // Add columns\n for (const [colName, colDef] of Object.entries(table.columns || {})) {\n columns.push(generateColumnDefinition(colName, colDef as any));\n }\n\n // Add composite primary keys if exists\n const primaryKeys = table.compositePrimaryKeys || {};\n for (const [pkName, pkDef] of Object.entries(primaryKeys)) {\n const pk = pkDef as any;\n if (pk.columns && pk.columns.length > 0) {\n columns.push(\n `CONSTRAINT \"${pkName}\" PRIMARY KEY (${pk.columns.map((c: string) => `\"${c}\"`).join(', ')})`\n );\n }\n }\n\n // Add unique constraints\n const uniqueConstraints = table.uniqueConstraints || {};\n for (const [uqName, uqDef] of Object.entries(uniqueConstraints)) {\n const uq = uqDef as any;\n if (uq.columns && uq.columns.length > 0) {\n const uniqueDef = uq.nullsNotDistinct\n ? `CONSTRAINT \"${uqName}\" UNIQUE NULLS NOT DISTINCT (${uq.columns.map((c: string) => `\"${c}\"`).join(', ')})`\n : `CONSTRAINT \"${uqName}\" UNIQUE (${uq.columns.map((c: string) => `\"${c}\"`).join(', ')})`;\n columns.push(uniqueDef);\n }\n }\n\n // Add check constraints\n const checkConstraints = table.checkConstraints || {};\n for (const [checkName, checkDef] of Object.entries(checkConstraints)) {\n const check = checkDef as any;\n if (check.value) {\n columns.push(`CONSTRAINT \"${checkName}\" CHECK (${check.value})`);\n }\n }\n\n // Following drizzle-kit pattern: don't create schema here, it's handled separately\n const tableSQL = `CREATE TABLE IF NOT EXISTS \"${schema}\".\"${tableName}\" (\\n ${columns.join(',\\n ')}\\n);`;\n\n // Collect foreign keys to be added AFTER all tables are created\n const foreignKeys = table.foreignKeys || {};\n for (const [fkName, fkDef] of Object.entries(foreignKeys)) {\n const fk = fkDef as any;\n const fkSQL = `ALTER TABLE \"${schema}\".\"${tableName}\" ADD CONSTRAINT \"${fkName}\" FOREIGN KEY (${fk.columnsFrom.map((c: string) => `\"${c}\"`).join(', ')}) REFERENCES \"${fk.schemaTo || 'public'}\".\"${fk.tableTo}\" (${fk.columnsTo.map((c: string) => `\"${c}\"`).join(', ')})${fk.onDelete ? ` ON DELETE ${fk.onDelete}` : ''}${fk.onUpdate ? ` ON UPDATE ${fk.onUpdate}` : ''};`;\n fkSQLs.push(fkSQL);\n }\n\n return { tableSQL, fkSQLs };\n}\n\n/**\n * Generate column definition (following Drizzle's pattern)\n */\nfunction generateColumnDefinition(name: string, def: any): string {\n let sql = `\"${name}\" ${def.type}`;\n\n // Handle primary key that's not part of composite\n if (def.primaryKey && !def.type.includes('SERIAL')) {\n sql += ' PRIMARY KEY';\n }\n\n // Add NOT NULL constraint\n if (def.notNull) {\n sql += ' NOT NULL';\n }\n\n // Add DEFAULT value - properly formatted\n if (def.default !== undefined) {\n const defaultValue = formatDefaultValue(def.default, def.type);\n sql += ` DEFAULT ${defaultValue}`;\n }\n\n return sql;\n}\n\n/**\n * Generate ALTER TABLE ADD COLUMN SQL\n * Based on Drizzle's PgAlterTableAddColumnConvertor\n */\nfunction generateAddColumnSQL(table: string, column: string, definition: any): string {\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n const tableNameWithSchema = `\"${schema}\".\"${tableName}\"`;\n\n // Build column definition parts in the correct order (like Drizzle)\n const parts: string[] = [`\"${column}\"`];\n\n // Type\n parts.push(definition.type);\n\n // Primary key\n if (definition.primaryKey) {\n parts.push('PRIMARY KEY');\n }\n\n // Default value - needs proper formatting based on type\n if (definition.default !== undefined) {\n const defaultValue = formatDefaultValue(definition.default, definition.type);\n if (defaultValue) {\n parts.push(`DEFAULT ${defaultValue}`);\n }\n }\n\n // Generated columns\n if (definition.generated) {\n parts.push(`GENERATED ALWAYS AS (${definition.generated}) STORED`);\n }\n\n // NOT NULL constraint - comes after DEFAULT\n if (definition.notNull) {\n parts.push('NOT NULL');\n }\n\n return `ALTER TABLE ${tableNameWithSchema} ADD COLUMN ${parts.join(' ')};`;\n}\n\n/**\n * Generate ALTER TABLE DROP COLUMN SQL\n * Based on Drizzle's approach with CASCADE\n */\nfunction generateDropColumnSQL(table: string, column: string): string {\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n const tableNameWithSchema = `\"${schema}\".\"${tableName}\"`;\n // Use CASCADE to handle dependent objects\n return `ALTER TABLE ${tableNameWithSchema} DROP COLUMN \"${column}\" CASCADE;`;\n}\n\n/**\n * Generate ALTER TABLE ALTER COLUMN SQL\n * Based on Drizzle's approach with proper type casting and handling\n */\nfunction generateAlterColumnSQL(table: string, column: string, changes: any): string[] {\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n const tableNameWithSchema = `\"${schema}\".\"${tableName}\"`;\n const statements: string[] = [];\n\n // Handle type changes - need to handle enums and complex types\n if (changes.to?.type !== changes.from?.type) {\n const newType = changes.to?.type || 'TEXT';\n\n // Check if we need a USING clause for type conversion\n const needsUsing = checkIfNeedsUsingClause(changes.from?.type, newType);\n\n if (needsUsing) {\n // For complex type changes, use USING clause like Drizzle\n statements.push(\n `ALTER TABLE ${tableNameWithSchema} ALTER COLUMN \"${column}\" TYPE ${newType} USING \"${column}\"::text::${newType};`\n );\n } else {\n statements.push(\n `ALTER TABLE ${tableNameWithSchema} ALTER COLUMN \"${column}\" SET DATA TYPE ${newType};`\n );\n }\n }\n\n // Handle NOT NULL changes\n if (changes.to?.notNull !== changes.from?.notNull) {\n if (changes.to?.notNull) {\n // When adding NOT NULL, might need to set defaults for existing NULL values\n statements.push(`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN \"${column}\" SET NOT NULL;`);\n } else {\n statements.push(`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN \"${column}\" DROP NOT NULL;`);\n }\n }\n\n // Handle default value changes\n if (changes.to?.default !== changes.from?.default) {\n if (changes.to?.default !== undefined) {\n const defaultValue = formatDefaultValue(changes.to.default, changes.to?.type);\n statements.push(\n `ALTER TABLE ${tableNameWithSchema} ALTER COLUMN \"${column}\" SET DEFAULT ${defaultValue};`\n );\n } else {\n statements.push(`ALTER TABLE ${tableNameWithSchema} ALTER COLUMN \"${column}\" DROP DEFAULT;`);\n }\n }\n\n return statements;\n}\n\n/**\n * Check if a type change needs a USING clause\n * Based on Drizzle's type conversion logic\n */\nfunction checkIfNeedsUsingClause(fromType: string, toType: string): boolean {\n if (!fromType || !toType) return false;\n\n // Enum changes always need USING\n if (fromType.includes('enum') || toType.includes('enum')) {\n return true;\n }\n\n const fromBase = fromType.split('(')[0].toLowerCase();\n const toBase = toType.split('(')[0].toLowerCase();\n\n // Text/varchar to JSONB always needs USING\n if (\n (fromBase === 'text' || fromBase === 'varchar' || fromBase === 'character varying') &&\n (toBase === 'jsonb' || toBase === 'json')\n ) {\n return true;\n }\n\n // Some specific type conversions need USING\n const needsUsingPairs = [\n ['integer', 'boolean'],\n ['boolean', 'integer'],\n ['text', 'integer'],\n ['text', 'numeric'],\n ['text', 'boolean'],\n ['text', 'uuid'],\n ['text', 'jsonb'],\n ['text', 'json'],\n ['varchar', 'integer'],\n ['varchar', 'numeric'],\n ['varchar', 'boolean'],\n ['varchar', 'uuid'],\n ['varchar', 'jsonb'],\n ['varchar', 'json'],\n ['character varying', 'jsonb'],\n ['character varying', 'json'],\n // Add more as needed based on PostgreSQL casting rules\n ];\n\n for (const [from, to] of needsUsingPairs) {\n if ((fromBase === from && toBase === to) || (fromBase === to && toBase === from)) {\n return true;\n }\n }\n\n return false;\n}\n\n/**\n * Format a default value for SQL\n * Based on Drizzle's default value formatting\n */\nfunction formatDefaultValue(value: any, type: string): string {\n // Handle NULL\n if (value === null || value === 'NULL') {\n return 'NULL';\n }\n\n // Handle boolean\n if (type && (type.toLowerCase().includes('boolean') || type.toLowerCase() === 'bool')) {\n if (value === true || value === 'true' || value === 't' || value === 1) {\n return 'true';\n }\n if (value === false || value === 'false' || value === 'f' || value === 0) {\n return 'false';\n }\n }\n\n // Handle numeric types\n if (type && type.match(/^(integer|bigint|smallint|numeric|decimal|real|double)/i)) {\n return String(value);\n }\n\n // Handle SQL expressions and pre-formatted defaults\n if (typeof value === 'string') {\n // Already formatted with type cast (e.g., '[]'::jsonb, '{}'::jsonb)\n // These come from the snapshot and are already properly formatted\n if (value.includes('::')) {\n return value;\n }\n\n // Already quoted string literals (from snapshot)\n // These start and end with single quotes\n if (value.startsWith(\"'\") && value.endsWith(\"'\")) {\n return value;\n }\n\n // SQL functions like now(), gen_random_uuid(), etc.\n if (value.match(/^\\w+\\(\\)/i) || (value.includes('(') && value.includes(')'))) {\n return value;\n }\n\n // SQL expressions starting with CURRENT_\n if (value.toUpperCase().startsWith('CURRENT_')) {\n return value;\n }\n\n // Otherwise, it's an unquoted string literal - wrap and escape\n return `'${value.replace(/'/g, \"''\")}'`;\n }\n\n // Default: return as-is\n return String(value);\n}\n\n/**\n * Generate CREATE INDEX SQL\n */\nfunction generateCreateIndexSQL(index: any): string {\n const unique = index.isUnique ? 'UNIQUE ' : '';\n const method = index.method || 'btree';\n const columns = index.columns\n .map((c: any) => {\n if (c.isExpression) {\n return c.expression;\n }\n // Only add DESC if explicitly set to false, no NULLS clause by default\n return `\"${c.expression}\"${c.asc === false ? ' DESC' : ''}`;\n })\n .join(', ');\n\n // Extract index name and table with proper schema handling\n const indexName = index.name.includes('.') ? index.name.split('.')[1] : index.name;\n\n // Keep the full table name with schema if present\n let tableRef: string;\n if (index.table && index.table.includes('.')) {\n const [schema, table] = index.table.split('.');\n tableRef = `\"${schema}\".\"${table}\"`;\n } else {\n tableRef = `\"${index.table || ''}\"`;\n }\n\n // Include schema in table reference for correct index creation\n return `CREATE ${unique}INDEX \"${indexName}\" ON ${tableRef} USING ${method} (${columns});`;\n}\n\n/**\n * Generate DROP INDEX SQL\n */\nfunction generateDropIndexSQL(index: any): string {\n // Extract just the index name without schema\n const indexName = index.name\n ? index.name.includes('.')\n ? index.name.split('.')[1]\n : index.name\n : index;\n // Match Drizzle's format - no schema qualification\n return `DROP INDEX IF EXISTS \"${indexName}\";`;\n}\n\n/**\n * Generate CREATE FOREIGN KEY SQL (for existing tables)\n */\nfunction generateCreateForeignKeySQL(fk: any): string {\n const schemaFrom = fk.schemaFrom || 'public';\n const schemaTo = fk.schemaTo || 'public';\n const tableFrom = fk.tableFrom;\n const columnsFrom = fk.columnsFrom.map((c: string) => `\"${c}\"`).join(', ');\n const columnsTo = fk.columnsTo.map((c: string) => `\"${c}\"`).join(', ');\n\n let sql = `ALTER TABLE \"${schemaFrom}\".\"${tableFrom}\" ADD CONSTRAINT \"${fk.name}\" FOREIGN KEY (${columnsFrom}) REFERENCES \"${schemaTo}\".\"${fk.tableTo}\" (${columnsTo})`;\n\n if (fk.onDelete) {\n sql += ` ON DELETE ${fk.onDelete}`;\n }\n\n if (fk.onUpdate) {\n sql += ` ON UPDATE ${fk.onUpdate}`;\n }\n\n return sql + ';';\n}\n\n/**\n * Generate DROP FOREIGN KEY SQL\n */\nfunction generateDropForeignKeySQL(fk: any): string {\n const [schema, tableName] = fk.tableFrom\n ? fk.tableFrom.includes('.')\n ? fk.tableFrom.split('.')\n : ['public', fk.tableFrom]\n : ['public', ''];\n return `ALTER TABLE \"${schema}\".\"${tableName}\" DROP CONSTRAINT \"${fk.name}\";`;\n}\n\n/**\n * Generate SQL for renaming a table\n */\nexport function generateRenameTableSQL(oldName: string, newName: string): string {\n const [oldSchema, oldTable] = oldName.includes('.') ? oldName.split('.') : ['public', oldName];\n const [, newTable] = newName.includes('.') ? newName.split('.') : ['public', newName];\n return `ALTER TABLE \"${oldSchema}\".\"${oldTable}\" RENAME TO \"${newTable}\";`;\n}\n\n/**\n * Generate SQL for renaming a column\n */\nexport function generateRenameColumnSQL(table: string, oldName: string, newName: string): string {\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n return `ALTER TABLE \"${schema}\".\"${tableName}\" RENAME COLUMN \"${oldName}\" TO \"${newName}\";`;\n}\n\n/**\n * Generate CREATE UNIQUE CONSTRAINT SQL\n */\nfunction generateCreateUniqueConstraintSQL(constraint: any): string {\n const table = constraint.table || '';\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n\n const name = constraint.name;\n const columns = constraint.columns.map((c: string) => `\"${c}\"`).join(', ');\n\n let sql = `ALTER TABLE \"${schema}\".\"${tableName}\" ADD CONSTRAINT \"${name}\" UNIQUE`;\n\n // Handle NULLS NOT DISTINCT if specified (PostgreSQL 15+)\n if (constraint.nullsNotDistinct) {\n sql += ` NULLS NOT DISTINCT`;\n }\n\n sql += ` (${columns});`;\n\n return sql;\n}\n\n/**\n * Generate DROP UNIQUE CONSTRAINT SQL\n */\nfunction generateDropUniqueConstraintSQL(constraint: any): string {\n const table = constraint.table || '';\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n\n return `ALTER TABLE \"${schema}\".\"${tableName}\" DROP CONSTRAINT \"${constraint.name}\";`;\n}\n\n/**\n * Generate CREATE CHECK CONSTRAINT SQL\n */\nfunction generateCreateCheckConstraintSQL(constraint: any): string {\n const table = constraint.table || '';\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n\n const name = constraint.name;\n const value = constraint.value;\n\n return `ALTER TABLE \"${schema}\".\"${tableName}\" ADD CONSTRAINT \"${name}\" CHECK (${value});`;\n}\n\n/**\n * Generate DROP CHECK CONSTRAINT SQL\n */\nfunction generateDropCheckConstraintSQL(constraint: any): string {\n const table = constraint.table || '';\n const [schema, tableName] = table.includes('.') ? table.split('.') : ['public', table];\n\n return `ALTER TABLE \"${schema}\".\"${tableName}\" DROP CONSTRAINT \"${constraint.name}\";`;\n}\n",
20
- "import { pgSchema } from 'drizzle-orm/pg-core';\nimport { getTableConfig } from 'drizzle-orm/pg-core';\nimport { logger } from '@elizaos/core';\n\n/**\n * Transform a plugin's schema to use the appropriate namespace\n *\n * @elizaos/plugin-sql uses 'public' schema (no transformation)\n * Other plugins get their tables wrapped in a namespaced schema\n */\nexport function transformPluginSchema(pluginName: string, schema: any): any {\n // Core plugin uses public schema - no transformation needed\n if (pluginName === '@elizaos/plugin-sql') {\n return schema;\n }\n\n // Derive schema name from plugin name\n const schemaName = deriveSchemaName(pluginName);\n\n // If schema is already using pgSchema, return as-is\n if (isAlreadyNamespaced(schema, schemaName)) {\n logger.debug(\n { src: 'plugin:sql', pluginName, schemaName },\n 'Plugin already uses expected schema'\n );\n return schema;\n }\n\n logger.info({ src: 'plugin:sql', pluginName, schemaName }, 'Transforming plugin to use schema');\n\n // Transform the schema object\n const transformed: any = {};\n\n for (const [key, value] of Object.entries(schema)) {\n if (isPgTable(value)) {\n // Get the table configuration\n const config = getTableConfig(value as any);\n\n // If the table doesn't have a schema or is in public, warn about it\n if (!config.schema || config.schema === 'public') {\n // Note: We can't easily transform existing tables to use a different schema\n // as it would require reconstructing all column definitions, constraints, etc.\n // For now, we'll log a warning and return the original\n logger.warn(\n { src: 'plugin:sql', tableName: config.name, pluginName, expectedSchema: schemaName },\n 'Table should use pgSchema for proper isolation - manual migration may be required'\n );\n transformed[key] = value;\n } else {\n // Table already has a schema, keep it as-is\n transformed[key] = value;\n }\n } else if (typeof value === 'object' && value !== null) {\n // Check if this is a schema object (created with pgSchema)\n // Cast to any to access properties since we're doing runtime checks\n const obj = value as any;\n if (obj._schema && obj.table) {\n // This is already a pgSchema object, keep it\n transformed[key] = value;\n } else {\n // Regular object, keep as-is\n transformed[key] = value;\n }\n } else {\n // Not a table, keep as-is\n transformed[key] = value;\n }\n }\n\n return transformed;\n}\n\n/**\n * Derive a valid PostgreSQL schema name from a plugin name\n */\nexport function deriveSchemaName(pluginName: string): string {\n // Remove common prefixes and convert to lowercase with underscores\n let schemaName = pluginName\n .replace(/^@[^/]+\\//, '') // Remove npm scope like @elizaos/\n .replace(/^plugin-/, '') // Remove plugin- prefix\n .toLowerCase();\n\n // Replace non-alphanumeric characters with underscores (avoid polynomial regex)\n schemaName = normalizeSchemaName(schemaName);\n\n // Ensure schema name is valid (not empty, not a reserved word)\n const reserved = ['public', 'pg_catalog', 'information_schema', 'migrations'];\n if (!schemaName || reserved.includes(schemaName)) {\n // Fallback to using the full plugin name with safe characters\n schemaName = 'plugin_' + normalizeSchemaName(pluginName.toLowerCase());\n }\n\n // Ensure it starts with a letter (PostgreSQL requirement)\n if (!/^[a-z]/.test(schemaName)) {\n schemaName = 'p_' + schemaName;\n }\n\n // Truncate if too long (PostgreSQL identifier limit is 63 chars)\n if (schemaName.length > 63) {\n schemaName = schemaName.substring(0, 63);\n }\n\n return schemaName;\n}\n\n/**\n * Normalize a string to be a valid PostgreSQL identifier\n * Avoids polynomial regex by using string manipulation instead\n */\nfunction normalizeSchemaName(input: string): string {\n const chars: string[] = [];\n let prevWasUnderscore = false;\n\n for (let i = 0; i < input.length; i++) {\n const char = input[i];\n\n if (/[a-z0-9]/.test(char)) {\n chars.push(char);\n prevWasUnderscore = false;\n } else if (!prevWasUnderscore) {\n // Only add underscore if previous char wasn't already an underscore\n chars.push('_');\n prevWasUnderscore = true;\n }\n // Skip consecutive non-alphanumeric characters\n }\n\n // Remove leading and trailing underscores\n const result = chars.join('');\n\n // Trim underscores from start and end efficiently\n let start = 0;\n let end = result.length;\n\n while (start < end && result[start] === '_') {\n start++;\n }\n\n while (end > start && result[end - 1] === '_') {\n end--;\n }\n\n return result.slice(start, end);\n}\n\n/**\n * Check if a value is a PgTable\n */\nfunction isPgTable(value: any): boolean {\n if (!value || typeof value !== 'object') {\n return false;\n }\n\n // Check for table-like properties\n // This is a heuristic since we can't use instanceof across module boundaries\n try {\n const config = getTableConfig(value);\n return config && typeof config.name === 'string';\n } catch {\n return false;\n }\n}\n\n/**\n * Check if a schema is already properly namespaced\n */\nfunction isAlreadyNamespaced(schema: any, expectedSchemaName: string): boolean {\n for (const value of Object.values(schema)) {\n if (isPgTable(value)) {\n try {\n const config = getTableConfig(value as any);\n if (config.schema === expectedSchemaName) {\n return true;\n }\n } catch {\n // Not a table, continue\n }\n }\n }\n return false;\n}\n\n/**\n * Create a namespaced schema helper for plugins\n * This is what plugins should ideally use to define their tables\n */\nexport function createPluginSchema(pluginName: string) {\n const schemaName = deriveSchemaName(pluginName);\n return pgSchema(schemaName);\n}\n",
21
- "import { sql } from 'drizzle-orm';\nimport { logger } from '@elizaos/core';\nimport type { DrizzleDB, SchemaSnapshot } from '../types';\n\n/**\n * Introspect the current database state and generate a snapshot\n * This is used when no previous snapshot exists for a plugin\n * to capture the existing database state before migrations\n */\nexport class DatabaseIntrospector {\n constructor(private db: DrizzleDB) {}\n\n /**\n * Introspect all tables in the database and generate a snapshot\n * @param schemaName - Schema to introspect (default: 'public')\n * @returns Schema snapshot of current database state\n */\n async introspectSchema(schemaName: string = 'public'): Promise<SchemaSnapshot> {\n logger.info({ src: 'plugin:sql', schemaName }, 'Starting database introspection');\n\n const tables: any = {};\n const schemas: any = {};\n const enums: any = {};\n\n // Get all tables in the schema\n const allTables = await this.getTables(schemaName);\n\n for (const tableInfo of allTables) {\n const tableName = tableInfo.table_name;\n const tableSchema = tableInfo.table_schema || 'public';\n\n logger.debug({ src: 'plugin:sql', tableSchema, tableName }, 'Introspecting table');\n\n // Get columns for this table\n const columns = await this.getColumns(tableSchema, tableName);\n const columnsObject: any = {};\n const uniqueConstraintObject: any = {};\n\n for (const col of columns) {\n columnsObject[col.column_name] = {\n name: col.column_name,\n type: col.data_type,\n primaryKey: col.is_primary || false,\n notNull: col.is_nullable === 'NO',\n default: col.column_default\n ? this.parseDefault(col.column_default, col.data_type)\n : undefined,\n };\n }\n\n // Get indexes\n const indexes = await this.getIndexes(tableSchema, tableName);\n const indexesObject: any = {};\n\n for (const idx of indexes) {\n if (!idx.is_primary && !idx.is_unique_constraint) {\n // Skip primary keys and unique constraints\n // Also skip indexes with no columns (partial indexes, expression indexes, etc.)\n if (idx.columns && Array.isArray(idx.columns) && idx.columns.length > 0) {\n indexesObject[idx.name] = {\n name: idx.name,\n columns: idx.columns.map((col) => ({\n expression: col,\n isExpression: false,\n })),\n isUnique: idx.is_unique,\n method: idx.method || 'btree',\n };\n }\n }\n }\n\n // Get foreign keys\n const foreignKeys = await this.getForeignKeys(tableSchema, tableName);\n const foreignKeysObject: any = {};\n\n for (const fk of foreignKeys) {\n foreignKeysObject[fk.name] = {\n name: fk.name,\n tableFrom: tableName,\n schemaFrom: tableSchema,\n tableTo: fk.foreign_table_name,\n schemaTo: fk.foreign_table_schema || 'public',\n columnsFrom: [fk.column_name],\n columnsTo: [fk.foreign_column_name],\n onDelete: fk.delete_rule?.toLowerCase() || 'no action',\n onUpdate: fk.update_rule?.toLowerCase() || 'no action',\n };\n }\n\n // Get primary keys\n const primaryKeys = await this.getPrimaryKeys(tableSchema, tableName);\n const primaryKeysObject: any = {};\n\n for (const pk of primaryKeys) {\n primaryKeysObject[pk.name] = {\n name: pk.name,\n columns: pk.columns,\n };\n }\n\n // Get unique constraints\n const uniqueConstraints = await this.getUniqueConstraints(tableSchema, tableName);\n\n for (const unq of uniqueConstraints) {\n uniqueConstraintObject[unq.name] = {\n name: unq.name,\n columns: unq.columns,\n nullsNotDistinct: false, // Default value\n };\n }\n\n // Get check constraints\n const checkConstraints = await this.getCheckConstraints(tableSchema, tableName);\n const checksObject: any = {};\n\n for (const check of checkConstraints) {\n checksObject[check.name] = {\n name: check.name,\n value: check.definition,\n };\n }\n\n // Build the table object\n tables[`${tableSchema}.${tableName}`] = {\n name: tableName,\n schema: tableSchema,\n columns: columnsObject,\n indexes: indexesObject,\n foreignKeys: foreignKeysObject,\n compositePrimaryKeys: primaryKeysObject,\n uniqueConstraints: uniqueConstraintObject,\n checkConstraints: checksObject,\n };\n\n // Track schemas\n if (tableSchema && tableSchema !== 'public') {\n schemas[tableSchema] = tableSchema;\n }\n }\n\n // Get enums if any\n const enumsResult = await this.getEnums(schemaName);\n for (const enumInfo of enumsResult) {\n const key = `${enumInfo.schema}.${enumInfo.name}`;\n if (!enums[key]) {\n enums[key] = {\n name: enumInfo.name,\n schema: enumInfo.schema,\n values: [],\n };\n }\n enums[key].values.push(enumInfo.value);\n }\n\n logger.info(\n { src: 'plugin:sql', tableCount: Object.keys(tables).length },\n 'Database introspection complete'\n );\n\n return {\n version: '7',\n dialect: 'postgresql',\n tables,\n schemas,\n enums,\n _meta: {\n schemas: {},\n tables: {},\n columns: {},\n },\n };\n }\n\n /**\n * Get all tables in a schema\n */\n private async getTables(schemaName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT \n table_schema,\n table_name\n FROM information_schema.tables\n WHERE table_schema = ${schemaName}\n AND table_type = 'BASE TABLE'\n ORDER BY table_name`\n );\n return result.rows;\n }\n\n /**\n * Get columns for a table\n */\n private async getColumns(schemaName: string, tableName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT \n a.attname AS column_name,\n CASE \n WHEN a.attnotnull THEN 'NO'\n ELSE 'YES'\n END AS is_nullable,\n CASE \n WHEN a.atttypid = ANY ('{int,int8,int2}'::regtype[]) \n AND EXISTS (\n SELECT FROM pg_attrdef ad\n WHERE ad.adrelid = a.attrelid \n AND ad.adnum = a.attnum \n AND pg_get_expr(ad.adbin, ad.adrelid) = 'nextval(''' \n || pg_get_serial_sequence(a.attrelid::regclass::text, a.attname)::regclass || '''::regclass)'\n )\n THEN CASE a.atttypid\n WHEN 'int'::regtype THEN 'serial'\n WHEN 'int8'::regtype THEN 'bigserial'\n WHEN 'int2'::regtype THEN 'smallserial'\n END\n ELSE format_type(a.atttypid, a.atttypmod)\n END AS data_type,\n pg_get_expr(ad.adbin, ad.adrelid) AS column_default,\n CASE \n WHEN con.contype = 'p' THEN true\n ELSE false\n END AS is_primary\n FROM pg_attribute a\n JOIN pg_class cls ON cls.oid = a.attrelid\n JOIN pg_namespace ns ON ns.oid = cls.relnamespace\n LEFT JOIN pg_attrdef ad ON ad.adrelid = a.attrelid AND ad.adnum = a.attnum\n LEFT JOIN pg_constraint con ON con.conrelid = a.attrelid \n AND a.attnum = ANY(con.conkey) \n AND con.contype = 'p'\n WHERE \n a.attnum > 0\n AND NOT a.attisdropped\n AND ns.nspname = ${schemaName}\n AND cls.relname = ${tableName}\n ORDER BY a.attnum`\n );\n return result.rows;\n }\n\n /**\n * Get indexes for a table\n */\n private async getIndexes(schemaName: string, tableName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT \n i.relname AS name,\n idx.indisunique AS is_unique,\n idx.indisprimary AS is_primary,\n con.contype = 'u' AS is_unique_constraint,\n ARRAY(\n SELECT a.attname\n FROM pg_attribute a\n WHERE a.attrelid = idx.indrelid\n AND a.attnum = ANY(idx.indkey::int[])\n ORDER BY a.attnum\n ) AS columns,\n am.amname AS method\n FROM pg_index idx\n JOIN pg_class i ON i.oid = idx.indexrelid\n JOIN pg_class c ON c.oid = idx.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n JOIN pg_am am ON am.oid = i.relam\n LEFT JOIN pg_constraint con ON con.conindid = idx.indexrelid\n WHERE n.nspname = ${schemaName}\n AND c.relname = ${tableName}`\n );\n return result.rows;\n }\n\n /**\n * Get foreign keys for a table\n */\n private async getForeignKeys(schemaName: string, tableName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT\n con.conname AS name,\n att.attname AS column_name,\n fnsp.nspname AS foreign_table_schema,\n frel.relname AS foreign_table_name,\n fatt.attname AS foreign_column_name,\n CASE con.confupdtype\n WHEN 'a' THEN 'NO ACTION'\n WHEN 'r' THEN 'RESTRICT'\n WHEN 'n' THEN 'SET NULL'\n WHEN 'c' THEN 'CASCADE'\n WHEN 'd' THEN 'SET DEFAULT'\n END AS update_rule,\n CASE con.confdeltype\n WHEN 'a' THEN 'NO ACTION'\n WHEN 'r' THEN 'RESTRICT'\n WHEN 'n' THEN 'SET NULL'\n WHEN 'c' THEN 'CASCADE'\n WHEN 'd' THEN 'SET DEFAULT'\n END AS delete_rule\n FROM pg_catalog.pg_constraint con\n JOIN pg_catalog.pg_class rel ON rel.oid = con.conrelid\n JOIN pg_catalog.pg_namespace nsp ON nsp.oid = con.connamespace\n LEFT JOIN pg_catalog.pg_attribute att ON att.attnum = ANY (con.conkey)\n AND att.attrelid = con.conrelid\n LEFT JOIN pg_catalog.pg_class frel ON frel.oid = con.confrelid\n LEFT JOIN pg_catalog.pg_namespace fnsp ON fnsp.oid = frel.relnamespace\n LEFT JOIN pg_catalog.pg_attribute fatt ON fatt.attnum = ANY (con.confkey)\n AND fatt.attrelid = con.confrelid\n WHERE con.contype = 'f'\n AND nsp.nspname = ${schemaName}\n AND rel.relname = ${tableName}`\n );\n return result.rows;\n }\n\n /**\n * Get primary keys for a table\n */\n private async getPrimaryKeys(schemaName: string, tableName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT \n con.conname AS name,\n ARRAY(\n SELECT a.attname\n FROM pg_attribute a\n WHERE a.attrelid = con.conrelid\n AND a.attnum = ANY(con.conkey)\n ORDER BY a.attnum\n ) AS columns\n FROM pg_constraint con\n JOIN pg_class rel ON rel.oid = con.conrelid\n JOIN pg_namespace nsp ON nsp.oid = con.connamespace\n WHERE con.contype = 'p'\n AND nsp.nspname = ${schemaName}\n AND rel.relname = ${tableName}`\n );\n return result.rows;\n }\n\n /**\n * Get unique constraints for a table\n */\n private async getUniqueConstraints(schemaName: string, tableName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT \n con.conname AS name,\n ARRAY(\n SELECT a.attname\n FROM pg_attribute a\n WHERE a.attrelid = con.conrelid\n AND a.attnum = ANY(con.conkey)\n ORDER BY a.attnum\n ) AS columns\n FROM pg_constraint con\n JOIN pg_class rel ON rel.oid = con.conrelid\n JOIN pg_namespace nsp ON nsp.oid = con.connamespace\n WHERE con.contype = 'u'\n AND nsp.nspname = ${schemaName}\n AND rel.relname = ${tableName}`\n );\n return result.rows;\n }\n\n /**\n * Get check constraints for a table\n */\n private async getCheckConstraints(schemaName: string, tableName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT \n con.conname AS name,\n pg_get_constraintdef(con.oid) AS definition\n FROM pg_constraint con\n JOIN pg_class rel ON rel.oid = con.conrelid\n JOIN pg_namespace nsp ON nsp.oid = con.connamespace\n WHERE con.contype = 'c'\n AND nsp.nspname = ${schemaName}\n AND rel.relname = ${tableName}`\n );\n return result.rows;\n }\n\n /**\n * Get enums in a schema\n */\n private async getEnums(schemaName: string): Promise<any[]> {\n const result = await this.db.execute(\n sql`SELECT \n n.nspname AS schema,\n t.typname AS name,\n e.enumlabel AS value,\n e.enumsortorder AS sort_order\n FROM pg_type t\n JOIN pg_enum e ON t.oid = e.enumtypid\n JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace\n WHERE n.nspname = ${schemaName}\n ORDER BY schema, name, sort_order`\n );\n return result.rows;\n }\n\n /**\n * Parse default value for a column\n */\n private parseDefault(defaultValue: string, dataType: string): string | undefined {\n if (!defaultValue) return undefined;\n\n // Remove the type cast if present (e.g., \"'value'::text\" -> \"'value'\")\n const match = defaultValue.match(/^'(.*)'::/);\n if (match) {\n return `'${match[1]}'`;\n }\n\n // Handle nextval for sequences\n if (defaultValue.includes('nextval(')) {\n return undefined; // Serial types handle this automatically\n }\n\n // Handle boolean defaults\n if (dataType === 'boolean') {\n if (defaultValue === 'true') return 'true';\n if (defaultValue === 'false') return 'false';\n }\n\n // Return as-is for other cases\n return defaultValue;\n }\n\n /**\n * Check if tables exist for a plugin by checking if any tables exist in its schema\n * @param pluginName - Name of the plugin\n * @returns True if tables exist, false otherwise\n */\n async hasExistingTables(pluginName: string): Promise<boolean> {\n const schemaName =\n pluginName === '@elizaos/plugin-sql' ? 'public' : this.deriveSchemaName(pluginName);\n\n const result = await this.db.execute(\n sql`SELECT COUNT(*) AS count\n FROM information_schema.tables\n WHERE table_schema = ${schemaName}\n AND table_type = 'BASE TABLE'`\n );\n\n const count = parseInt((result.rows[0]?.count as string) || '0', 10);\n return count > 0;\n }\n\n /**\n * Derive schema name from plugin name\n */\n private deriveSchemaName(pluginName: string): string {\n // Same logic as in schema-transformer.ts\n return pluginName.replace('@', '').replace('/', '_').replace(/-/g, '_').toLowerCase();\n }\n}\n",
22
- "import { sql } from 'drizzle-orm';\nimport { logger } from '@elizaos/core';\nimport type { DrizzleDB, RuntimeMigrationOptions, SchemaSnapshot } from './types';\nimport { getRow } from '../types';\nimport { MigrationTracker } from './storage/migration-tracker';\nimport { JournalStorage } from './storage/journal-storage';\nimport { SnapshotStorage } from './storage/snapshot-storage';\nimport { ExtensionManager } from './extension-manager';\nimport { generateSnapshot, hashSnapshot, hasChanges } from './drizzle-adapters/snapshot-generator';\nimport { calculateDiff, hasDiffChanges } from './drizzle-adapters/diff-calculator';\nimport {\n generateMigrationSQL,\n checkForDataLoss,\n type DataLossCheck,\n} from './drizzle-adapters/sql-generator';\nimport { deriveSchemaName } from './schema-transformer';\nimport { DatabaseIntrospector } from './drizzle-adapters/database-introspector';\nimport { createHash } from 'crypto';\n\nexport class RuntimeMigrator {\n private migrationTracker: MigrationTracker;\n private journalStorage: JournalStorage;\n private snapshotStorage: SnapshotStorage;\n private extensionManager: ExtensionManager;\n private introspector: DatabaseIntrospector;\n\n constructor(private db: DrizzleDB) {\n this.migrationTracker = new MigrationTracker(db);\n this.journalStorage = new JournalStorage(db);\n this.snapshotStorage = new SnapshotStorage(db);\n this.extensionManager = new ExtensionManager(db);\n this.introspector = new DatabaseIntrospector(db);\n }\n\n /**\n * Get expected schema name for a plugin\n * @elizaos/plugin-sql uses 'public' schema (core application)\n * All other plugins should use namespaced schemas\n */\n private getExpectedSchemaName(pluginName: string): string {\n // Core plugin uses public schema\n if (pluginName === '@elizaos/plugin-sql') {\n return 'public';\n }\n\n // Use the schema transformer's logic for consistency\n return deriveSchemaName(pluginName);\n }\n\n /**\n * Ensure all schemas used in the snapshot exist\n */\n private async ensureSchemasExist(snapshot: SchemaSnapshot): Promise<void> {\n const schemasToCreate = new Set<string>();\n\n // Collect all schemas from tables\n for (const table of Object.values(snapshot.tables)) {\n const tableData = table as any; // Tables in snapshot have schema property\n const schema = tableData.schema || 'public';\n if (schema !== 'public') {\n schemasToCreate.add(schema);\n }\n }\n\n // Also add schemas from the snapshot's schemas object\n for (const schema of Object.keys(snapshot.schemas || {})) {\n if (schema !== 'public') {\n schemasToCreate.add(schema);\n }\n }\n\n // Create all non-public schemas\n for (const schemaName of schemasToCreate) {\n logger.debug({ src: 'plugin:sql', schemaName }, 'Ensuring schema exists');\n await this.db.execute(sql.raw(`CREATE SCHEMA IF NOT EXISTS \"${schemaName}\"`));\n }\n }\n\n /**\n * Validate schema usage and provide warnings\n */\n private validateSchemaUsage(pluginName: string, snapshot: SchemaSnapshot): void {\n const expectedSchema = this.getExpectedSchemaName(pluginName);\n const isCorePLugin = pluginName === '@elizaos/plugin-sql';\n\n for (const table of Object.values(snapshot.tables)) {\n const tableData = table as any; // Tables in snapshot have schema and name properties\n const actualSchema = tableData.schema || 'public';\n\n // Warn if non-core plugin is using public schema\n if (!isCorePLugin && actualSchema === 'public') {\n logger.warn(\n { src: 'plugin:sql', pluginName, tableName: tableData.name, expectedSchema },\n 'Plugin table is using public schema - consider using pgSchema for better isolation'\n );\n }\n\n // Warn if core plugin is not using public schema\n if (isCorePLugin && actualSchema !== 'public') {\n logger.warn(\n {\n src: 'plugin:sql',\n pluginName: '@elizaos/plugin-sql',\n tableName: tableData.name,\n actualSchema,\n },\n 'Core plugin table should use public schema'\n );\n }\n }\n }\n\n /**\n * Generate a stable advisory lock ID from plugin name\n * PostgreSQL advisory locks use bigint, so we need to hash the plugin name\n * and convert to a stable bigint value\n */\n private getAdvisoryLockId(pluginName: string): bigint {\n // Create a hash of the plugin name\n const hash = createHash('sha256').update(pluginName).digest();\n\n // Take first 8 bytes for a 64-bit integer\n const buffer = hash.slice(0, 8);\n\n // Convert to bigint\n let lockId = BigInt('0x' + buffer.toString('hex'));\n\n // Ensure the value fits in PostgreSQL's positive bigint range\n // Use a mask to keep only 63 bits (ensures positive in signed 64-bit)\n // This preserves uniqueness better than modulo and avoids collisions\n const mask63Bits = 0x7fffffffffffffffn; // 63 bits set to 1\n lockId = lockId & mask63Bits;\n\n // Ensure non-zero (extremely unlikely but handle it)\n if (lockId === 0n) {\n lockId = 1n;\n }\n\n return lockId;\n }\n\n /**\n * Validate that a value is a valid PostgreSQL bigint\n * PostgreSQL bigint range: -9223372036854775808 to 9223372036854775807\n */\n private validateBigInt(value: bigint): boolean {\n const MIN_BIGINT = -9223372036854775808n;\n const MAX_BIGINT = 9223372036854775807n;\n return value >= MIN_BIGINT && value <= MAX_BIGINT;\n }\n\n /**\n * Detect if a connection string represents a real PostgreSQL database\n * (not PGLite, in-memory, or other non-PostgreSQL databases)\n */\n private isRealPostgresDatabase(connectionUrl: string): boolean {\n if (!connectionUrl?.trim()) return false;\n\n const url = connectionUrl.trim().toLowerCase();\n\n // Exclude non-PostgreSQL databases (check schemes first)\n const nonPgSchemes = ['mysql://', 'mysqli://', 'mariadb://', 'mongodb://', 'mongodb+srv://'];\n if (nonPgSchemes.some((s) => url.startsWith(s))) return false;\n\n // Always reject :memory: databases (even with postgres:// scheme, it's not valid)\n if (url.includes(':memory:')) return false;\n\n // PostgreSQL URL schemes - check BEFORE other exclude patterns\n // (a postgres:// URL may have \"sqlite\" in the database name, that's OK)\n const pgSchemes = [\n 'postgres://',\n 'postgresql://',\n 'postgis://',\n 'pgbouncer://',\n 'pgpool://',\n 'cockroach://',\n 'cockroachdb://',\n 'redshift://',\n 'timescaledb://',\n 'yugabyte://',\n ];\n if (pgSchemes.some((s) => url.startsWith(s))) return true;\n\n // Exclude PGLite, SQLite databases (only for non-postgres:// URLs)\n const excludePatterns = ['pglite', 'sqlite'];\n const urlBase = url.split('?')[0];\n if (excludePatterns.some((p) => url.includes(p))) return false;\n if (/\\.(db|sqlite|sqlite3)$/.test(urlBase)) return false;\n\n // Local PostgreSQL (localhost, 127.0.0.1, Docker service names)\n if (url.includes('localhost') || url.includes('127.0.0.1')) return true;\n\n // PostgreSQL connection params (libpq style)\n const connParams = [\n 'host=',\n 'dbname=',\n 'sslmode=',\n 'connect_timeout=',\n 'application_name=',\n 'user=',\n 'password=',\n 'port=',\n 'options=',\n 'sslcert=',\n 'sslkey=',\n 'sslrootcert=',\n 'fallback_application_name=',\n 'keepalives=',\n 'target_session_attrs=',\n ];\n if (connParams.some((p) => url.includes(p))) return true;\n\n // user@host format with postgres keyword or port\n if (url.includes('@') && (url.includes('postgres') || /:\\d{4,5}/.test(url))) return true;\n\n // Common PostgreSQL ports\n if (/:(5432|5433|5434|6432|8432|9999|25060|26257)\\b/.test(url)) return true;\n\n // Cloud providers\n const cloudPatterns = [\n // AWS\n 'amazonaws.com',\n '.rds.',\n // Azure\n 'azure.com',\n 'database.azure.com',\n // Google Cloud\n 'googleusercontent',\n 'cloudsql',\n // Supabase\n 'supabase',\n // Neon\n 'neon.tech',\n 'neon.build',\n // Railway\n 'railway.app',\n 'railway.internal',\n // Render\n 'render.com',\n 'onrender.com',\n // Heroku\n 'heroku',\n // TimescaleDB\n 'timescale',\n '.tsdb.cloud',\n // CockroachDB\n 'cockroachlabs',\n 'cockroachdb.cloud',\n '.crdb.io',\n // DigitalOcean\n 'digitalocean',\n 'db.ondigitalocean',\n 'do-user-',\n // Aiven\n 'aiven',\n // Crunchy Data\n 'crunchydata',\n // ElephantSQL\n 'elephantsql',\n // YugabyteDB\n 'yugabyte',\n // Scaleway\n 'scaleway',\n '.rdb.fr-par.scw.cloud',\n // Vercel Postgres\n 'vercel-storage',\n // PlanetScale\n 'psdb.cloud',\n // Xata\n 'xata.sh',\n // Fly.io\n 'fly.dev',\n 'fly.io',\n ];\n if (cloudPatterns.some((p) => url.includes(p))) return true;\n\n // IP:port patterns (IPv4 and IPv6)\n if (/\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}:\\d{1,5}/.test(url)) return true;\n if (/\\[[0-9a-f:]+\\](:\\d{1,5})?/i.test(connectionUrl)) return true;\n\n // host:port/database format (Docker Compose, etc.)\n if (/^[a-z0-9_.-]+:\\d{1,5}\\/[a-z0-9_-]+/i.test(connectionUrl)) return true;\n\n logger.debug(\n { src: 'plugin:sql', urlPreview: url.substring(0, 50) },\n 'Connection string did not match any PostgreSQL patterns'\n );\n return false;\n }\n\n /**\n * Initialize migration system - create necessary tables\n * @throws Error if table creation fails\n */\n async initialize(): Promise<void> {\n logger.info({ src: 'plugin:sql' }, 'Initializing migration system');\n await this.migrationTracker.ensureTables();\n logger.info({ src: 'plugin:sql' }, 'Migration system initialized');\n }\n\n /**\n * Run migrations for a plugin/schema\n * @param pluginName - Plugin identifier\n * @param schema - Drizzle schema object\n * @param options - Migration options (verbose, force, dryRun, allowDataLoss)\n * @throws Error if destructive migrations blocked or migration fails\n */\n async migrate(\n pluginName: string,\n schema: any,\n options: RuntimeMigrationOptions = {}\n ): Promise<void> {\n const lockId = this.getAdvisoryLockId(pluginName);\n\n // Validate lockId is within PostgreSQL bigint range\n if (!this.validateBigInt(lockId)) {\n throw new Error(`Invalid advisory lock ID generated for plugin ${pluginName}`);\n }\n\n let lockAcquired = false;\n\n try {\n logger.info({ src: 'plugin:sql', pluginName }, 'Starting migration for plugin');\n\n // Ensure migration tables exist\n await this.initialize();\n\n // Only use advisory locks for real PostgreSQL databases\n // Skip for PGLite or development databases\n const postgresUrl = process.env.POSTGRES_URL || process.env.DATABASE_URL || '';\n const isRealPostgres = this.isRealPostgresDatabase(postgresUrl);\n\n if (isRealPostgres) {\n try {\n logger.debug({ src: 'plugin:sql', pluginName }, 'Using PostgreSQL advisory locks');\n\n // Convert bigint to string for SQL query\n // The sql tagged template will properly parameterize this value\n const lockIdStr = lockId.toString();\n\n const lockResult = await this.db.execute(\n sql`SELECT pg_try_advisory_lock(CAST(${lockIdStr} AS bigint)) as acquired`\n );\n\n interface LockResultRow {\n acquired: boolean;\n }\n lockAcquired = getRow<LockResultRow>(lockResult)?.acquired === true;\n\n if (!lockAcquired) {\n logger.info(\n { src: 'plugin:sql', pluginName },\n 'Migration already in progress, waiting for lock'\n );\n\n // Wait for the lock (blocking call)\n await this.db.execute(sql`SELECT pg_advisory_lock(CAST(${lockIdStr} AS bigint))`);\n lockAcquired = true;\n\n logger.info({ src: 'plugin:sql', pluginName }, 'Lock acquired');\n } else {\n logger.debug(\n { src: 'plugin:sql', pluginName, lockId: lockIdStr },\n 'Advisory lock acquired'\n );\n }\n } catch (lockError) {\n // If advisory locks fail, log but continue\n // This might happen if the PostgreSQL version doesn't support advisory locks\n logger.warn(\n {\n src: 'plugin:sql',\n pluginName,\n error: lockError instanceof Error ? lockError.message : String(lockError),\n },\n 'Failed to acquire advisory lock, continuing without lock'\n );\n lockAcquired = false;\n }\n } else {\n // For PGLite or other development databases, skip advisory locks\n logger.debug(\n { src: 'plugin:sql' },\n 'Development database detected, skipping advisory locks'\n );\n }\n\n // Install required extensions\n // pgcrypto is only needed for real PostgreSQL (PGLite uses native gen_random_uuid)\n const extensions = isRealPostgres\n ? ['vector', 'fuzzystrmatch', 'pgcrypto']\n : ['vector', 'fuzzystrmatch'];\n await this.extensionManager.installRequiredExtensions(extensions);\n\n // Generate current snapshot from schema\n const currentSnapshot = await generateSnapshot(schema);\n\n // Ensure all schemas referenced in the snapshot exist\n await this.ensureSchemasExist(currentSnapshot);\n\n // Validate schema usage and warn about potential issues\n this.validateSchemaUsage(pluginName, currentSnapshot);\n\n const currentHash = hashSnapshot(currentSnapshot);\n\n // Check if we've already run this exact migration\n // This check happens AFTER acquiring the lock to handle concurrent scenarios\n // This is critical: if we had to wait for the lock (lockAcquired was initially false),\n // another process may have completed the migration while we were waiting\n // We MUST check regardless of whether lastMigration existed before\n const lastMigration = await this.migrationTracker.getLastMigration(pluginName);\n if (lastMigration && lastMigration.hash === currentHash) {\n logger.info(\n { src: 'plugin:sql', pluginName, hash: currentHash },\n 'No changes detected, skipping migration'\n );\n return;\n }\n\n // Load previous snapshot\n let previousSnapshot = await this.snapshotStorage.getLatestSnapshot(pluginName);\n\n // If no snapshot exists but tables exist in database, introspect them\n if (!previousSnapshot && Object.keys(currentSnapshot.tables).length > 0) {\n const hasExistingTables = await this.introspector.hasExistingTables(pluginName);\n\n if (hasExistingTables) {\n logger.info(\n { src: 'plugin:sql', pluginName },\n 'No snapshot found but tables exist in database, introspecting'\n );\n\n // Determine the schema name for introspection\n const schemaName = this.getExpectedSchemaName(pluginName);\n\n // Introspect the current database state\n const introspectedSnapshot = await this.introspector.introspectSchema(schemaName);\n\n // IMPORTANT: Filter the introspected snapshot to only include tables that are\n // defined in the current schema. This prevents tables from other plugins\n // (e.g., gamification tables in 'public' schema) from being marked as \"orphans\"\n // and scheduled for deletion.\n const expectedTableNames = new Set<string>();\n for (const tableKey of Object.keys(currentSnapshot.tables)) {\n const tableData = currentSnapshot.tables[tableKey] as any;\n const tableName = tableData.name || tableKey.split('.').pop();\n expectedTableNames.add(tableName);\n }\n\n // Filter introspected tables to only those in the current schema\n const filteredTables: any = {};\n for (const tableKey of Object.keys(introspectedSnapshot.tables)) {\n const tableData = introspectedSnapshot.tables[tableKey] as any;\n const tableName = tableData.name || tableKey.split('.').pop();\n if (expectedTableNames.has(tableName)) {\n filteredTables[tableKey] = tableData;\n } else {\n logger.debug(\n { src: 'plugin:sql', pluginName, tableName },\n 'Ignoring table from introspection (not in current schema)'\n );\n }\n }\n\n // Use filtered snapshot\n const filteredSnapshot = {\n ...introspectedSnapshot,\n tables: filteredTables,\n };\n\n // Only use the introspected snapshot if it has tables\n if (Object.keys(filteredSnapshot.tables).length > 0) {\n // Save this as the initial snapshot (idx: 0)\n await this.snapshotStorage.saveSnapshot(pluginName, 0, filteredSnapshot);\n\n // Update journal to record this initial state\n await this.journalStorage.updateJournal(\n pluginName,\n 0,\n `introspected_${Date.now()}`,\n true\n );\n\n // Record this as a migration\n const filteredHash = hashSnapshot(filteredSnapshot);\n await this.migrationTracker.recordMigration(pluginName, filteredHash, Date.now());\n\n logger.info(\n { src: 'plugin:sql', pluginName },\n 'Created initial snapshot from existing database'\n );\n\n // Set this as the previous snapshot for comparison\n previousSnapshot = filteredSnapshot;\n }\n }\n }\n\n // Check if there are actual changes\n if (!hasChanges(previousSnapshot, currentSnapshot)) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No schema changes');\n\n // For empty schemas, we still want to record the migration\n // to ensure idempotency and consistency\n if (!previousSnapshot && Object.keys(currentSnapshot.tables).length === 0) {\n logger.info({ src: 'plugin:sql', pluginName }, 'Recording empty schema');\n await this.migrationTracker.recordMigration(pluginName, currentHash, Date.now());\n const idx = await this.journalStorage.getNextIdx(pluginName);\n const tag = this.generateMigrationTag(idx, pluginName);\n await this.journalStorage.updateJournal(pluginName, idx, tag, true);\n await this.snapshotStorage.saveSnapshot(pluginName, idx, currentSnapshot);\n }\n\n return;\n }\n\n // Calculate diff\n const diff = await calculateDiff(previousSnapshot, currentSnapshot);\n\n // Check if diff has changes\n if (!hasDiffChanges(diff)) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No actionable changes');\n return;\n }\n\n // Check for potential data loss\n const dataLossCheck = checkForDataLoss(diff);\n\n if (dataLossCheck.hasDataLoss) {\n const isProduction = process.env.NODE_ENV === 'production';\n\n // Determine if destructive migrations are allowed\n // Priority: explicit options > environment variable\n const allowDestructive =\n options.force ||\n options.allowDataLoss ||\n process.env.ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS === 'true';\n\n if (!allowDestructive) {\n // Block the migration and provide clear instructions\n logger.error(\n {\n src: 'plugin:sql',\n pluginName,\n environment: isProduction ? 'PRODUCTION' : 'DEVELOPMENT',\n warnings: dataLossCheck.warnings,\n },\n 'Destructive migration blocked - set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true or use force option'\n );\n\n const errorMessage = isProduction\n ? `Destructive migration blocked in production for ${pluginName}. Set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true or use drizzle-kit.`\n : `Destructive migration blocked for ${pluginName}. Set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true to proceed.`;\n\n throw new Error(errorMessage);\n }\n\n // Log that we're proceeding with destructive operations\n if (dataLossCheck.requiresConfirmation) {\n logger.warn(\n { src: 'plugin:sql', pluginName, warnings: dataLossCheck.warnings },\n 'Proceeding with destructive migration'\n );\n }\n }\n\n // Generate SQL statements\n const sqlStatements = await generateMigrationSQL(previousSnapshot, currentSnapshot, diff);\n\n if (sqlStatements.length === 0) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No SQL statements to execute');\n return;\n }\n\n // Log what we're about to do\n logger.info(\n { src: 'plugin:sql', pluginName, statementCount: sqlStatements.length },\n 'Executing SQL statements'\n );\n if (options.verbose) {\n sqlStatements.forEach((stmt, i) => {\n logger.debug(\n { src: 'plugin:sql', statementIndex: i + 1, statement: stmt },\n 'SQL statement'\n );\n });\n }\n\n // Dry run mode - just log what would happen\n if (options.dryRun) {\n logger.info(\n { src: 'plugin:sql', pluginName, statements: sqlStatements },\n 'DRY RUN mode - not executing statements'\n );\n return;\n }\n\n // Execute migration in transaction\n await this.executeMigration(pluginName, currentSnapshot, currentHash, sqlStatements);\n\n logger.info({ src: 'plugin:sql', pluginName }, 'Migration completed successfully');\n\n // Return a success result\n return;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n pluginName,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Migration failed'\n );\n throw error;\n } finally {\n // Always release the advisory lock if we acquired it (only for real PostgreSQL)\n const postgresUrl = process.env.POSTGRES_URL || process.env.DATABASE_URL || '';\n const isRealPostgres = this.isRealPostgresDatabase(postgresUrl);\n\n if (lockAcquired && isRealPostgres) {\n try {\n // Convert bigint to string for SQL query (same as when acquiring)\n const lockIdStr = lockId.toString();\n await this.db.execute(sql`SELECT pg_advisory_unlock(CAST(${lockIdStr} AS bigint))`);\n logger.debug({ src: 'plugin:sql', pluginName }, 'Advisory lock released');\n } catch (unlockError) {\n logger.warn(\n {\n src: 'plugin:sql',\n pluginName,\n error: unlockError instanceof Error ? unlockError.message : String(unlockError),\n },\n 'Failed to release advisory lock'\n );\n }\n }\n }\n }\n\n /**\n * Execute migration in a transaction\n */\n private async executeMigration(\n pluginName: string,\n snapshot: SchemaSnapshot,\n hash: string,\n sqlStatements: string[]\n ): Promise<void> {\n let transactionStarted = false;\n\n try {\n // Start manual transaction\n await this.db.execute(sql`BEGIN`);\n transactionStarted = true;\n\n // Execute all SQL statements\n for (const stmt of sqlStatements) {\n logger.debug({ src: 'plugin:sql', statement: stmt }, 'Executing SQL statement');\n await this.db.execute(sql.raw(stmt));\n }\n\n // Get next index for journal\n const idx = await this.journalStorage.getNextIdx(pluginName);\n\n // Record migration\n await this.migrationTracker.recordMigration(pluginName, hash, Date.now());\n\n // Update journal\n const tag = this.generateMigrationTag(idx, pluginName);\n await this.journalStorage.updateJournal(\n pluginName,\n idx,\n tag,\n true // breakpoints\n );\n\n // Store snapshot\n await this.snapshotStorage.saveSnapshot(pluginName, idx, snapshot);\n\n // Commit the transaction\n await this.db.execute(sql`COMMIT`);\n\n logger.info({ src: 'plugin:sql', pluginName, tag }, 'Recorded migration');\n } catch (error) {\n // Rollback on error if transaction was started\n if (transactionStarted) {\n try {\n await this.db.execute(sql`ROLLBACK`);\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Migration failed, rolled back'\n );\n } catch (rollbackError) {\n logger.error(\n {\n src: 'plugin:sql',\n error: rollbackError instanceof Error ? rollbackError.message : String(rollbackError),\n },\n 'Failed to rollback transaction'\n );\n }\n }\n throw error;\n }\n }\n\n /**\n * Generate migration tag (like 0000_jazzy_shard)\n */\n private generateMigrationTag(idx: number, pluginName: string): string {\n // Generate a simple tag - in production, use Drizzle's word generation\n const prefix = idx.toString().padStart(4, '0');\n const timestamp = Date.now().toString(36);\n return `${prefix}_${pluginName}_${timestamp}`;\n }\n\n /**\n * Get migration status for a plugin\n * @param pluginName - Plugin identifier\n * @returns Migration history and current state\n */\n async getStatus(pluginName: string): Promise<{\n hasRun: boolean;\n lastMigration: any;\n journal: any;\n snapshots: number;\n }> {\n const lastMigration = await this.migrationTracker.getLastMigration(pluginName);\n const journal = await this.journalStorage.loadJournal(pluginName);\n const snapshots = await this.snapshotStorage.getAllSnapshots(pluginName);\n\n return {\n hasRun: !!lastMigration,\n lastMigration,\n journal,\n snapshots: snapshots.length,\n };\n }\n\n /**\n * Reset migrations for a plugin (dangerous - for development only)\n * @param pluginName - Plugin identifier\n * @warning Deletes all migration history - use only in development\n */\n async reset(pluginName: string): Promise<void> {\n logger.warn({ src: 'plugin:sql', pluginName }, 'Resetting migrations');\n\n await this.db.execute(\n sql`DELETE FROM migrations._migrations WHERE plugin_name = ${pluginName}`\n );\n await this.db.execute(sql`DELETE FROM migrations._journal WHERE plugin_name = ${pluginName}`);\n await this.db.execute(sql`DELETE FROM migrations._snapshots WHERE plugin_name = ${pluginName}`);\n\n logger.warn({ src: 'plugin:sql', pluginName }, 'Reset complete');\n }\n\n /**\n * Check if a migration would cause data loss without executing it\n * @param pluginName - Plugin identifier\n * @param schema - Drizzle schema to check\n * @returns Data loss analysis or null if no changes\n */\n async checkMigration(pluginName: string, schema: any): Promise<DataLossCheck | null> {\n try {\n logger.info({ src: 'plugin:sql', pluginName }, 'Checking migration');\n\n // Generate current snapshot from schema\n const currentSnapshot = await generateSnapshot(schema);\n\n // Load previous snapshot\n const previousSnapshot = await this.snapshotStorage.getLatestSnapshot(pluginName);\n\n // Check if there are changes\n if (!hasChanges(previousSnapshot, currentSnapshot)) {\n logger.info({ src: 'plugin:sql', pluginName }, 'No changes detected');\n return null;\n }\n\n // Calculate diff\n const diff = await calculateDiff(previousSnapshot, currentSnapshot);\n\n // Check for data loss\n const dataLossCheck = checkForDataLoss(diff);\n\n if (dataLossCheck.hasDataLoss) {\n logger.warn({ src: 'plugin:sql', pluginName }, 'Migration would cause data loss');\n } else {\n logger.info({ src: 'plugin:sql', pluginName }, 'Migration is safe (no data loss)');\n }\n\n return dataLossCheck;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n pluginName,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to check migration'\n );\n throw error;\n }\n }\n}\n",
23
- "export { RuntimeMigrator } from './runtime-migrator';\nexport * from './types';\n\n// Storage exports (if needed for advanced usage)\nexport { MigrationTracker } from './storage/migration-tracker';\nexport { JournalStorage } from './storage/journal-storage';\nexport { SnapshotStorage } from './storage/snapshot-storage';\n\n// Drizzle adapter exports (if needed for extensions)\nexport {\n generateSnapshot,\n hashSnapshot,\n createEmptySnapshot,\n hasChanges,\n} from './drizzle-adapters/snapshot-generator';\n\nexport { calculateDiff, hasDiffChanges, type SchemaDiff } from './drizzle-adapters/diff-calculator';\n\nexport {\n generateMigrationSQL,\n generateRenameTableSQL,\n generateRenameColumnSQL,\n} from './drizzle-adapters/sql-generator';\n",
24
- "import { logger, type IDatabaseAdapter } from '@elizaos/core';\nimport { sql } from 'drizzle-orm';\nimport { getDb } from './types';\n\n/**\n * TEMPORARY MIGRATION: pre-1.6.5 → 1.6.5+ schema migration\n *\n * This migration runs automatically on startup and is idempotent.\n * It handles the migration from Owner RLS to Server RLS + Entity RLS, including:\n * - Disabling old RLS policies temporarily\n * - Renaming server_id → message_server_id in channels, worlds, rooms\n * - Converting TEXT → UUID where needed\n * - Dropping old server_id columns for RLS\n * - Cleaning up indexes\n *\n * @param adapter - Database adapter\n */\nexport async function migrateToEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n // Detect database type - skip PostgreSQL-specific migrations for SQLite\n try {\n await db.execute(sql`SELECT 1 FROM pg_tables LIMIT 1`);\n } catch {\n // Not PostgreSQL (likely SQLite)\n logger.debug('[Migration] ⊘ Not PostgreSQL, skipping PostgreSQL-specific migrations');\n return;\n }\n\n // Check if schema migration has already been completed\n // We use the presence of snake_case columns as a marker\n let schemaAlreadyMigrated = false;\n try {\n const migrationCheck = await db.execute(sql`\n SELECT column_name FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'rooms'\n AND column_name = 'agent_id'\n `);\n\n if (migrationCheck.rows && migrationCheck.rows.length > 0) {\n // Migration already completed - rooms.agent_id exists (snake_case)\n schemaAlreadyMigrated = true;\n logger.debug('[Migration] ⊘ Schema already migrated (snake_case columns exist)');\n }\n } catch {\n // Table might not exist yet, continue with migration\n logger.debug('[Migration] → rooms table not found, will be created by RuntimeMigrator');\n return; // Let RuntimeMigrator create fresh tables\n }\n\n // If schema is already migrated, check if we need to clean up RLS\n // Only disable RLS if ENABLE_DATA_ISOLATION is NOT true (user disabled isolation)\n // If ENABLE_DATA_ISOLATION=true, keep RLS as-is - migration-service.ts will ensure proper config\n if (schemaAlreadyMigrated) {\n const dataIsolationEnabled = process.env.ENABLE_DATA_ISOLATION === 'true';\n\n if (dataIsolationEnabled) {\n // RLS should stay enabled - no need to disable/re-enable cycle\n // Note: migration-service.ts will ensure RLS is properly configured after this\n // via applyRLSToNewTables() and applyEntityRLSToAllTables() which are idempotent\n logger.debug('[Migration] ⊘ Schema already migrated, RLS enabled - nothing to do');\n return;\n }\n\n // User disabled data isolation - clean up RLS if it was previously enabled\n logger.debug('[Migration] → Schema migrated but RLS disabled, cleaning up...');\n\n try {\n const tablesWithRls = await db.execute(sql`\n SELECT c.relname as tablename\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = 'public'\n AND c.relkind = 'r'\n AND c.relrowsecurity = true\n ORDER BY c.relname\n `);\n\n if (tablesWithRls.rows && tablesWithRls.rows.length > 0) {\n for (const row of tablesWithRls.rows) {\n const tableName = row.tablename as string;\n try {\n await db.execute(sql.raw(`ALTER TABLE \"${tableName}\" DISABLE ROW LEVEL SECURITY`));\n } catch {\n // Ignore errors\n }\n }\n logger.debug(`[Migration] ✓ RLS cleanup completed (${tablesWithRls.rows.length} tables)`);\n } else {\n logger.debug('[Migration] ⊘ No tables with RLS to clean up');\n }\n } catch {\n logger.debug('[Migration] ⊘ Could not perform RLS cleanup');\n }\n\n return;\n }\n\n logger.info('[Migration] Starting pre-1.6.5 → 1.6.5+ schema migration...');\n\n try {\n // Clear RuntimeMigrator snapshot cache to force fresh introspection\n // This ensures the snapshot matches the current database state after our migrations\n logger.debug('[Migration] → Clearing RuntimeMigrator snapshot cache...');\n try {\n await db.execute(\n sql`DELETE FROM migrations._snapshots WHERE plugin_name = '@elizaos/plugin-sql'`\n );\n logger.debug('[Migration] ✓ Snapshot cache cleared');\n } catch (error) {\n // If migrations schema doesn't exist yet, that's fine - no cache to clear\n logger.debug('[Migration] ⊘ No snapshot cache to clear (migrations schema not yet created)');\n }\n\n // Disable RLS only on tables that have it enabled\n // RLS will be re-implemented properly later\n logger.debug('[Migration] → Checking for Row Level Security to disable...');\n try {\n const tablesWithRls = await db.execute(sql`\n SELECT c.relname as tablename\n FROM pg_class c\n JOIN pg_namespace n ON n.oid = c.relnamespace\n WHERE n.nspname = 'public'\n AND c.relkind = 'r'\n AND c.relrowsecurity = true\n ORDER BY c.relname\n `);\n\n if (tablesWithRls.rows && tablesWithRls.rows.length > 0) {\n for (const row of tablesWithRls.rows) {\n const tableName = row.tablename as string;\n try {\n await db.execute(sql.raw(`ALTER TABLE \"${tableName}\" DISABLE ROW LEVEL SECURITY`));\n logger.debug(`[Migration] ✓ Disabled RLS on ${tableName}`);\n } catch (error) {\n logger.debug(`[Migration] ⊘ Could not disable RLS on ${tableName}`);\n }\n }\n } else {\n logger.debug('[Migration] ⊘ No tables with RLS enabled');\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check RLS (may not have permissions)');\n }\n\n // Special handling for tables where serverId/server_id needs to become message_server_id\n // v1.6.4 had: rooms.serverId (TEXT camelCase), worlds.serverId (TEXT camelCase), channels.server_id (UUID)\n // Current: message_server_id (UUID) in all tables\n //\n // STRATEGY: Rename serverId/server_id to message_server_id preserving data\n logger.debug('[Migration] → Handling serverId/server_id → message_server_id migrations...');\n\n const tablesToMigrate = ['channels', 'worlds', 'rooms'];\n\n for (const tableName of tablesToMigrate) {\n try {\n // Check for both camelCase (serverId) and snake_case (server_id) columns\n const columnsResult = await db.execute(sql`\n SELECT column_name, data_type, is_nullable\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = ${tableName}\n AND column_name IN ('server_id', 'serverId', 'message_server_id')\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const serverIdSnake = columns.find((c: any) => c.column_name === 'server_id');\n const serverIdCamel = columns.find((c: any) => c.column_name === 'serverId');\n const messageServerId = columns.find((c: any) => c.column_name === 'message_server_id');\n\n // Use whichever old column exists (prefer snake_case for channels)\n const serverId = serverIdSnake || serverIdCamel;\n const oldColumnName = serverIdSnake ? 'server_id' : 'serverId';\n\n if (serverId && !messageServerId) {\n // Old column exists → rename it to message_server_id\n logger.debug(\n `[Migration] → Renaming ${tableName}.${oldColumnName} to message_server_id...`\n );\n await db.execute(\n sql.raw(\n `ALTER TABLE \"${tableName}\" RENAME COLUMN \"${oldColumnName}\" TO \"message_server_id\"`\n )\n );\n logger.debug(`[Migration] ✓ Renamed ${tableName}.${oldColumnName} → message_server_id`);\n\n // If the column was text, try to convert to UUID (if data is UUID-compatible)\n if (serverId.data_type === 'text') {\n // CRITICAL: Drop DEFAULT constraint before type conversion\n // This prevents \"default for column cannot be cast automatically\" errors\n // Wrap in separate try-catch to ensure we continue even if no default exists\n try {\n logger.debug(\n `[Migration] → Dropping DEFAULT constraint on ${tableName}.message_server_id...`\n );\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" ALTER COLUMN \"message_server_id\" DROP DEFAULT`)\n );\n logger.debug(`[Migration] ✓ Dropped DEFAULT constraint`);\n } catch {\n logger.debug(\n `[Migration] ⊘ No DEFAULT constraint to drop on ${tableName}.message_server_id`\n );\n }\n\n try {\n logger.debug(\n `[Migration] → Converting ${tableName}.message_server_id from text to uuid...`\n );\n // Use robust conversion: valid UUIDs are cast directly, others get md5 hash\n // This handles: empty strings, non-UUID text, uppercase UUIDs, NULL values\n await db.execute(\n sql.raw(`\n ALTER TABLE \"${tableName}\"\n ALTER COLUMN \"message_server_id\" TYPE uuid\n USING CASE\n WHEN \"message_server_id\" IS NULL THEN NULL\n WHEN \"message_server_id\" = '' THEN NULL\n WHEN \"message_server_id\" ~ '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'\n THEN \"message_server_id\"::uuid\n ELSE md5(\"message_server_id\")::uuid\n END\n `)\n );\n logger.debug(`[Migration] ✓ Converted ${tableName}.message_server_id to uuid`);\n } catch (convertError) {\n logger.warn(\n `[Migration] ⚠️ Could not convert ${tableName}.message_server_id to uuid: ${convertError}`\n );\n }\n }\n\n // If the column should be NOT NULL but has NULLs, we need to handle that\n // For channels, it's NOT NULL in the new schema\n if (tableName === 'channels') {\n const nullCountResult = await db.execute(\n sql.raw(\n `SELECT COUNT(*) as count FROM \"${tableName}\" WHERE \"message_server_id\" IS NULL`\n )\n );\n const nullCount = nullCountResult.rows?.[0]?.count as string | undefined;\n if (nullCount && parseInt(nullCount, 10) > 0) {\n logger.warn(\n `[Migration] ⚠️ ${tableName} has ${nullCount} rows with NULL message_server_id - these will be deleted`\n );\n await db.execute(\n sql.raw(`DELETE FROM \"${tableName}\" WHERE \"message_server_id\" IS NULL`)\n );\n logger.debug(\n `[Migration] ✓ Deleted ${nullCount} rows with NULL message_server_id from ${tableName}`\n );\n }\n\n // Make it NOT NULL\n logger.debug(`[Migration] → Making ${tableName}.message_server_id NOT NULL...`);\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" ALTER COLUMN \"message_server_id\" SET NOT NULL`)\n );\n logger.debug(`[Migration] ✓ Set ${tableName}.message_server_id NOT NULL`);\n }\n } else if (serverId && messageServerId) {\n // Both exist → just drop the old column\n logger.debug(`[Migration] → ${tableName} has both columns, dropping ${oldColumnName}...`);\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" DROP COLUMN \"${oldColumnName}\" CASCADE`)\n );\n logger.debug(`[Migration] ✓ Dropped ${tableName}.${oldColumnName}`);\n } else if (!serverId && messageServerId) {\n // Only message_server_id exists - check if it needs type conversion from TEXT to UUID\n // This handles idempotency when migration partially ran before rollback\n if (messageServerId.data_type === 'text') {\n logger.debug(\n `[Migration] → ${tableName}.message_server_id exists but is TEXT, needs UUID conversion...`\n );\n\n // CRITICAL: Drop DEFAULT constraint before type conversion\n // This prevents \"default for column cannot be cast automatically\" errors\n logger.debug(\n `[Migration] → Dropping DEFAULT constraint on ${tableName}.message_server_id...`\n );\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" ALTER COLUMN \"message_server_id\" DROP DEFAULT`)\n );\n logger.debug(`[Migration] ✓ Dropped DEFAULT constraint`);\n\n // Convert TEXT to UUID using MD5 hash for non-UUID text values\n // This creates deterministic UUIDs from text values, preserving data\n logger.debug(\n `[Migration] → Converting ${tableName}.message_server_id from text to uuid (generating UUIDs from text)...`\n );\n await db.execute(\n sql.raw(`\n ALTER TABLE \"${tableName}\"\n ALTER COLUMN \"message_server_id\" TYPE uuid\n USING CASE\n WHEN \"message_server_id\" ~ '^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$'\n THEN \"message_server_id\"::uuid\n ELSE md5(\"message_server_id\")::uuid\n END\n `)\n );\n logger.debug(`[Migration] ✓ Converted ${tableName}.message_server_id to uuid`);\n } else {\n logger.debug(`[Migration] ⊘ ${tableName}.message_server_id already UUID, skipping`);\n }\n } else {\n logger.debug(`[Migration] ⊘ ${tableName} already migrated, skipping`);\n }\n } catch (error) {\n logger.warn(`[Migration] ⚠️ Error migrating ${tableName}.server_id: ${error}`);\n }\n }\n\n // Drop ALL remaining server_id columns (will be re-added by RLS after migrations)\n // This prevents RuntimeMigrator from seeing them and trying to drop them\n // EXCEPT for tables where server_id is part of the schema (like agents, server_agents)\n logger.debug('[Migration] → Dropping all remaining RLS-managed server_id columns...');\n try {\n const serverIdColumnsResult = await db.execute(sql`\n SELECT table_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND column_name = 'server_id'\n AND table_name NOT IN (\n 'servers', -- server_id is the primary key\n 'agents', -- server_id is in the schema (for RLS)\n 'channels', -- already handled above\n 'worlds', -- already handled above\n 'rooms', -- already handled above\n 'server_agents', -- server_id is part of composite key\n 'drizzle_migrations',\n '__drizzle_migrations'\n )\n ORDER BY table_name\n `);\n\n const tablesToClean = serverIdColumnsResult.rows || [];\n logger.debug(`[Migration] → Found ${tablesToClean.length} tables with server_id columns`);\n\n for (const row of tablesToClean) {\n const tableName = row.table_name as string;\n try {\n await db.execute(\n sql.raw(`ALTER TABLE \"${tableName}\" DROP COLUMN IF EXISTS server_id CASCADE`)\n );\n logger.debug(`[Migration] ✓ Dropped server_id from ${tableName}`);\n } catch (error) {\n logger.debug(`[Migration] ⊘ Could not drop server_id from ${tableName}`);\n }\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not drop server_id columns (may not have permissions)');\n }\n\n // Special handling for agents table: rename owner_id → server_id\n // v1.6.4 had owner_id, v1.6.5 changed it to server_id\n logger.debug('[Migration] → Checking agents.owner_id → server_id rename...');\n try {\n const agentsColumnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'agents'\n AND column_name IN ('owner_id', 'server_id')\n ORDER BY column_name\n `);\n\n const agentsColumns = agentsColumnsResult.rows || [];\n const hasOwnerId = agentsColumns.some((c: any) => c.column_name === 'owner_id');\n const hasServerId = agentsColumns.some((c: any) => c.column_name === 'server_id');\n\n if (hasOwnerId && !hasServerId) {\n // Rename owner_id → server_id\n logger.debug('[Migration] → Renaming agents.owner_id to server_id...');\n await db.execute(sql.raw(`ALTER TABLE \"agents\" RENAME COLUMN \"owner_id\" TO \"server_id\"`));\n logger.debug('[Migration] ✓ Renamed agents.owner_id → server_id');\n } else if (hasOwnerId && hasServerId) {\n // Both exist - drop owner_id (data should be in server_id)\n logger.debug('[Migration] → Both owner_id and server_id exist, dropping owner_id...');\n await db.execute(sql.raw(`ALTER TABLE \"agents\" DROP COLUMN \"owner_id\" CASCADE`));\n logger.debug('[Migration] ✓ Dropped agents.owner_id');\n } else {\n logger.debug('[Migration] ⊘ agents table already has server_id (or no owner_id), skipping');\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check/migrate agents.owner_id');\n }\n\n // Migrate data from obsolete 'owners' table to 'servers' (if owners exists)\n // v1.6.4 used owners table, v1.6.5+ uses servers table\n logger.debug('[Migration] → Checking for owners → servers data migration...');\n try {\n const ownersTableResult = await db.execute(sql`\n SELECT table_name\n FROM information_schema.tables\n WHERE table_schema = 'public'\n AND table_name = 'owners'\n `);\n\n if (ownersTableResult.rows && ownersTableResult.rows.length > 0) {\n // First, ensure servers table exists\n logger.debug('[Migration] → Ensuring servers table exists...');\n await db.execute(\n sql.raw(`\n CREATE TABLE IF NOT EXISTS \"servers\" (\n \"id\" uuid PRIMARY KEY,\n \"created_at\" timestamp with time zone DEFAULT now() NOT NULL,\n \"updated_at\" timestamp with time zone DEFAULT now() NOT NULL\n )\n `)\n );\n\n // Migrate data from owners to servers (if any)\n logger.debug('[Migration] → Migrating owners data to servers...');\n await db.execute(\n sql.raw(`\n INSERT INTO \"servers\" (\"id\", \"created_at\", \"updated_at\")\n SELECT \"id\", COALESCE(\"created_at\", now()), COALESCE(\"updated_at\", now())\n FROM \"owners\"\n ON CONFLICT (\"id\") DO NOTHING\n `)\n );\n logger.debug('[Migration] ✓ Migrated owners data to servers');\n\n // Now safe to drop owners table\n logger.debug('[Migration] → Dropping obsolete owners table...');\n await db.execute(sql.raw(`DROP TABLE IF EXISTS \"owners\" CASCADE`));\n logger.debug('[Migration] ✓ Dropped obsolete owners table');\n } else {\n logger.debug('[Migration] ⊘ owners table not found, skipping');\n }\n } catch (error) {\n logger.warn(`[Migration] ⚠️ Could not migrate owners → servers: ${error}`);\n }\n\n // Special handling for server_agents → message_server_agents rename\n // This aligns with the server_id → message_server_id naming convention\n logger.debug('[Migration] → Checking server_agents table rename...');\n try {\n const tablesResult = await db.execute(sql`\n SELECT table_name\n FROM information_schema.tables\n WHERE table_schema = 'public'\n AND table_name IN ('server_agents', 'message_server_agents')\n ORDER BY table_name\n `);\n\n const tables = tablesResult.rows || [];\n const hasServerAgents = tables.some((t: any) => t.table_name === 'server_agents');\n const hasMessageServerAgents = tables.some(\n (t: any) => t.table_name === 'message_server_agents'\n );\n\n if (hasServerAgents && !hasMessageServerAgents) {\n // Rename server_agents → message_server_agents\n logger.debug('[Migration] → Renaming server_agents to message_server_agents...');\n await db.execute(sql.raw(`ALTER TABLE \"server_agents\" RENAME TO \"message_server_agents\"`));\n logger.debug('[Migration] ✓ Renamed server_agents → message_server_agents');\n\n // Now rename server_id column → message_server_id\n logger.debug(\n '[Migration] → Renaming message_server_agents.server_id to message_server_id...'\n );\n await db.execute(\n sql.raw(\n `ALTER TABLE \"message_server_agents\" RENAME COLUMN \"server_id\" TO \"message_server_id\"`\n )\n );\n logger.debug('[Migration] ✓ Renamed message_server_agents.server_id → message_server_id');\n } else if (!hasServerAgents && !hasMessageServerAgents) {\n // Neither table exists - RuntimeMigrator will create message_server_agents\n logger.debug('[Migration] ⊘ No server_agents table to migrate');\n } else if (hasMessageServerAgents) {\n // Check if it has the columns and rename if needed\n logger.debug('[Migration] → Checking message_server_agents columns...');\n const columnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'message_server_agents'\n AND column_name IN ('server_id', 'message_server_id')\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const hasServerId = columns.some((c: any) => c.column_name === 'server_id');\n const hasMessageServerId = columns.some((c: any) => c.column_name === 'message_server_id');\n\n if (hasServerId && !hasMessageServerId) {\n // Rename server_id → message_server_id\n logger.debug(\n '[Migration] → Renaming message_server_agents.server_id to message_server_id...'\n );\n await db.execute(\n sql.raw(\n `ALTER TABLE \"message_server_agents\" RENAME COLUMN \"server_id\" TO \"message_server_id\"`\n )\n );\n logger.debug('[Migration] ✓ Renamed message_server_agents.server_id → message_server_id');\n } else if (!hasServerId && !hasMessageServerId) {\n // Table exists but doesn't have either column - truncate it\n logger.debug(\n '[Migration] → message_server_agents exists without required columns, truncating...'\n );\n await db.execute(sql`TRUNCATE TABLE message_server_agents CASCADE`);\n logger.debug('[Migration] ✓ Truncated message_server_agents');\n } else {\n logger.debug('[Migration] ⊘ message_server_agents already has correct schema');\n }\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check/migrate server_agents table');\n }\n\n // Special handling for channel_participants: rename userId → entityId\n // This handles the migration from the old userId column to the new entityId column\n logger.debug('[Migration] → Checking channel_participants table...');\n try {\n const columnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = 'channel_participants'\n AND column_name IN ('user_id', 'entity_id')\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const hasUserId = columns.some((c: any) => c.column_name === 'user_id');\n const hasEntityId = columns.some((c: any) => c.column_name === 'entity_id');\n\n if (hasUserId && !hasEntityId) {\n // Rename user_id → entity_id\n logger.debug('[Migration] → Renaming channel_participants.user_id to entity_id...');\n await db.execute(\n sql.raw(`ALTER TABLE \"channel_participants\" RENAME COLUMN \"user_id\" TO \"entity_id\"`)\n );\n logger.debug('[Migration] ✓ Renamed channel_participants.user_id → entity_id');\n } else if (!hasUserId && !hasEntityId) {\n // Table exists but has neither column - truncate it so RuntimeMigrator can add entity_id\n logger.debug(\n '[Migration] → channel_participants exists without entity_id or user_id, truncating...'\n );\n await db.execute(sql`TRUNCATE TABLE channel_participants CASCADE`);\n logger.debug('[Migration] ✓ Truncated channel_participants');\n } else {\n logger.debug('[Migration] ⊘ channel_participants already has entity_id column');\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not check/migrate channel_participants');\n }\n\n // Drop ALL regular indexes (not PK or unique constraints) to avoid conflicts\n // The RuntimeMigrator will recreate them based on the schema\n logger.debug('[Migration] → Discovering and dropping all regular indexes...');\n try {\n const indexesResult = await db.execute(sql`\n SELECT i.relname AS index_name\n FROM pg_index idx\n JOIN pg_class i ON i.oid = idx.indexrelid\n JOIN pg_class c ON c.oid = idx.indrelid\n JOIN pg_namespace n ON n.oid = c.relnamespace\n LEFT JOIN pg_constraint con ON con.conindid = idx.indexrelid\n WHERE n.nspname = 'public'\n AND NOT idx.indisprimary -- Not a primary key\n AND con.contype IS NULL -- Not a constraint (unique, etc)\n ORDER BY i.relname\n `);\n\n const indexesToDrop = indexesResult.rows || [];\n logger.debug(`[Migration] → Found ${indexesToDrop.length} indexes to drop`);\n\n for (const row of indexesToDrop) {\n const indexName = row.index_name as string;\n try {\n await db.execute(sql.raw(`DROP INDEX IF EXISTS \"${indexName}\"`));\n logger.debug(`[Migration] ✓ Dropped index ${indexName}`);\n } catch (error) {\n logger.debug(`[Migration] ⊘ Could not drop index ${indexName}`);\n }\n }\n } catch (error) {\n logger.debug('[Migration] ⊘ Could not drop indexes (may not have permissions)');\n }\n\n // =========================================================================\n // SMOOTH MIGRATION: camelCase → snake_case column renames\n // This ensures a non-destructive transition from v1.6.4 to v1.6.5+\n // All data is preserved through RENAME COLUMN operations\n // This section can be removed once all deployments have been migrated\n // =========================================================================\n logger.debug('[Migration] → Starting camelCase → snake_case column renames...');\n\n const columnRenames = [\n // rooms table\n { table: 'rooms', from: 'agentId', to: 'agent_id' },\n { table: 'rooms', from: 'worldId', to: 'world_id' },\n { table: 'rooms', from: 'channelId', to: 'channel_id' },\n { table: 'rooms', from: 'createdAt', to: 'created_at' },\n\n // worlds table\n { table: 'worlds', from: 'agentId', to: 'agent_id' },\n { table: 'worlds', from: 'createdAt', to: 'created_at' },\n\n // memories table\n { table: 'memories', from: 'createdAt', to: 'created_at' },\n { table: 'memories', from: 'entityId', to: 'entity_id' },\n { table: 'memories', from: 'agentId', to: 'agent_id' },\n { table: 'memories', from: 'roomId', to: 'room_id' },\n { table: 'memories', from: 'worldId', to: 'world_id' },\n\n // components table\n { table: 'components', from: 'entityId', to: 'entity_id' },\n { table: 'components', from: 'agentId', to: 'agent_id' },\n { table: 'components', from: 'roomId', to: 'room_id' },\n { table: 'components', from: 'worldId', to: 'world_id' },\n { table: 'components', from: 'sourceEntityId', to: 'source_entity_id' },\n { table: 'components', from: 'createdAt', to: 'created_at' },\n\n // participants table\n { table: 'participants', from: 'entityId', to: 'entity_id' },\n { table: 'participants', from: 'roomId', to: 'room_id' },\n { table: 'participants', from: 'agentId', to: 'agent_id' },\n { table: 'participants', from: 'roomState', to: 'room_state' },\n { table: 'participants', from: 'createdAt', to: 'created_at' },\n\n // relationships table\n { table: 'relationships', from: 'sourceEntityId', to: 'source_entity_id' },\n { table: 'relationships', from: 'targetEntityId', to: 'target_entity_id' },\n { table: 'relationships', from: 'agentId', to: 'agent_id' },\n { table: 'relationships', from: 'createdAt', to: 'created_at' },\n\n // logs table\n { table: 'logs', from: 'entityId', to: 'entity_id' },\n { table: 'logs', from: 'roomId', to: 'room_id' },\n { table: 'logs', from: 'createdAt', to: 'created_at' },\n\n // tasks table\n { table: 'tasks', from: 'roomId', to: 'room_id' },\n { table: 'tasks', from: 'worldId', to: 'world_id' },\n { table: 'tasks', from: 'entityId', to: 'entity_id' },\n { table: 'tasks', from: 'createdAt', to: 'created_at' },\n { table: 'tasks', from: 'updatedAt', to: 'updated_at' },\n\n // agents table\n { table: 'agents', from: 'createdAt', to: 'created_at' },\n { table: 'agents', from: 'updatedAt', to: 'updated_at' },\n\n // entities table\n { table: 'entities', from: 'agentId', to: 'agent_id' },\n { table: 'entities', from: 'createdAt', to: 'created_at' },\n\n // embeddings table\n { table: 'embeddings', from: 'memoryId', to: 'memory_id' },\n { table: 'embeddings', from: 'createdAt', to: 'created_at' },\n\n // cache table\n { table: 'cache', from: 'agentId', to: 'agent_id' },\n { table: 'cache', from: 'createdAt', to: 'created_at' },\n { table: 'cache', from: 'expiresAt', to: 'expires_at' },\n ];\n\n for (const rename of columnRenames) {\n try {\n // Check if table exists first\n const tableExistsResult = await db.execute(sql`\n SELECT 1 FROM information_schema.tables\n WHERE table_schema = 'public' AND table_name = ${rename.table}\n `);\n\n if (!tableExistsResult.rows || tableExistsResult.rows.length === 0) {\n // Table doesn't exist yet, skip\n continue;\n }\n\n // Check which columns exist\n const columnsResult = await db.execute(sql`\n SELECT column_name\n FROM information_schema.columns\n WHERE table_schema = 'public'\n AND table_name = ${rename.table}\n AND column_name IN (${rename.from}, ${rename.to})\n ORDER BY column_name\n `);\n\n const columns = columnsResult.rows || [];\n const hasOldColumn = columns.some((c: any) => c.column_name === rename.from);\n const hasNewColumn = columns.some((c: any) => c.column_name === rename.to);\n\n if (hasOldColumn && !hasNewColumn) {\n // Old column exists, new doesn't → RENAME (preserves data!)\n logger.debug(`[Migration] → Renaming ${rename.table}.${rename.from} to ${rename.to}...`);\n await db.execute(\n sql.raw(\n `ALTER TABLE \"${rename.table}\" RENAME COLUMN \"${rename.from}\" TO \"${rename.to}\"`\n )\n );\n logger.debug(`[Migration] ✓ Renamed ${rename.table}.${rename.from} → ${rename.to}`);\n } else if (hasOldColumn && hasNewColumn) {\n // Both exist → drop old (data should be in new already)\n logger.debug(\n `[Migration] → Both columns exist, dropping ${rename.table}.${rename.from}...`\n );\n await db.execute(\n sql.raw(`ALTER TABLE \"${rename.table}\" DROP COLUMN \"${rename.from}\" CASCADE`)\n );\n logger.debug(`[Migration] ✓ Dropped ${rename.table}.${rename.from}`);\n }\n // If only new column exists or neither exists, nothing to do\n } catch (error) {\n // Log but continue - table might not exist yet or column might already be renamed\n logger.debug(`[Migration] ⊘ Could not process ${rename.table}.${rename.from}: ${error}`);\n }\n }\n\n logger.debug('[Migration] ✓ Completed camelCase → snake_case column renames');\n\n logger.info('[Migration] ✓ Migration complete - pre-1.6.5 → 1.6.5+ schema migration finished');\n } catch (error) {\n // Re-throw errors to prevent RuntimeMigrator from running on broken state\n logger.error('[Migration] Migration failed:', String(error));\n throw error;\n }\n}\n",
25
- "import { logger, validateUuid, type IDatabaseAdapter } from '@elizaos/core';\nimport { sql, eq } from 'drizzle-orm';\nimport { serverTable } from './schema/server';\nimport { agentTable } from './schema/agent';\nimport { getDb } from './types';\n\n/**\n * PostgreSQL Row-Level Security (RLS) for Multi-Server and Entity Isolation\n *\n * This module provides two layers of database-level security:\n *\n * 1. **Server RLS** - Multi-server isolation\n * - Isolates data between different ElizaOS server instances\n * - Uses `server_id` column added dynamically to all tables\n * - Server context set via `SET LOCAL app.server_id` (transaction-scoped)\n * - Prevents data leakage between different deployments/environments\n *\n * 2. **Entity RLS** - User/agent-level privacy isolation\n * - Isolates data between different users (Clients (plugins/API) users)\n * - Uses `entity_id`, `author_id`, or joins via `participants` table\n * - Entity context set via `SET LOCAL app.entity_id` (transaction-scoped)\n * - Provides DM privacy and multi-user isolation within a server\n *\n * CRITICAL SECURITY REQUIREMENTS:\n * - RLS policies DO NOT apply to PostgreSQL superuser accounts\n * - Use a REGULAR (non-superuser) database user\n * - Grant only necessary permissions (CREATE, SELECT, INSERT, UPDATE, DELETE)\n * - NEVER use the 'postgres' superuser or any superuser account\n * - Superusers bypass ALL RLS policies by design, defeating the isolation mechanism\n *\n * ARCHITECTURE:\n * - Server RLS: Uses `SET LOCAL app.server_id` (set per transaction)\n * - Entity RLS: Uses `SET LOCAL app.entity_id` (set per transaction)\n * - Both contexts are set in withIsolationContext() at transaction start\n * - Uses industry-standard pattern: SET LOCAL + current_setting()\n * - Works with both pg and @neondatabase/serverless drivers\n * - Policies use FORCE ROW LEVEL SECURITY to enforce even for table owners\n * - Automatic index creation for performance (`server_id`, `entity_id`, `room_id`)\n *\n * @module rls\n */\n\n/**\n * Install PostgreSQL functions required for Server RLS and Entity RLS\n *\n * This function creates all necessary PostgreSQL stored procedures for both\n * Server RLS (multi-server isolation) and Entity RLS (user privacy isolation).\n *\n * **Server RLS Functions Created:**\n * - `current_server_id()` - Returns server UUID from `application_name`\n * - `add_server_isolation(schema, table)` - Adds Server RLS to a single table\n * - `apply_rls_to_all_tables()` - Applies Server RLS to all eligible tables\n *\n * **Entity RLS Functions Created:**\n * - `current_entity_id()` - Returns entity UUID from `app.entity_id` session variable\n * - `add_entity_isolation(schema, table)` - Adds Entity RLS to a single table\n * - `apply_entity_rls_to_all_tables()` - Applies Entity RLS to all eligible tables\n *\n * **Security Model:**\n * - Server RLS: Isolation between different ElizaOS instances (environments/deployments)\n * - Entity RLS: Isolation between different users within a server instance\n * - Both layers stack - a user can only see data from their server AND their accessible entities\n *\n * **Important Notes:**\n * - Must be called before `applyRLSToNewTables()` or `applyEntityRLSToAllTables()`\n * - Creates `servers` table if it doesn't exist\n * - Automatically calls `installEntityRLS()` to set up both layers\n * - Uses `%I` identifier quoting in format() to prevent SQL injection\n * - Policies use FORCE RLS to enforce even for table owners\n *\n * @param adapter - Database adapter with access to the Drizzle ORM instance\n * @returns Promise that resolves when all RLS functions are installed\n * @throws {Error} If database connection fails or SQL execution fails\n *\n * @example\n * ```typescript\n * // Install RLS functions on server startup\n * await installRLSFunctions(database);\n * await getOrCreateRlsServer(database, serverId);\n * await setServerContext(database, serverId);\n * await applyRLSToNewTables(database);\n * ```\n */\nexport async function installRLSFunctions(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n // Create servers table if it doesn't exist\n await db.execute(sql`\n CREATE TABLE IF NOT EXISTS servers (\n id UUID PRIMARY KEY,\n created_at TIMESTAMPTZ DEFAULT NOW() NOT NULL,\n updated_at TIMESTAMPTZ DEFAULT NOW() NOT NULL\n )\n `);\n\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION current_server_id() RETURNS UUID AS $$\n DECLARE\n server_id_text TEXT;\n BEGIN\n server_id_text := NULLIF(current_setting('app.server_id', TRUE), '');\n\n IF server_id_text IS NULL OR server_id_text = '' THEN\n RETURN NULL;\n END IF;\n\n BEGIN\n RETURN server_id_text::UUID;\n EXCEPTION WHEN OTHERS THEN\n RETURN NULL;\n END;\n END;\n $$ LANGUAGE plpgsql STABLE;\n `);\n\n // Function to add RLS to a table\n // SECURITY: Uses format() with %I to safely quote identifiers and prevent SQL injection\n // This function:\n // 1. Adds server_id column if it doesn't exist (with DEFAULT current_server_id())\n // 2. Backfills/reassigns orphaned data to current server\n // 3. Creates an index on server_id for query performance\n // 4. Enables FORCE ROW LEVEL SECURITY (enforces RLS even for table owners)\n // 5. Creates an isolation policy that filters rows by server_id\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION add_server_isolation(\n schema_name text,\n table_name text\n ) RETURNS void AS $$\n DECLARE\n full_table_name text;\n column_exists boolean;\n orphaned_count bigint;\n BEGIN\n full_table_name := schema_name || '.' || table_name;\n\n -- Check if server_id column already exists\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_server_isolation.table_name\n AND information_schema.columns.column_name = 'server_id'\n ) INTO column_exists;\n\n -- Add server_id column if missing (DEFAULT populates it automatically for new rows)\n IF NOT column_exists THEN\n EXECUTE format('ALTER TABLE %I.%I ADD COLUMN server_id UUID DEFAULT current_server_id()', schema_name, table_name);\n\n -- Backfill existing rows with current server_id\n -- This ensures all existing data belongs to the server instance that is enabling RLS\n EXECUTE format('UPDATE %I.%I SET server_id = current_server_id() WHERE server_id IS NULL', schema_name, table_name);\n ELSE\n -- Column already exists (RLS was previously enabled then disabled)\n -- Restore the DEFAULT clause (may have been removed during uninstallRLS)\n EXECUTE format('ALTER TABLE %I.%I ALTER COLUMN server_id SET DEFAULT current_server_id()', schema_name, table_name);\n\n -- Only backfill NULL server_id rows, do NOT steal data from other servers\n EXECUTE format('SELECT COUNT(*) FROM %I.%I WHERE server_id IS NULL', schema_name, table_name) INTO orphaned_count;\n\n IF orphaned_count > 0 THEN\n RAISE NOTICE 'Backfilling % rows with NULL server_id in %.%', orphaned_count, schema_name, table_name;\n EXECUTE format('UPDATE %I.%I SET server_id = current_server_id() WHERE server_id IS NULL', schema_name, table_name);\n END IF;\n END IF;\n\n -- Create index for efficient server_id filtering\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_server_id ON %I.%I(server_id)', table_name, schema_name, table_name);\n\n -- Enable RLS on the table\n EXECUTE format('ALTER TABLE %I.%I ENABLE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- FORCE RLS even for table owners (critical for security)\n EXECUTE format('ALTER TABLE %I.%I FORCE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- Drop existing policy if present\n EXECUTE format('DROP POLICY IF EXISTS server_isolation_policy ON %I.%I', schema_name, table_name);\n\n -- Create isolation policy: users can only see/modify rows where server_id matches current server instance\n -- No NULL clause - all rows must have a valid server_id (backfilled during column addition)\n EXECUTE format('\n CREATE POLICY server_isolation_policy ON %I.%I\n USING (server_id = current_server_id())\n WITH CHECK (server_id = current_server_id())\n ', schema_name, table_name);\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n // Function to apply RLS to all tables\n // SCHEMA COVERAGE: This function automatically applies RLS to ALL tables in the 'public' schema\n // including: agents, rooms, memories, messages, participants, channels, embeddings, relationships,\n // entities, logs, cache, components, tasks, world, message_servers, etc.\n //\n // EXCLUDED tables (not isolated):\n // - servers (contains all server instance IDs, shared for multi-tenant management)\n // - drizzle_migrations, __drizzle_migrations (migration tracking tables)\n //\n // This dynamic approach ensures plugin tables are automatically protected when added.\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION apply_rls_to_all_tables() RETURNS void AS $$\n DECLARE\n tbl record;\n BEGIN\n FOR tbl IN\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN (\n 'servers',\n 'drizzle_migrations',\n '__drizzle_migrations'\n )\n LOOP\n BEGIN\n PERFORM add_server_isolation(tbl.schemaname, tbl.tablename);\n EXCEPTION WHEN OTHERS THEN\n RAISE WARNING 'Failed to apply RLS to %.%: %', tbl.schemaname, tbl.tablename, SQLERRM;\n END;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info({ src: 'plugin:sql' }, 'RLS PostgreSQL functions installed');\n\n // Install Entity RLS functions as well (part of unified RLS system)\n await installEntityRLS(adapter);\n}\n\n/**\n * Get or create RLS server using Drizzle ORM\n */\nexport async function getOrCreateRlsServer(\n adapter: IDatabaseAdapter,\n serverId: string\n): Promise<string> {\n const db = getDb(adapter);\n\n // Use Drizzle's insert with onConflictDoNothing\n await db\n .insert(serverTable)\n .values({\n id: serverId,\n })\n .onConflictDoNothing();\n\n logger.info({ src: 'plugin:sql', serverId: serverId.slice(0, 8) }, 'RLS server registered');\n return serverId;\n}\n\n/**\n * Set RLS context on PostgreSQL connection pool\n * This function validates that the server exists and has correct UUID format\n */\nexport async function setServerContext(adapter: IDatabaseAdapter, serverId: string): Promise<void> {\n // Validate UUID format using @elizaos/core utility\n if (!validateUuid(serverId)) {\n throw new Error(`Invalid server ID format: ${serverId}. Must be a valid UUID.`);\n }\n\n // Validate server exists\n const db = getDb(adapter);\n const servers = await db.select().from(serverTable).where(eq(serverTable.id, serverId));\n\n if (servers.length === 0) {\n throw new Error(`Server ${serverId} does not exist`);\n }\n\n logger.info({ src: 'plugin:sql', serverId: serverId.slice(0, 8) }, 'RLS context configured');\n}\n\n/**\n * Assign agent to server using Drizzle ORM\n */\nexport async function assignAgentToServer(\n adapter: IDatabaseAdapter,\n agentId: string,\n serverId: string\n): Promise<void> {\n // Validate inputs\n if (!agentId || !serverId) {\n logger.warn(\n `[Data Isolation] Cannot assign agent to server: invalid agentId (${agentId}) or serverId (${serverId})`\n );\n return;\n }\n\n const db = getDb(adapter);\n\n // Check if agent exists using Drizzle\n const agents = await db.select().from(agentTable).where(eq(agentTable.id, agentId));\n\n if (agents.length > 0) {\n const agent = agents[0];\n const currentServerId = agent.server_id;\n\n if (currentServerId === serverId) {\n logger.debug(\n { src: 'plugin:sql', agentName: agent.name },\n 'Agent already assigned to correct server'\n );\n } else {\n // Update agent server using Drizzle\n await db.update(agentTable).set({ server_id: serverId }).where(eq(agentTable.id, agentId));\n\n if (currentServerId === null) {\n logger.info({ src: 'plugin:sql', agentName: agent.name }, 'Agent assigned to server');\n } else {\n logger.warn({ src: 'plugin:sql', agentName: agent.name }, 'Agent server changed');\n }\n }\n } else {\n logger.debug({ src: 'plugin:sql', agentId }, 'Agent does not exist yet');\n }\n}\n\n/**\n * Apply RLS to all tables by calling PostgreSQL function\n */\nexport async function applyRLSToNewTables(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n await db.execute(sql`SELECT apply_rls_to_all_tables()`);\n logger.info({ src: 'plugin:sql' }, 'RLS applied to all tables');\n } catch (error) {\n logger.warn({ src: 'plugin:sql', error: String(error) }, 'Failed to apply RLS to some tables');\n }\n}\n\n/**\n * Disable RLS globally\n * SIMPLE APPROACH:\n * - Disables RLS for ALL server instances\n * - Keeps server_id columns and data intact\n * - Use only in development or when migrating to single-server mode\n */\nexport async function uninstallRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n // Check if RLS is actually enabled by checking if the servers table exists\n const checkResult = await db.execute(sql`\n SELECT EXISTS (\n SELECT FROM pg_tables\n WHERE schemaname = 'public' AND tablename = 'servers'\n ) as rls_enabled\n `);\n\n const rlsEnabled = checkResult.rows?.[0]?.rls_enabled;\n\n if (!rlsEnabled) {\n logger.debug({ src: 'plugin:sql' }, 'RLS not installed, skipping cleanup');\n return;\n }\n\n logger.info(\n { src: 'plugin:sql' },\n 'Disabling RLS globally (keeping server_id columns for schema compatibility)...'\n );\n\n // First, uninstall Entity RLS (depends on Server RLS)\n try {\n await uninstallEntityRLS(adapter);\n } catch (entityRlsError) {\n logger.debug(\n { src: 'plugin:sql' },\n 'Entity RLS cleanup skipped (not installed or already cleaned)'\n );\n }\n\n // Create a temporary stored procedure to safely drop policies and disable RLS\n // Using format() with %I ensures proper identifier quoting and prevents SQL injection\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION _temp_disable_rls_on_table(\n p_schema_name text,\n p_table_name text\n ) RETURNS void AS $$\n DECLARE\n policy_rec record;\n BEGIN\n -- Drop all policies on this table\n FOR policy_rec IN\n SELECT policyname\n FROM pg_policies\n WHERE schemaname = p_schema_name AND tablename = p_table_name\n LOOP\n EXECUTE format('DROP POLICY IF EXISTS %I ON %I.%I',\n policy_rec.policyname, p_schema_name, p_table_name);\n END LOOP;\n\n -- Disable RLS\n EXECUTE format('ALTER TABLE %I.%I NO FORCE ROW LEVEL SECURITY', p_schema_name, p_table_name);\n EXECUTE format('ALTER TABLE %I.%I DISABLE ROW LEVEL SECURITY', p_schema_name, p_table_name);\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n // Get all tables in public schema\n const tablesResult = await db.execute(sql`\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN ('drizzle_migrations', '__drizzle_migrations')\n `);\n\n // Safely disable RLS on each table using the stored procedure\n for (const row of tablesResult.rows || []) {\n const schemaName = row.schemaname;\n const tableName = row.tablename;\n\n try {\n // Call stored procedure with parameterized query (safe from SQL injection)\n await db.execute(sql`SELECT _temp_disable_rls_on_table(${schemaName}, ${tableName})`);\n logger.debug({ src: 'plugin:sql', schemaName, tableName }, 'Disabled RLS on table');\n } catch (error) {\n logger.warn(\n { src: 'plugin:sql', schemaName, tableName, error: String(error) },\n 'Failed to disable RLS on table'\n );\n }\n }\n\n // Drop the temporary function\n await db.execute(sql`DROP FUNCTION IF EXISTS _temp_disable_rls_on_table(text, text)`);\n\n // 2. KEEP server_id values intact (do NOT clear them)\n // This prevents data theft when re-enabling RLS:\n // - Each row keeps its original server_id\n // - When RLS is re-enabled, only NULL rows are backfilled (new data created while RLS was off)\n // - Existing data remains owned by its original server instance\n logger.info(\n { src: 'plugin:sql' },\n 'Keeping server_id values intact (prevents data theft on re-enable)'\n );\n\n // 3. Keep the servers table structure but clear it\n // When RLS is re-enabled, servers will be re-created from server initialization\n logger.info({ src: 'plugin:sql' }, 'Clearing servers table...');\n await db.execute(sql`TRUNCATE TABLE servers`);\n\n // 4. Drop all RLS functions\n await db.execute(sql`DROP FUNCTION IF EXISTS apply_rls_to_all_tables() CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS add_server_isolation(text, text) CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS current_server_id() CASCADE`);\n logger.info({ src: 'plugin:sql' }, 'Dropped all RLS functions');\n\n logger.info({ src: 'plugin:sql' }, 'RLS disabled successfully (server_id columns preserved)');\n } catch (error) {\n logger.error({ src: 'plugin:sql', error: String(error) }, 'Failed to disable RLS');\n throw error;\n }\n}\n\n// ============================================================================\n// ENTITY RLS\n// ============================================================================\n\n/**\n * Install Entity RLS functions for user privacy isolation\n *\n * This provides database-level privacy between different entities (client users: Plugins/API)\n * interacting with agents, independent of JWT authentication.\n *\n * **How Entity RLS Works:**\n * - Each database transaction sets `app.entity_id` before querying\n * - Policies filter rows based on entity ownership or participant membership\n * - Two isolation strategies:\n * 1. Direct ownership: `entity_id` or `author_id` column matches `current_entity_id()`\n * 2. Shared access: `room_id`/`channel_id` exists in `participants` table for the entity\n *\n * **Performance Considerations:**\n * - **Subquery policies** (for `room_id`/`channel_id`) run on EVERY row access\n * - Indexes are automatically created on: `entity_id`, `author_id`, `room_id`, `channel_id`\n * - The `participants` table should have an index on `(entity_id, channel_id)`\n * - For large datasets (>1M rows), consider:\n * - Materialized views for frequently accessed entity-filtered data\n * - Partitioning large tables by date or entity_id\n *\n * **Optimization Tips:**\n * - Direct column policies (`entity_id = current_entity_id()`) are faster than subquery policies\n * - The `participants` lookup is cached per transaction but still requires index scans\n *\n * **Tables Excluded from Entity RLS:**\n * - `servers` - Server RLS table\n * - `users` - Authentication (no entity isolation)\n * - `entity_mappings` - Cross-platform entity mapping\n * - `drizzle_migrations`, `__drizzle_migrations` - Migration tracking\n *\n * @param adapter - Database adapter with access to the Drizzle ORM instance\n * @returns Promise that resolves when Entity RLS functions are installed\n * @throws {Error} If database connection fails or SQL execution fails\n *\n * @example\n * ```typescript\n * // Called automatically by installRLSFunctions()\n * await installRLSFunctions(database);\n *\n * // Or call separately if needed\n * await installEntityRLS(database);\n * await applyEntityRLSToAllTables(database);\n * ```\n */\nexport async function installEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n logger.info('[Entity RLS] Installing entity RLS functions and policies...');\n\n // 1. Create current_entity_id() function - reads from app.entity_id session variable\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION current_entity_id()\n RETURNS UUID AS $$\n DECLARE\n entity_id_text TEXT;\n BEGIN\n -- Read from transaction-local variable\n entity_id_text := NULLIF(current_setting('app.entity_id', TRUE), '');\n\n IF entity_id_text IS NULL OR entity_id_text = '' THEN\n RETURN NULL;\n END IF;\n\n BEGIN\n RETURN entity_id_text::UUID;\n EXCEPTION WHEN OTHERS THEN\n RETURN NULL;\n END;\n END;\n $$ LANGUAGE plpgsql STABLE;\n `);\n\n logger.info('[Entity RLS] Created current_entity_id() function');\n\n // 2. Create add_entity_isolation() function - applies entity RLS to a single table\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION add_entity_isolation(\n schema_name text,\n table_name text,\n require_entity boolean DEFAULT false\n ) RETURNS void AS $$\n DECLARE\n full_table_name text;\n has_entity_id boolean;\n has_author_id boolean;\n has_channel_id boolean;\n has_room_id boolean;\n entity_column_name text;\n room_column_name text;\n BEGIN\n full_table_name := schema_name || '.' || table_name;\n\n -- Check which columns exist\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'entity_id'\n ) INTO has_entity_id;\n\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'author_id'\n ) INTO has_author_id;\n\n SELECT EXISTS (\n SELECT 1 FROM information_schema.columns\n WHERE information_schema.columns.table_schema = schema_name\n AND information_schema.columns.table_name = add_entity_isolation.table_name\n AND information_schema.columns.column_name = 'room_id'\n ) INTO has_room_id;\n\n -- Skip if no entity-related columns\n IF NOT (has_entity_id OR has_author_id OR has_room_id) THEN\n RAISE NOTICE '[Entity RLS] Skipping %.%: no entity columns found', schema_name, table_name;\n RETURN;\n END IF;\n\n -- Determine which column to use for entity filtering\n -- Priority: room_id (shared access via participants) > entity_id/author_id (direct access)\n --\n -- SPECIAL CASE: participants table must use direct entity_id to avoid infinite recursion\n IF table_name = 'participants' AND has_entity_id THEN\n entity_column_name := 'entity_id';\n room_column_name := NULL;\n ELSIF has_room_id THEN\n room_column_name := 'room_id';\n entity_column_name := NULL;\n ELSIF has_entity_id THEN\n entity_column_name := 'entity_id';\n room_column_name := NULL;\n ELSIF has_author_id THEN\n entity_column_name := 'author_id';\n room_column_name := NULL;\n ELSE\n entity_column_name := NULL;\n room_column_name := NULL;\n END IF;\n\n -- Enable RLS on the table\n EXECUTE format('ALTER TABLE %I.%I ENABLE ROW LEVEL SECURITY', schema_name, table_name);\n EXECUTE format('ALTER TABLE %I.%I FORCE ROW LEVEL SECURITY', schema_name, table_name);\n\n -- Drop existing entity policies if present\n EXECUTE format('DROP POLICY IF EXISTS entity_isolation_policy ON %I.%I', schema_name, table_name);\n\n -- CASE 1: Table has room_id (shared access via participants)\n IF room_column_name IS NOT NULL THEN\n -- Determine the corresponding column name in participants table\n -- If the table has room_id, look for room_id in participants.room_id\n -- participants table uses: entity_id (for participant), room_id (for room)\n -- RESTRICTIVE: Must pass BOTH server RLS AND entity RLS (combined with AND)\n\n -- Build policy with or without NULL check based on require_entity parameter\n IF require_entity THEN\n -- STRICT MODE: Entity context is REQUIRED (blocks NULL entity_id)\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NOT NULL\n AND %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n WITH CHECK (\n current_entity_id() IS NOT NULL\n AND %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n ', schema_name, table_name, room_column_name, room_column_name);\n RAISE NOTICE '[Entity RLS] Applied STRICT RESTRICTIVE to %.% (via % → participants.room_id, entity REQUIRED)', schema_name, table_name, room_column_name;\n ELSE\n -- PERMISSIVE MODE: NULL entity_id allows system/admin access\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NULL\n OR %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n WITH CHECK (\n current_entity_id() IS NULL\n OR %I IN (\n SELECT room_id\n FROM participants\n WHERE entity_id = current_entity_id()\n )\n )\n ', schema_name, table_name, room_column_name, room_column_name);\n RAISE NOTICE '[Entity RLS] Applied PERMISSIVE RESTRICTIVE to %.% (via % → participants.room_id, NULL allowed)', schema_name, table_name, room_column_name;\n END IF;\n\n -- CASE 2: Table has direct entity_id or author_id column\n ELSIF entity_column_name IS NOT NULL THEN\n -- RESTRICTIVE: Must pass BOTH server RLS AND entity RLS (combined with AND)\n\n IF require_entity THEN\n -- STRICT MODE: Entity context is REQUIRED\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NOT NULL\n AND %I = current_entity_id()\n )\n WITH CHECK (\n current_entity_id() IS NOT NULL\n AND %I = current_entity_id()\n )\n ', schema_name, table_name, entity_column_name, entity_column_name);\n RAISE NOTICE '[Entity RLS] Applied STRICT RESTRICTIVE to %.% (direct column: %, entity REQUIRED)', schema_name, table_name, entity_column_name;\n ELSE\n -- PERMISSIVE MODE: NULL entity_id allows system/admin access\n EXECUTE format('\n CREATE POLICY entity_isolation_policy ON %I.%I\n AS RESTRICTIVE\n USING (\n current_entity_id() IS NULL\n OR %I = current_entity_id()\n )\n WITH CHECK (\n current_entity_id() IS NULL\n OR %I = current_entity_id()\n )\n ', schema_name, table_name, entity_column_name, entity_column_name);\n RAISE NOTICE '[Entity RLS] Applied PERMISSIVE RESTRICTIVE to %.% (direct column: %, NULL allowed)', schema_name, table_name, entity_column_name;\n END IF;\n END IF;\n\n -- Create indexes for efficient entity filtering\n IF room_column_name IS NOT NULL THEN\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_room ON %I.%I(%I)',\n table_name, schema_name, table_name, room_column_name);\n END IF;\n\n IF entity_column_name IS NOT NULL THEN\n EXECUTE format('CREATE INDEX IF NOT EXISTS idx_%I_entity ON %I.%I(%I)',\n table_name, schema_name, table_name, entity_column_name);\n END IF;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info('[Entity RLS] Created add_entity_isolation() function');\n\n // 3. Create apply_entity_rls_to_all_tables() function - applies to all eligible tables\n await db.execute(sql`\n CREATE OR REPLACE FUNCTION apply_entity_rls_to_all_tables() RETURNS void AS $$\n DECLARE\n tbl record;\n require_entity_for_table boolean;\n BEGIN\n FOR tbl IN\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN (\n 'servers', -- Server RLS table\n 'users', -- Authentication table (no entity isolation needed)\n 'entity_mappings', -- Mapping table (no entity isolation needed)\n 'drizzle_migrations', -- Migration tracking\n '__drizzle_migrations' -- Migration tracking\n )\n LOOP\n BEGIN\n -- Apply STRICT mode (require_entity=true) to sensitive user-facing tables\n -- These tables MUST have entity context set to access data\n -- STRICT tables: memories, logs, components, tasks (user data requiring isolation)\n -- NOTE: Excluded tables:\n -- - 'participants': Adding participants is a privileged operation during initialization\n IF tbl.tablename IN ('memories', 'logs', 'components', 'tasks') THEN\n require_entity_for_table := true;\n ELSE\n -- PERMISSIVE mode (require_entity=false) for system/privileged tables\n -- This includes: participants, rooms, channels, entities, etc.\n require_entity_for_table := false;\n END IF;\n\n PERFORM add_entity_isolation(tbl.schemaname, tbl.tablename, require_entity_for_table);\n EXCEPTION WHEN OTHERS THEN\n RAISE WARNING '[Entity RLS] Failed to apply to %.%: %', tbl.schemaname, tbl.tablename, SQLERRM;\n END;\n END LOOP;\n END;\n $$ LANGUAGE plpgsql;\n `);\n\n logger.info('[Entity RLS] Created apply_entity_rls_to_all_tables() function');\n\n logger.info('[Entity RLS] Entity RLS functions installed successfully');\n}\n\n/**\n * Apply Entity RLS policies to all eligible tables\n * Call this after installEntityRLS() to activate the policies\n */\nexport async function applyEntityRLSToAllTables(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n try {\n await db.execute(sql`SELECT apply_entity_rls_to_all_tables()`);\n logger.info('[Entity RLS] Applied entity RLS to all eligible tables');\n } catch (error) {\n logger.warn('[Entity RLS] Failed to apply entity RLS to some tables:', String(error));\n }\n}\n\n/**\n * Remove Entity RLS (for rollback or testing)\n * Drops entity RLS functions and policies but keeps server RLS intact\n */\nexport async function uninstallEntityRLS(adapter: IDatabaseAdapter): Promise<void> {\n const db = getDb(adapter);\n\n logger.info('[Entity RLS] Removing entity RLS policies and functions...');\n\n try {\n // First, drop all entity_isolation_policy policies from all tables\n const tablesResult = await db.execute(sql`\n SELECT schemaname, tablename\n FROM pg_tables\n WHERE schemaname = 'public'\n AND tablename NOT IN ('drizzle_migrations', '__drizzle_migrations')\n `);\n\n for (const row of tablesResult.rows || []) {\n const schemaName = row.schemaname;\n const tableName = row.tablename;\n\n try {\n // Drop entity_isolation_policy if it exists\n await db.execute(\n sql.raw(`DROP POLICY IF EXISTS entity_isolation_policy ON \"${schemaName}\".\"${tableName}\"`)\n );\n logger.debug(\n `[Entity RLS] Dropped entity_isolation_policy from ${schemaName}.${tableName}`\n );\n } catch (error) {\n logger.debug(`[Entity RLS] No entity policy on ${schemaName}.${tableName}`);\n }\n }\n\n // Drop the apply function (CASCADE will drop dependencies)\n await db.execute(sql`DROP FUNCTION IF EXISTS apply_entity_rls_to_all_tables() CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS add_entity_isolation(text, text) CASCADE`);\n await db.execute(sql`DROP FUNCTION IF EXISTS current_entity_id() CASCADE`);\n\n logger.info('[Entity RLS] Entity RLS functions and policies removed successfully');\n } catch (error) {\n logger.error('[Entity RLS] Failed to remove entity RLS:', String(error));\n throw error;\n }\n}\n",
26
- "import { logger, type Plugin, type IDatabaseAdapter } from '@elizaos/core';\nimport { RuntimeMigrator } from './runtime-migrator';\nimport type { DrizzleDatabase } from './types';\nimport { migrateToEntityRLS } from './migrations';\nimport { installRLSFunctions, applyRLSToNewTables, applyEntityRLSToAllTables } from './rls';\n\nexport class DatabaseMigrationService {\n private db: DrizzleDatabase | null = null;\n private registeredSchemas = new Map<string, Record<string, unknown>>();\n private migrator: RuntimeMigrator | null = null;\n\n constructor() {\n // No longer extending Service, so no need to call super\n }\n\n /**\n * Initialize service with database connection\n * @param db - Drizzle database instance\n */\n async initializeWithDatabase(db: DrizzleDatabase): Promise<void> {\n this.db = db;\n\n // TEMPORARY: Migrate from develop to feat/entity-rls (Owner RLS → Server RLS + Entity RLS)\n // This runs before the RuntimeMigrator to ensure schema compatibility\n // Can be removed after users have migrated from develop to this branch\n // migrateToEntityRLS expects IDatabaseAdapter, but we have db directly\n // Create a minimal adapter wrapper\n interface AdapterWrapper extends IDatabaseAdapter {\n db: DrizzleDatabase;\n }\n const adapterWrapper: AdapterWrapper = { db } as AdapterWrapper;\n await migrateToEntityRLS(adapterWrapper);\n\n this.migrator = new RuntimeMigrator(db);\n await this.migrator.initialize();\n logger.info({ src: 'plugin:sql' }, 'DatabaseMigrationService initialized');\n }\n\n /**\n * Auto-discover and register schemas from plugins\n * @param plugins - Array of plugins to scan for schemas\n */\n discoverAndRegisterPluginSchemas(plugins: Plugin[]): void {\n for (const plugin of plugins) {\n interface PluginWithSchema extends Plugin {\n schema?: Record<string, unknown>;\n }\n const pluginWithSchema = plugin as PluginWithSchema;\n if (pluginWithSchema.schema) {\n this.registeredSchemas.set(plugin.name, pluginWithSchema.schema);\n }\n }\n logger.info(\n {\n src: 'plugin:sql',\n schemasDiscovered: this.registeredSchemas.size,\n totalPlugins: plugins.length,\n },\n 'Plugin schemas discovered'\n );\n }\n\n /**\n * Register a schema for a specific plugin\n * @param pluginName - Plugin identifier\n * @param schema - Drizzle schema object\n */\n registerSchema(pluginName: string, schema: Record<string, unknown>): void {\n this.registeredSchemas.set(pluginName, schema);\n logger.debug({ src: 'plugin:sql', pluginName }, 'Schema registered');\n }\n\n /**\n * Run migrations for all registered plugins\n * @param options - Migration options\n * @param options.verbose - Log detailed output (default: true in dev, false in prod)\n * @param options.force - Allow destructive migrations\n * @param options.dryRun - Preview changes without applying\n * @throws Error if any migration fails or destructive changes blocked\n */\n async runAllPluginMigrations(options?: {\n verbose?: boolean;\n force?: boolean;\n dryRun?: boolean;\n }): Promise<void> {\n if (!this.db || !this.migrator) {\n throw new Error('Database or migrator not initialized in DatabaseMigrationService');\n }\n\n const isProduction = process.env.NODE_ENV === 'production';\n\n // Build migration options with sensible defaults\n const migrationOptions = {\n verbose: options?.verbose ?? !isProduction,\n force: options?.force ?? false,\n dryRun: options?.dryRun ?? false,\n };\n\n // Log migration start\n logger.info(\n {\n src: 'plugin:sql',\n environment: isProduction ? 'PRODUCTION' : 'DEVELOPMENT',\n pluginCount: this.registeredSchemas.size,\n dryRun: migrationOptions.dryRun,\n },\n 'Starting migrations'\n );\n\n let successCount = 0;\n let failureCount = 0;\n const errors: Array<{ pluginName: string; error: Error }> = [];\n\n for (const [pluginName, schema] of this.registeredSchemas) {\n try {\n await this.migrator.migrate(pluginName, schema, migrationOptions);\n successCount++;\n logger.info({ src: 'plugin:sql', pluginName }, 'Migration completed');\n } catch (error) {\n failureCount++;\n const errorMessage = (error as Error).message;\n\n // Store the error for later\n errors.push({ pluginName, error: error as Error });\n\n if (errorMessage.includes('Destructive migration blocked')) {\n // Destructive migration was blocked - this is expected behavior\n logger.error(\n { src: 'plugin:sql', pluginName },\n 'Migration blocked - destructive changes detected. Set ELIZA_ALLOW_DESTRUCTIVE_MIGRATIONS=true or use force option'\n );\n } else {\n // Unexpected error\n logger.error({ src: 'plugin:sql', pluginName, error: errorMessage }, 'Migration failed');\n }\n }\n }\n\n // Final summary\n if (failureCount === 0) {\n logger.info({ src: 'plugin:sql', successCount }, 'All migrations completed successfully');\n\n // Re-apply RLS after all migrations are complete\n // This ensures RLS is active on all tables with proper server_id columns\n // ONLY if data isolation is enabled\n const dataIsolationEnabled = process.env.ENABLE_DATA_ISOLATION === 'true';\n\n if (dataIsolationEnabled) {\n try {\n logger.info({ src: 'plugin:sql' }, 'Re-applying Row Level Security...');\n // RLS functions expect IDatabaseAdapter, create wrapper\n interface AdapterWrapper extends IDatabaseAdapter {\n db: DrizzleDatabase;\n }\n const adapterWrapper: AdapterWrapper = { db: this.db } as AdapterWrapper;\n await installRLSFunctions(adapterWrapper);\n await applyRLSToNewTables(adapterWrapper);\n await applyEntityRLSToAllTables(adapterWrapper);\n logger.info({ src: 'plugin:sql' }, 'RLS re-applied successfully');\n } catch (rlsError) {\n const errorMsg = rlsError instanceof Error ? rlsError.message : String(rlsError);\n logger.warn(\n { src: 'plugin:sql', error: errorMsg },\n 'Failed to re-apply RLS (this is OK if server_id columns are not yet in schemas)'\n );\n }\n } else {\n logger.info(\n { src: 'plugin:sql' },\n 'Skipping RLS re-application (ENABLE_DATA_ISOLATION is not true)'\n );\n }\n } else {\n logger.error({ src: 'plugin:sql', failureCount, successCount }, 'Some migrations failed');\n\n // Throw a consolidated error with details about all failures\n const errorSummary = errors.map((e) => `${e.pluginName}: ${e.error.message}`).join('\\n ');\n throw new Error(`${failureCount} migration(s) failed:\\n ${errorSummary}`);\n }\n }\n\n /**\n * Get the runtime migrator instance for advanced operations\n * @returns RuntimeMigrator instance or null if not initialized\n */\n getMigrator(): RuntimeMigrator | null {\n return this.migrator;\n }\n}\n",
27
- "import {\n type IAgentRuntime,\n type IDatabaseAdapter,\n type UUID,\n type Plugin,\n logger,\n} from '@elizaos/core/browser';\nimport { PgliteDatabaseAdapter } from './pglite/adapter';\nimport { PGliteClientManager } from './pglite/manager';\nimport * as schema from './schema';\n\n/**\n * Browser-safe entrypoint for @elizaos/plugin-sql\n *\n * This entrypoint only uses the PGlite (WASM) path and avoids any Node/Postgres-only\n * code or Node builtins, so it can be safely bundled into browser/client environments.\n */\n\n// Global singletons (browser-safe)\nconst GLOBAL_SINGLETONS = Symbol.for('@elizaos/plugin-sql/global-singletons');\n\ninterface GlobalSingletons {\n pgLiteClientManager?: PGliteClientManager;\n}\n\n// Type assertion needed because globalThis doesn't include symbol keys in its type definition\nconst globalSymbols = globalThis as typeof globalThis & Record<symbol, GlobalSingletons>;\nif (!globalSymbols[GLOBAL_SINGLETONS]) {\n globalSymbols[GLOBAL_SINGLETONS] = {};\n}\nconst globalSingletons = globalSymbols[GLOBAL_SINGLETONS];\n\n/**\n * Create a PGlite adapter for the browser (in-memory by default).\n * No Postgres fallback in browser builds.\n */\nexport function createDatabaseAdapter(\n _config: { dataDir?: string },\n agentId: UUID\n): IDatabaseAdapter {\n if (!globalSingletons.pgLiteClientManager) {\n // Use in-memory PGlite by default in the browser.\n globalSingletons.pgLiteClientManager = new PGliteClientManager({});\n }\n return new PgliteDatabaseAdapter(agentId, globalSingletons.pgLiteClientManager);\n}\n\nexport const plugin: Plugin = {\n name: '@elizaos/plugin-sql',\n description: 'A plugin for SQL database access (PGlite WASM in browser).',\n priority: 0,\n schema: schema,\n init: async (_config, runtime: IAgentRuntime) => {\n logger.info({ src: 'plugin:sql' }, 'plugin-sql (browser) init starting');\n\n // Check if a database adapter is already registered\n try {\n // Try to check if the runtime is ready (has an adapter)\n const isReady = await runtime.isReady();\n if (isReady) {\n logger.info(\n { src: 'plugin:sql' },\n 'Database adapter already registered, skipping creation'\n );\n return;\n }\n } catch (error) {\n // No adapter exists or isReady failed, continue with creation\n }\n\n // In browser builds, always use PGlite (in-memory unless configured elsewhere in runtime)\n const dbAdapter = createDatabaseAdapter({}, runtime.agentId);\n runtime.registerDatabaseAdapter(dbAdapter);\n logger.info({ src: 'plugin:sql' }, 'Browser database adapter (PGlite) created and registered');\n },\n};\n\nexport default plugin;\n\nexport { DatabaseMigrationService } from './migration-service';\n",
28
- "import { type UUID, logger, type Agent, type Entity, type Memory } from '@elizaos/core';\nimport { drizzle, type PgliteDatabase } from 'drizzle-orm/pglite';\nimport { BaseDrizzleAdapter } from '../base';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from '../schema/embedding';\nimport type { PGliteClientManager } from './manager';\n\n/**\n * PgliteDatabaseAdapter class represents an adapter for interacting with a PgliteDatabase.\n * Extends BaseDrizzleAdapter.\n *\n * @constructor\n * @param {UUID} agentId - The ID of the agent.\n * @param {PGliteClientManager} manager - The manager for the Pglite client.\n *\n * @method withDatabase\n * @param {() => Promise<T>} operation - The operation to perform on the database.\n * @return {Promise<T>} - The result of the operation.\n *\n * @method init\n * @return {Promise<void>} - A Promise that resolves when the initialization is complete.\n *\n * @method close\n * @return {void} - A Promise that resolves when the database is closed.\n */\nexport class PgliteDatabaseAdapter extends BaseDrizzleAdapter {\n private manager: PGliteClientManager;\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n\n /**\n * Constructor for creating an instance of a class.\n * @param {UUID} agentId - The unique identifier for the agent.\n * @param {PGliteClientManager} manager - The manager for the Pglite client.\n */\n constructor(agentId: UUID, manager: PGliteClientManager) {\n super(agentId);\n this.manager = manager;\n // drizzle-orm/pglite expects PGlite instance directly\n this.db = drizzle(this.manager.getConnection());\n this.initStores();\n }\n\n /**\n * Execute a callback with isolation context.\n * PGLite: No RLS support, execute callback directly.\n * We avoid db.transaction() because drizzle's transaction handling blocks on PGLite.\n * PGLite handles async operations internally with its own queue.\n */\n public async withIsolationContext<T>(\n _entityId: UUID | null,\n callback: (tx: PgliteDatabase) => Promise<T>\n ): Promise<T> {\n return callback(this.db);\n }\n\n // Methods required by TypeScript but not in base class\n async getEntityByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n // Delegate to the correct method name\n return this.getEntitiesByIds(entityIds);\n }\n\n async getMemoriesByServerId(_params: { serverId: UUID; count?: number }): Promise<Memory[]> {\n // This method doesn't seem to exist in the base implementation\n // Provide a basic implementation that returns empty array\n logger.warn({ src: 'plugin:sql' }, 'getMemoriesByServerId called but not implemented');\n return [];\n }\n\n async ensureAgentExists(agent: Partial<Agent>): Promise<Agent> {\n // Check if agent exists, create if not\n const existingAgent = await this.getAgent(this.agentId);\n if (existingAgent) {\n return existingAgent;\n }\n\n // Create the agent with required fields\n const newAgent: Agent = {\n id: this.agentId,\n name: agent.name || 'Unknown Agent',\n username: agent.username,\n bio: agent.bio || 'An AI agent',\n createdAt: agent.createdAt || Date.now(),\n updatedAt: agent.updatedAt || Date.now(),\n };\n\n await this.createAgent(newAgent);\n const createdAgent = await this.getAgent(this.agentId);\n if (!createdAgent) {\n throw new Error('Failed to create agent');\n }\n return createdAgent;\n }\n\n /**\n * Asynchronously runs the provided database operation while checking if the database is currently shutting down.\n * If the database is shutting down, an error is thrown to prevent operations on a closing database.\n *\n * @param {Function} operation - The database operation to be performed.\n * @returns {Promise<T>} A promise that resolves with the result of the database operation.\n * @throws {Error} If the database is shutting down.\n */\n protected async withDatabase<T>(operation: () => Promise<T>): Promise<T> {\n if (this.manager.isShuttingDown()) {\n const error = new Error('Database is shutting down - operation rejected');\n logger.warn(\n { src: 'plugin:sql', error: error.message },\n 'Database operation rejected during shutdown'\n );\n throw error;\n }\n return operation();\n }\n\n /**\n * Asynchronously initializes the database by running migrations.\n *\n * @returns {Promise<void>} A Promise that resolves when the database initialization is complete.\n */\n async init(): Promise<void> {\n logger.debug({ src: 'plugin:sql' }, 'PGliteDatabaseAdapter initialized');\n }\n\n /**\n * Checks if the database connection is ready and active.\n * For PGLite, this checks if the client is not in a shutting down state.\n * @returns {Promise<boolean>} A Promise that resolves to true if the connection is healthy.\n */\n async isReady(): Promise<boolean> {\n return !this.manager.isShuttingDown();\n }\n\n /**\n * Asynchronously closes the database.\n */\n async close() {\n await this.manager.close();\n }\n\n /**\n * Asynchronously retrieves the connection from the client.\n *\n * @returns {Promise<PGlite>} A Promise that resolves with the connection.\n */\n async getConnection() {\n return this.manager.getConnection();\n }\n}\n",
29
- "import {\n type Agent,\n type Component,\n DatabaseAdapter,\n type Entity,\n type Log,\n logger,\n type Memory,\n type MemoryMetadata,\n type Metadata,\n type Participant,\n type Relationship,\n type Room,\n type Task,\n type UUID,\n type World,\n type AgentRunSummaryResult,\n type RunStatus,\n} from '@elizaos/core';\nimport type { DatabaseMigrationService } from './migration-service';\nimport { and, eq, inArray, sql } from 'drizzle-orm';\nimport { DIMENSION_MAP, type EmbeddingDimensionColumn } from './schema/embedding';\nimport { embeddingTable, logTable, memoryTable, participantTable, roomTable } from './schema/index';\nimport type { DrizzleDatabase } from './types';\nimport { sanitizeJsonObject } from './utils';\nimport {\n AgentStore,\n MemoryStore,\n RoomStore,\n ParticipantStore,\n EntityStore,\n ComponentStore,\n RelationshipStore,\n CacheStore,\n WorldStore,\n TaskStore,\n LogStore,\n MessagingStore,\n type StoreContext,\n} from './stores';\n\n// Define the metadata type inline since we can't import it\n/**\n * Represents metadata information about memory.\n * @typedef {Object} MemoryMetadata\n * @property {string} type - The type of memory.\n * @property {string} [source] - The source of the memory.\n * @property {UUID} [sourceId] - The ID of the source.\n * @property {string} [scope] - The scope of the memory.\n * @property {number} [timestamp] - The timestamp of the memory.\n * @property {string[]} [tags] - The tags associated with the memory.\n * @property {UUID} [documentId] - The ID of the document associated with the memory.\n * @property {number} [position] - The position of the memory.\n */\n\n/**\n * Abstract class representing a base Drizzle adapter for working with databases.\n * This adapter provides a comprehensive set of methods for interacting with a database\n * using Drizzle ORM. It implements the DatabaseAdapter interface and handles operations\n * for various entity types including agents, entities, components, memories, rooms,\n * participants, relationships, tasks, and more.\n *\n * The adapter includes built-in retry logic for database operations, embedding dimension\n * management, and transaction support. Concrete implementations must provide the\n * withDatabase method to execute operations against their specific database.\n */\nexport abstract class BaseDrizzleAdapter extends DatabaseAdapter<any> {\n protected readonly maxRetries: number = 3;\n protected readonly baseDelay: number = 1000;\n protected readonly maxDelay: number = 10000;\n protected readonly jitterMax: number = 1000;\n protected embeddingDimension: EmbeddingDimensionColumn = DIMENSION_MAP[384];\n protected migrationService?: DatabaseMigrationService;\n\n // Domain stores - initialized via initStores() after db is set\n protected agentStore!: AgentStore;\n protected memoryStore!: MemoryStore;\n protected roomStore!: RoomStore;\n protected participantStore!: ParticipantStore;\n protected entityStore!: EntityStore;\n protected componentStore!: ComponentStore;\n protected relationshipStore!: RelationshipStore;\n protected cacheStore!: CacheStore;\n protected worldStore!: WorldStore;\n protected taskStore!: TaskStore;\n protected logStore!: LogStore;\n protected messagingStore!: MessagingStore;\n\n protected abstract withDatabase<T>(operation: () => Promise<T>): Promise<T>;\n\n /**\n * Execute a callback with entity context for Entity RLS.\n * Must be implemented by concrete adapters to handle their specific RLS mechanisms.\n *\n * @param entityId - The entity UUID to set as context (or null for system operations)\n * @param callback - The database operations to execute with the entity context\n * @returns The result of the callback\n */\n public abstract withIsolationContext<T>(\n entityId: UUID | null,\n callback: (tx: DrizzleDatabase) => Promise<T>\n ): Promise<T>;\n\n public abstract init(): Promise<void>;\n public abstract close(): Promise<void>;\n\n /**\n * Initialize method that can be overridden by implementations\n */\n public async initialize(): Promise<void> {\n await this.init();\n }\n\n /**\n * Run plugin schema migrations for all registered plugins\n * @param plugins Array of plugins with their schemas\n * @param options Migration options (verbose, force, dryRun, etc.)\n */\n public async runPluginMigrations(\n plugins: Array<{ name: string; schema?: Record<string, unknown> }>,\n options?: {\n verbose?: boolean;\n force?: boolean;\n dryRun?: boolean;\n }\n ): Promise<void> {\n // Initialize migration service if not already done\n if (!this.migrationService) {\n const { DatabaseMigrationService } = await import('./migration-service');\n this.migrationService = new DatabaseMigrationService();\n await this.migrationService.initializeWithDatabase(this.db);\n }\n\n // Register plugin schemas\n for (const plugin of plugins) {\n if (plugin.schema) {\n this.migrationService.registerSchema(plugin.name, plugin.schema);\n }\n }\n\n // Run migrations with options\n await this.migrationService.runAllPluginMigrations(options);\n }\n\n /**\n * Get the underlying database instance for testing purposes\n */\n public getDatabase(): unknown {\n return this.db;\n }\n\n protected agentId: UUID;\n\n /**\n * Constructor for creating a new instance of Agent with the specified agentId.\n *\n * @param {UUID} agentId - The unique identifier for the agent.\n */\n constructor(agentId: UUID) {\n super();\n this.agentId = agentId;\n }\n\n /**\n * Initialize all domain stores. Must be called after this.db is set.\n * Child classes should call this at the end of their constructor.\n */\n protected initStores(): void {\n const ctx: StoreContext = {\n getDb: () => this.db,\n withRetry: (operation, _context) => this.withRetry(operation),\n withIsolationContext: (entityId, callback) => this.withIsolationContext(entityId, callback),\n agentId: this.agentId,\n getEmbeddingDimension: () => this.embeddingDimension,\n };\n\n this.agentStore = new AgentStore(ctx);\n this.memoryStore = new MemoryStore(ctx);\n this.roomStore = new RoomStore(ctx);\n this.participantStore = new ParticipantStore(ctx);\n this.entityStore = new EntityStore(ctx);\n this.componentStore = new ComponentStore(ctx);\n this.relationshipStore = new RelationshipStore(ctx);\n this.cacheStore = new CacheStore(ctx);\n this.worldStore = new WorldStore(ctx);\n this.taskStore = new TaskStore(ctx);\n this.logStore = new LogStore(ctx);\n this.messagingStore = new MessagingStore(ctx);\n }\n\n /**\n * Executes the given operation with retry logic.\n * @template T\n * @param {() => Promise<T>} operation - The operation to be executed.\n * @returns {Promise<T>} A promise that resolves with the result of the operation.\n */\n protected async withRetry<T>(operation: () => Promise<T>): Promise<T> {\n let lastError: Error = new Error('Unknown error');\n\n for (let attempt = 1; attempt <= this.maxRetries; attempt++) {\n try {\n return await operation();\n } catch (error) {\n lastError = error as Error;\n\n if (attempt < this.maxRetries) {\n const backoffDelay = Math.min(this.baseDelay * 2 ** (attempt - 1), this.maxDelay);\n\n const jitter = Math.random() * this.jitterMax;\n const delay = backoffDelay + jitter;\n\n logger.warn(\n {\n src: 'plugin:sql',\n attempt,\n maxRetries: this.maxRetries,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Database operation failed, retrying'\n );\n\n await new Promise((resolve) => setTimeout(resolve, delay));\n } else {\n logger.error(\n {\n src: 'plugin:sql',\n totalAttempts: attempt,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Max retry attempts reached'\n );\n throw error instanceof Error ? error : new Error(String(error));\n }\n }\n }\n\n throw lastError;\n }\n\n /**\n * Asynchronously ensures that the given embedding dimension is valid for the agent.\n *\n * @param {number} dimension - The dimension to ensure for the embedding.\n * @returns {Promise<void>} - Resolves once the embedding dimension is ensured.\n */\n async ensureEmbeddingDimension(dimension: number) {\n return this.withDatabase(async () => {\n const existingMemory = await this.db\n .select()\n .from(memoryTable)\n .innerJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(eq(memoryTable.agentId, this.agentId))\n .limit(1);\n\n if (existingMemory.length > 0) {\n // The join result includes both memoryTable and embeddingTable columns\n // Access embedding columns directly from the joined result\n interface JoinedMemoryResult {\n memories: typeof memoryTable.$inferSelect;\n embeddings: typeof embeddingTable.$inferSelect;\n }\n const joinedResult = existingMemory[0] as JoinedMemoryResult;\n Object.entries(DIMENSION_MAP).find(([_, colName]) => {\n const embeddingCol = colName as keyof typeof embeddingTable.$inferSelect;\n return joinedResult.embeddings[embeddingCol] !== null;\n });\n // We don't actually need to use usedDimension for now, but it's good to know it's there.\n }\n\n this.embeddingDimension = DIMENSION_MAP[dimension];\n });\n }\n\n /**\n * Asynchronously retrieves an agent by their ID from the database.\n * @param {UUID} agentId - The ID of the agent to retrieve.\n * @returns {Promise<Agent | null>} A promise that resolves to the retrieved agent or null if not found.\n */\n async getAgent(agentId: UUID): Promise<Agent | null> {\n return this.withDatabase(() => this.agentStore.get(agentId));\n }\n\n /**\n * Asynchronously retrieves a list of agents from the database.\n *\n * @returns {Promise<Partial<Agent>[]>} A Promise that resolves to an array of Agent objects.\n */\n async getAgents(): Promise<Partial<Agent>[]> {\n return this.withDatabase(() => this.agentStore.getAll());\n }\n /**\n * Asynchronously creates a new agent record in the database.\n *\n * @param {Partial<Agent>} agent The agent object to be created.\n * @returns {Promise<boolean>} A promise that resolves to a boolean indicating the success of the operation.\n */\n async createAgent(agent: Agent): Promise<boolean> {\n return this.withDatabase(() => this.agentStore.create(agent));\n }\n\n /**\n * Updates an agent in the database with the provided agent ID and data.\n * @param {UUID} agentId - The unique identifier of the agent to update.\n * @param {Partial<Agent>} agent - The partial agent object containing the fields to update.\n * @returns {Promise<boolean>} - A boolean indicating if the agent was successfully updated.\n */\n async updateAgent(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n return this.withDatabase(() => this.agentStore.update(agentId, agent));\n }\n\n /**\n * Asynchronously deletes an agent with the specified UUID and all related entries.\n *\n * @param {UUID} agentId - The UUID of the agent to be deleted.\n * @returns {Promise<boolean>} - A boolean indicating if the deletion was successful.\n */\n async deleteAgent(agentId: UUID): Promise<boolean> {\n return this.withDatabase(() => this.agentStore.delete(agentId));\n }\n\n /**\n * Count all agents in the database\n * Used primarily for maintenance and cleanup operations\n */\n /**\n * Asynchronously counts the number of agents in the database.\n * @returns {Promise<number>} A Promise that resolves to the number of agents in the database.\n */\n async countAgents(): Promise<number> {\n return this.withDatabase(() => this.agentStore.count());\n }\n\n /**\n * Clean up the agents table by removing all agents\n * This is used during server startup to ensure no orphaned agents exist\n * from previous crashes or improper shutdowns\n */\n async cleanupAgents(): Promise<void> {\n return this.withDatabase(() => this.agentStore.deleteAll());\n }\n\n /**\n * Asynchronously retrieves an entity and its components by entity IDs.\n * @param {UUID[]} entityIds - The unique identifiers of the entities to retrieve.\n * @returns {Promise<Entity[] | null>} A Promise that resolves to the entity with its components if found, null otherwise.\n */\n async getEntitiesByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n return this.withDatabase(() => this.entityStore.getByIds(entityIds));\n }\n\n async getEntitiesForRoom(roomId: UUID, includeComponents?: boolean): Promise<Entity[]> {\n return this.withDatabase(() => this.entityStore.getForRoom(roomId, includeComponents));\n }\n\n async createEntities(entities: Entity[]): Promise<boolean> {\n return this.withDatabase(() => this.entityStore.create(entities));\n }\n\n protected async ensureEntityExists(entity: Entity): Promise<boolean> {\n return this.entityStore.ensureExists(entity);\n }\n\n async updateEntity(entity: Entity): Promise<void> {\n return this.withDatabase(() => this.entityStore.update(entity));\n }\n\n async deleteEntity(entityId: UUID): Promise<void> {\n return this.withDatabase(() => this.entityStore.delete(entityId));\n }\n\n async getEntitiesByNames(params: { names: string[]; agentId: UUID }): Promise<Entity[]> {\n return this.withDatabase(() => this.entityStore.getByNames(params));\n }\n\n async searchEntitiesByName(params: {\n query: string;\n agentId: UUID;\n limit?: number;\n }): Promise<Entity[]> {\n return this.withDatabase(() => this.entityStore.searchByName(params));\n }\n\n async getComponent(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n return this.withDatabase(() =>\n this.componentStore.get(entityId, type, worldId, sourceEntityId)\n );\n }\n\n async getComponents(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.withDatabase(() => this.componentStore.getAll(entityId, worldId, sourceEntityId));\n }\n\n async createComponent(component: Component): Promise<boolean> {\n return this.withDatabase(() => this.componentStore.create(component));\n }\n\n async updateComponent(component: Component): Promise<void> {\n return this.withDatabase(() => this.componentStore.update(component));\n }\n\n async deleteComponent(componentId: UUID): Promise<void> {\n return this.withDatabase(() => this.componentStore.delete(componentId));\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID} params.roomId - The ID of the room to retrieve memories for.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {number} [params.offset] - The offset for pagination.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.tableName] - The name of the table to retrieve memories from.\n * @param {number} [params.start] - The start date to retrieve memories from.\n * @param {number} [params.end] - The end date to retrieve memories from.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemories(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n return this.withDatabase(() => this.memoryStore.get(params));\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID[]} params.roomIds - The IDs of the rooms to retrieve memories for.\n * @param {string} params.tableName - The name of the table to retrieve memories from.\n * @param {number} [params.limit] - The maximum number of memories to retrieve.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemoriesByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n return this.withDatabase(() => this.memoryStore.getByRoomIds(params));\n }\n\n /**\n * Asynchronously retrieves a memory by its unique identifier.\n * @param {UUID} id - The unique identifier of the memory to retrieve.\n * @returns {Promise<Memory | null>} A Promise that resolves to the memory if found, null otherwise.\n */\n async getMemoryById(id: UUID): Promise<Memory | null> {\n return this.withDatabase(() => this.memoryStore.getById(id));\n }\n\n /**\n * Asynchronously retrieves memories from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving memories.\n * @param {UUID[]} params.memoryIds - The IDs of the memories to retrieve.\n * @param {string} [params.tableName] - The name of the table to retrieve memories from.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async getMemoriesByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n return this.withDatabase(() => this.memoryStore.getByIds(memoryIds, tableName));\n }\n\n /**\n * Asynchronously retrieves cached embeddings from the database based on the provided parameters.\n * @param {Object} opts - The parameters for retrieving cached embeddings.\n * @param {string} opts.query_table_name - The name of the table to retrieve embeddings from.\n * @param {number} opts.query_threshold - The threshold for the levenshtein distance.\n * @param {string} opts.query_input - The input string to search for.\n * @param {string} opts.query_field_name - The name of the field to retrieve embeddings from.\n * @param {string} opts.query_field_sub_name - The name of the sub-field to retrieve embeddings from.\n * @param {number} opts.query_match_count - The maximum number of matches to retrieve.\n * @returns {Promise<{ embedding: number[]; levenshtein_score: number }[]>} A Promise that resolves to an array of cached embeddings.\n */\n async getCachedEmbeddings(opts: {\n query_table_name: string;\n query_threshold: number;\n query_input: string;\n query_field_name: string;\n query_field_sub_name: string;\n query_match_count: number;\n }): Promise<{ embedding: number[]; levenshtein_score: number }[]> {\n return this.withDatabase(async () => {\n try {\n // Drizzle database has execute method for raw SQL\n interface DrizzleDatabaseWithExecute {\n execute: (query: ReturnType<typeof sql>) => Promise<{ rows: Record<string, unknown>[] }>;\n }\n const results = await (this.db as DrizzleDatabaseWithExecute).execute(sql`\n WITH content_text AS (\n SELECT\n m.id,\n COALESCE(\n m.content->>${opts.query_field_sub_name},\n ''\n ) as content_text\n FROM memories m\n WHERE m.type = ${opts.query_table_name}\n AND m.content->>${opts.query_field_sub_name} IS NOT NULL\n ),\n embedded_text AS (\n SELECT\n ct.content_text,\n COALESCE(\n e.dim_384,\n e.dim_512,\n e.dim_768,\n e.dim_1024,\n e.dim_1536,\n e.dim_3072\n ) as embedding\n FROM content_text ct\n LEFT JOIN embeddings e ON e.memory_id = ct.id\n WHERE e.memory_id IS NOT NULL\n )\n SELECT\n embedding,\n levenshtein(${opts.query_input}, content_text) as levenshtein_score\n FROM embedded_text\n WHERE levenshtein(${opts.query_input}, content_text) <= ${opts.query_threshold}\n ORDER BY levenshtein_score\n LIMIT ${opts.query_match_count}\n `);\n\n return results.rows\n .map((row) => ({\n embedding: Array.isArray(row.embedding)\n ? row.embedding\n : typeof row.embedding === 'string'\n ? JSON.parse(row.embedding)\n : [],\n levenshtein_score: Number(row.levenshtein_score),\n }))\n .filter((row) => Array.isArray(row.embedding));\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n tableName: opts.query_table_name,\n fieldName: opts.query_field_name,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to get cached embeddings'\n );\n if (\n error instanceof Error &&\n error.message === 'levenshtein argument exceeds maximum length of 255 characters'\n ) {\n return [];\n }\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously logs an event in the database.\n * @param {Object} params - The parameters for logging an event.\n * @param {Object} params.body - The body of the event to log.\n * @param {UUID} params.entityId - The ID of the entity associated with the event.\n * @param {UUID} params.roomId - The ID of the room associated with the event.\n * @param {string} params.type - The type of the event to log.\n * @returns {Promise<void>} A Promise that resolves when the event is logged.\n */\n async log(params: {\n body: { [key: string]: unknown };\n entityId: UUID;\n roomId: UUID;\n type: string;\n }): Promise<void> {\n return this.withDatabase(async () => {\n try {\n // Sanitize JSON body to prevent Unicode escape sequence errors\n const sanitizedBody = sanitizeJsonObject(params.body);\n\n // Serialize to JSON string first for an additional layer of protection\n // This ensures any problematic characters are properly escaped during JSON serialization\n const jsonString = JSON.stringify(sanitizedBody);\n\n // Use withIsolationContext to set Entity RLS context before inserting\n // This ensures the log entry passes STRICT Entity RLS policy\n await this.withIsolationContext(params.entityId, async (tx) => {\n await tx.insert(logTable).values({\n body: sql`${jsonString}::jsonb`,\n entityId: params.entityId,\n roomId: params.roomId,\n type: params.type,\n });\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n type: params.type,\n roomId: params.roomId,\n entityId: params.entityId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create log entry'\n );\n throw error;\n }\n });\n }\n\n /**\n * Asynchronously retrieves logs from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving logs.\n * @param {UUID} params.entityId - The ID of the entity associated with the logs.\n * @param {UUID} [params.roomId] - The ID of the room associated with the logs.\n * @param {string} [params.type] - The type of the logs to retrieve.\n * @param {number} [params.count] - The maximum number of logs to retrieve.\n * @param {number} [params.offset] - The offset to retrieve logs from.\n * @returns {Promise<Log[]>} A Promise that resolves to an array of logs.\n */\n async getLogs(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n return this.logStore.getMany(params);\n }\n\n async getAgentRunSummaries(\n params: {\n limit?: number;\n roomId?: UUID;\n status?: RunStatus | 'all';\n from?: number;\n to?: number;\n entityId?: UUID;\n } = {}\n ): Promise<AgentRunSummaryResult> {\n return this.logStore.getAgentRunSummaries(this.agentId, params);\n }\n\n async deleteLog(logId: UUID): Promise<void> {\n return this.withDatabase(() => this.logStore.delete(logId));\n }\n\n /**\n * Asynchronously searches for memories in the database based on the provided parameters.\n * @param {Object} params - The parameters for searching for memories.\n * @param {string} params.tableName - The name of the table to search for memories in.\n * @param {number[]} params.embedding - The embedding to search for.\n * @param {number} [params.match_threshold] - The threshold for the cosine distance.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.query] - Optional query string for potential reranking.\n * @param {UUID} [params.roomId] - Optional room ID to filter by.\n * @param {UUID} [params.worldId] - Optional world ID to filter by.\n * @param {UUID} [params.entityId] - Optional entity ID to filter by.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async searchMemories(params: {\n tableName: string;\n embedding: number[];\n match_threshold?: number;\n count?: number;\n unique?: boolean;\n query?: string;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n }): Promise<Memory[]> {\n return await this.searchMemoriesByEmbedding(params.embedding, {\n match_threshold: params.match_threshold,\n count: params.count,\n // Pass direct scope fields down\n roomId: params.roomId,\n worldId: params.worldId,\n entityId: params.entityId,\n unique: params.unique,\n tableName: params.tableName,\n });\n }\n\n /**\n * Asynchronously searches for memories in the database based on the provided parameters.\n * @param {number[]} embedding - The embedding to search for.\n * @param {Object} params - The parameters for searching for memories.\n * @param {number} [params.match_threshold] - The threshold for the cosine distance.\n * @param {number} [params.count] - The maximum number of memories to retrieve.\n * @param {UUID} [params.roomId] - Optional room ID to filter by.\n * @param {UUID} [params.worldId] - Optional world ID to filter by.\n * @param {UUID} [params.entityId] - Optional entity ID to filter by.\n * @param {boolean} [params.unique] - Whether to retrieve unique memories only.\n * @param {string} [params.tableName] - The name of the table to search for memories in.\n * @returns {Promise<Memory[]>} A Promise that resolves to an array of memories.\n */\n async searchMemoriesByEmbedding(\n embedding: number[],\n params: {\n match_threshold?: number;\n count?: number;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n unique?: boolean;\n tableName: string;\n }\n ): Promise<Memory[]> {\n return this.withDatabase(() => this.memoryStore.searchByEmbedding(embedding, params));\n }\n\n /**\n * Asynchronously creates a new memory in the database.\n * @param {Memory & { metadata?: MemoryMetadata }} memory - The memory object to create.\n * @param {string} tableName - The name of the table to create the memory in.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created memory.\n */\n async createMemory(\n memory: Memory & { metadata?: MemoryMetadata },\n tableName: string\n ): Promise<UUID> {\n return this.withDatabase(() => this.memoryStore.create(memory, tableName));\n }\n\n /**\n * Updates an existing memory in the database.\n * @param memory The memory object with updated content and optional embedding\n * @returns Promise resolving to boolean indicating success\n */\n async updateMemory(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n return this.withDatabase(() => this.memoryStore.update(memory));\n }\n\n /**\n * Asynchronously deletes a memory from the database based on the provided parameters.\n * @param {UUID} memoryId - The ID of the memory to delete.\n * @returns {Promise<void>} A Promise that resolves when the memory is deleted.\n */\n async deleteMemory(memoryId: UUID): Promise<void> {\n return this.withDatabase(() => this.memoryStore.delete(memoryId));\n }\n\n /**\n * Asynchronously deletes multiple memories from the database in a single batch operation.\n * @param {UUID[]} memoryIds - An array of UUIDs of the memories to delete.\n * @returns {Promise<void>} A Promise that resolves when all memories are deleted.\n */\n async deleteManyMemories(memoryIds: UUID[]): Promise<void> {\n return this.withDatabase(() => this.memoryStore.deleteMany(memoryIds));\n }\n\n /**\n * Asynchronously deletes all memories from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to delete memories from.\n * @param {string} tableName - The name of the table to delete memories from.\n * @returns {Promise<void>} A Promise that resolves when the memories are deleted.\n */\n async deleteAllMemories(roomId: UUID, tableName: string): Promise<void> {\n return this.withDatabase(() => this.memoryStore.deleteAllByRoom(roomId, tableName));\n }\n\n /**\n * Asynchronously counts the number of memories in the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to count memories in.\n * @param {boolean} [unique] - Whether to count unique memories only.\n * @param {string} [tableName] - The name of the table to count memories in.\n * @returns {Promise<number>} A Promise that resolves to the number of memories.\n */\n async countMemories(roomId: UUID, unique = true, tableName = ''): Promise<number> {\n return this.withDatabase(() => this.memoryStore.count(roomId, unique, tableName));\n }\n\n /**\n * Asynchronously retrieves rooms from the database based on the provided parameters.\n * @param {UUID[]} roomIds - The IDs of the rooms to retrieve.\n * @returns {Promise<Room[] | null>} A Promise that resolves to the rooms if found, null otherwise.\n */\n async getRoomsByIds(roomIds: UUID[]): Promise<Room[] | null> {\n return this.withDatabase(() => this.roomStore.getByIds(roomIds));\n }\n\n /**\n * Asynchronously retrieves all rooms from the database based on the provided parameters.\n * @param {UUID} worldId - The ID of the world to retrieve rooms from.\n * @returns {Promise<Room[]>} A Promise that resolves to an array of rooms.\n */\n async getRoomsByWorld(worldId: UUID): Promise<Room[]> {\n return this.withDatabase(() => this.roomStore.getByWorld(worldId));\n }\n\n /**\n * Asynchronously updates a room in the database based on the provided parameters.\n * @param {Room} room - The room object to update.\n * @returns {Promise<void>} A Promise that resolves when the room is updated.\n */\n async updateRoom(room: Room): Promise<void> {\n return this.withDatabase(() => this.roomStore.update(room));\n }\n\n /**\n * Creates rooms in the database. Uses ON CONFLICT DO NOTHING for idempotency.\n *\n * @param rooms - Array of room objects to create.\n * @returns IDs of all rooms (both newly created and already existing).\n */\n async createRooms(rooms: Room[]): Promise<UUID[]> {\n return this.withDatabase(() => this.roomStore.create(rooms));\n }\n\n /**\n * Asynchronously deletes a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to delete.\n * @returns {Promise<void>} A Promise that resolves when the room is deleted.\n */\n async deleteRoom(roomId: UUID): Promise<void> {\n return this.withDatabase(() => this.roomStore.delete(roomId));\n }\n\n /**\n * Asynchronously retrieves all rooms for a participant from the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to retrieve rooms for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of room IDs.\n */\n async getRoomsForParticipant(entityId: UUID): Promise<UUID[]> {\n return this.withDatabase(() => this.participantStore.getRoomsForEntity(entityId));\n }\n\n /**\n * Asynchronously retrieves all rooms for a list of participants from the database based on the provided parameters.\n * @param {UUID[]} entityIds - The IDs of the entities to retrieve rooms for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of room IDs.\n */\n async getRoomsForParticipants(entityIds: UUID[]): Promise<UUID[]> {\n return this.withDatabase(() => this.participantStore.getRoomsForEntities(entityIds));\n }\n\n /**\n * Asynchronously adds a participant to a room in the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to add to the room.\n * @param {UUID} roomId - The ID of the room to add the entity to.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the participant was added successfully.\n */\n async addParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.withDatabase(() => this.participantStore.add(entityId, roomId));\n }\n\n async addParticipantsRoom(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n return this.withDatabase(() => this.participantStore.addMany(entityIds, roomId));\n }\n\n /**\n * Asynchronously removes a participant from a room in the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to remove from the room.\n * @param {UUID} roomId - The ID of the room to remove the entity from.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the participant was removed successfully.\n */\n async removeParticipant(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.withDatabase(() => this.participantStore.remove(entityId, roomId));\n }\n\n /**\n * Asynchronously retrieves all participants for an entity from the database based on the provided parameters.\n * @param {UUID} entityId - The ID of the entity to retrieve participants for.\n * @returns {Promise<Participant[]>} A Promise that resolves to an array of participants.\n */\n async getParticipantsForEntity(entityId: UUID): Promise<Participant[]> {\n return this.withDatabase(async () => {\n const result = await this.participantStore.getByEntity(entityId);\n const entities = await this.getEntitiesByIds([entityId]);\n\n if (!entities || !entities.length) {\n return [];\n }\n\n return result.map((row) => ({\n id: row.id,\n entity: entities[0],\n }));\n });\n }\n\n /**\n * Asynchronously retrieves all participants for a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to retrieve participants for.\n * @returns {Promise<UUID[]>} A Promise that resolves to an array of entity IDs.\n */\n async getParticipantsForRoom(roomId: UUID): Promise<UUID[]> {\n return this.withDatabase(() => this.participantStore.getForRoom(roomId));\n }\n\n /**\n * Check if an entity is a participant in a specific room/channel.\n * More efficient than getParticipantsForRoom when only checking membership.\n * @param {UUID} roomId - The ID of the room to check.\n * @param {UUID} entityId - The ID of the entity to check.\n * @returns {Promise<boolean>} A Promise that resolves to true if entity is a participant.\n */\n async isRoomParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n return this.withDatabase(() => this.participantStore.isParticipant(roomId, entityId));\n }\n\n /**\n * Asynchronously retrieves the user state for a participant in a room from the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to retrieve the participant's user state for.\n * @param {UUID} entityId - The ID of the entity to retrieve the user state for.\n * @returns {Promise<\"FOLLOWED\" | \"MUTED\" | null>} A Promise that resolves to the participant's user state.\n */\n async getParticipantUserState(\n roomId: UUID,\n entityId: UUID\n ): Promise<'FOLLOWED' | 'MUTED' | null> {\n return this.withDatabase(() => this.participantStore.getUserState(roomId, entityId));\n }\n\n /**\n * Asynchronously sets the user state for a participant in a room in the database based on the provided parameters.\n * @param {UUID} roomId - The ID of the room to set the participant's user state for.\n * @param {UUID} entityId - The ID of the entity to set the user state for.\n * @param {string} state - The state to set the participant's user state to.\n * @returns {Promise<void>} A Promise that resolves when the participant's user state is set.\n */\n async setParticipantUserState(\n roomId: UUID,\n entityId: UUID,\n state: 'FOLLOWED' | 'MUTED' | null\n ): Promise<void> {\n return this.withDatabase(() => this.participantStore.setUserState(roomId, entityId, state));\n }\n\n /**\n * Asynchronously creates a new relationship in the database based on the provided parameters.\n * @param {Object} params - The parameters for creating a new relationship.\n * @param {UUID} params.sourceEntityId - The ID of the source entity.\n * @param {UUID} params.targetEntityId - The ID of the target entity.\n * @param {string[]} [params.tags] - The tags for the relationship.\n * @param {Object} [params.metadata] - The metadata for the relationship.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the relationship was created successfully.\n */\n async createRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: { [key: string]: unknown };\n }): Promise<boolean> {\n return this.withDatabase(() => this.relationshipStore.create(params));\n }\n\n /**\n * Asynchronously updates an existing relationship in the database based on the provided parameters.\n * @param {Relationship} relationship - The relationship object to update.\n * @returns {Promise<void>} A Promise that resolves when the relationship is updated.\n */\n async updateRelationship(relationship: Relationship): Promise<void> {\n return this.withDatabase(() => this.relationshipStore.update(relationship));\n }\n\n /**\n * Asynchronously retrieves a relationship from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving a relationship.\n * @param {UUID} params.sourceEntityId - The ID of the source entity.\n * @param {UUID} params.targetEntityId - The ID of the target entity.\n * @returns {Promise<Relationship | null>} A Promise that resolves to the relationship if found, null otherwise.\n */\n async getRelationship(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n }): Promise<Relationship | null> {\n return this.withDatabase(() => this.relationshipStore.get(params));\n }\n\n /**\n * Asynchronously retrieves relationships from the database based on the provided parameters.\n * @param {Object} params - The parameters for retrieving relationships.\n * @param {UUID} params.entityId - The ID of the entity to retrieve relationships for.\n * @param {string[]} [params.tags] - The tags to filter relationships by.\n * @returns {Promise<Relationship[]>} A Promise that resolves to an array of relationships.\n */\n async getRelationships(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n return this.withDatabase(() => this.relationshipStore.getAll(params));\n }\n\n /**\n * Asynchronously retrieves a cache value from the database based on the provided key.\n * @param {string} key - The key to retrieve the cache value for.\n * @returns {Promise<T | undefined>} A Promise that resolves to the cache value if found, undefined otherwise.\n */\n async getCache<T>(key: string): Promise<T | undefined> {\n return this.withDatabase(() => this.cacheStore.get<T>(key));\n }\n\n /**\n * Asynchronously sets a cache value in the database based on the provided key and value.\n * @param {string} key - The key to set the cache value for.\n * @param {T} value - The value to set in the cache.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the cache value was set successfully.\n */\n async setCache<T>(key: string, value: T): Promise<boolean> {\n return this.withDatabase(() => this.cacheStore.set<T>(key, value));\n }\n\n /**\n * Asynchronously deletes a cache value from the database based on the provided key.\n * @param {string} key - The key to delete the cache value for.\n * @returns {Promise<boolean>} A Promise that resolves to a boolean indicating whether the cache value was deleted successfully.\n */\n async deleteCache(key: string): Promise<boolean> {\n return this.withDatabase(() => this.cacheStore.delete(key));\n }\n\n /**\n * Asynchronously creates a new world in the database based on the provided parameters.\n * @param {World} world - The world object to create.\n * @returns {Promise<UUID>} A Promise that resolves to the ID of the created world.\n */\n async createWorld(world: World): Promise<UUID> {\n return this.withDatabase(() => this.worldStore.create(world));\n }\n\n async getWorld(id: UUID): Promise<World | null> {\n return this.withDatabase(() => this.worldStore.get(id));\n }\n\n async getAllWorlds(): Promise<World[]> {\n return this.withDatabase(() => this.worldStore.getAll());\n }\n\n async updateWorld(world: World): Promise<void> {\n return this.withDatabase(() => this.worldStore.update(world));\n }\n\n async removeWorld(id: UUID): Promise<void> {\n return this.withDatabase(() => this.worldStore.remove(id));\n }\n\n async createTask(task: Task): Promise<UUID> {\n return this.withDatabase(() => this.taskStore.create(task));\n }\n\n async getTasks(params: { roomId?: UUID; tags?: string[]; entityId?: UUID }): Promise<Task[]> {\n return this.withDatabase(() => this.taskStore.getAll(params));\n }\n\n async getTasksByName(name: string): Promise<Task[]> {\n return this.withDatabase(() => this.taskStore.getByName(name));\n }\n\n async getTask(id: UUID): Promise<Task | null> {\n return this.withDatabase(() => this.taskStore.get(id));\n }\n\n async updateTask(id: UUID, task: Partial<Task>): Promise<void> {\n return this.withDatabase(() => this.taskStore.update(id, task));\n }\n\n async deleteTask(id: UUID): Promise<void> {\n return this.withDatabase(() => this.taskStore.delete(id));\n }\n\n async getMemoriesByWorldId(params: {\n worldId: UUID;\n count?: number;\n tableName?: string;\n }): Promise<Memory[]> {\n return this.withDatabase(async () => {\n // First, get all rooms for the given worldId\n const rooms = await this.db\n .select({ id: roomTable.id })\n .from(roomTable)\n .where(and(eq(roomTable.worldId, params.worldId), eq(roomTable.agentId, this.agentId)));\n\n if (rooms.length === 0) {\n return [];\n }\n\n const roomIds = rooms.map((room) => room.id as UUID);\n\n const memories = await this.getMemoriesByRoomIds({\n roomIds,\n tableName: params.tableName || 'messages',\n limit: params.count,\n });\n\n return memories;\n });\n }\n\n async deleteRoomsByWorldId(worldId: UUID): Promise<void> {\n return this.withDatabase(async () => {\n const rooms = await this.db\n .select({ id: roomTable.id })\n .from(roomTable)\n .where(and(eq(roomTable.worldId, worldId), eq(roomTable.agentId, this.agentId)));\n\n if (rooms.length === 0) {\n return;\n }\n\n const roomIds = rooms.map((room) => room.id as UUID);\n\n if (roomIds.length > 0) {\n await this.db.delete(logTable).where(inArray(logTable.roomId, roomIds));\n await this.db.delete(participantTable).where(inArray(participantTable.roomId, roomIds));\n\n const memoriesInRooms = await this.db\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(inArray(memoryTable.roomId, roomIds));\n const memoryIdsInRooms = memoriesInRooms.map((m) => m.id as UUID);\n\n if (memoryIdsInRooms.length > 0) {\n await this.db\n .delete(embeddingTable)\n .where(inArray(embeddingTable.memoryId, memoryIdsInRooms));\n await this.db.delete(memoryTable).where(inArray(memoryTable.id, memoryIdsInRooms));\n }\n\n await this.db.delete(roomTable).where(inArray(roomTable.id, roomIds));\n\n logger.debug(\n {\n src: 'plugin:sql',\n worldId,\n roomsDeleted: roomIds.length,\n memoriesDeleted: memoryIdsInRooms.length,\n },\n 'World cleanup completed'\n );\n }\n });\n }\n\n // Message Server Database Operations - delegated to MessagingStore\n\n async createMessageServer(data: {\n id?: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n }) {\n return this.messagingStore.createMessageServer(data);\n }\n\n async getMessageServers() {\n return this.messagingStore.getMessageServers();\n }\n\n async getMessageServerById(serverId: UUID) {\n return this.messagingStore.getMessageServerById(serverId);\n }\n\n async getMessageServerByRlsServerId(rlsServerId: UUID) {\n return this.messagingStore.getMessageServerByRlsServerId(rlsServerId);\n }\n\n // Server Agent Operations - delegated to MessagingStore\n\n async addAgentToMessageServer(messageServerId: UUID, agentId: UUID) {\n return this.messagingStore.addAgentToMessageServer(messageServerId, agentId);\n }\n\n async getAgentsForMessageServer(messageServerId: UUID) {\n return this.messagingStore.getAgentsForMessageServer(messageServerId);\n }\n\n async removeAgentFromMessageServer(messageServerId: UUID, agentId: UUID) {\n return this.messagingStore.removeAgentFromMessageServer(messageServerId, agentId);\n }\n\n // Channel Operations - delegated to MessagingStore\n\n async createChannel(\n data: {\n id?: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n },\n participantIds?: UUID[]\n ) {\n return this.messagingStore.createChannel(data, participantIds);\n }\n\n async getChannelsForMessageServer(messageServerId: UUID) {\n return this.messagingStore.getChannelsForMessageServer(messageServerId);\n }\n\n async getChannelDetails(channelId: UUID) {\n return this.messagingStore.getChannelDetails(channelId);\n }\n\n async updateChannel(\n channelId: UUID,\n updates: { name?: string; participantCentralUserIds?: UUID[]; metadata?: Metadata }\n ) {\n return this.messagingStore.updateChannel(channelId, updates);\n }\n\n async deleteChannel(channelId: UUID) {\n return this.messagingStore.deleteChannel(channelId);\n }\n\n async findOrCreateDmChannel(user1Id: UUID, user2Id: UUID, messageServerId: UUID) {\n return this.messagingStore.findOrCreateDmChannel(user1Id, user2Id, messageServerId);\n }\n\n // Channel Participant Operations - delegated to MessagingStore\n\n async addChannelParticipants(channelId: UUID, entityIds: UUID[]) {\n return this.messagingStore.addChannelParticipants(channelId, entityIds);\n }\n\n async getChannelParticipants(channelId: UUID) {\n return this.messagingStore.getChannelParticipants(channelId);\n }\n\n async isChannelParticipant(channelId: UUID, entityId: UUID) {\n return this.messagingStore.isChannelParticipant(channelId, entityId);\n }\n\n // Message Operations - delegated to MessagingStore\n\n async createMessage(data: {\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n messageId?: UUID;\n }) {\n return this.messagingStore.createMessage(data);\n }\n\n async getMessageById(id: UUID) {\n return this.messagingStore.getMessageById(id);\n }\n\n async updateMessage(\n id: UUID,\n patch: {\n content?: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n }\n ) {\n return this.messagingStore.updateMessage(id, patch);\n }\n\n async getMessagesForChannel(channelId: UUID, limit: number = 50, beforeTimestamp?: Date) {\n return this.messagingStore.getMessagesForChannel(channelId, limit, beforeTimestamp);\n }\n\n async deleteMessage(messageId: UUID) {\n return this.messagingStore.deleteMessage(messageId);\n }\n}\n\n// Import tables at the end to avoid circular dependencies\n",
30
- "import { sql } from 'drizzle-orm';\nimport { check, foreignKey, index, pgTable, timestamp, uuid, vector } from 'drizzle-orm/pg-core';\nimport { VECTOR_DIMS } from '@elizaos/core';\nimport { memoryTable } from './memory';\n\nexport const DIMENSION_MAP = {\n [VECTOR_DIMS.SMALL]: 'dim384',\n [VECTOR_DIMS.MEDIUM]: 'dim512',\n [VECTOR_DIMS.LARGE]: 'dim768',\n [VECTOR_DIMS.XL]: 'dim1024',\n [VECTOR_DIMS.XXL]: 'dim1536',\n [VECTOR_DIMS.XXXL]: 'dim3072',\n} as const;\n\n/**\n * Definition of the embeddings table in the database.\n * Contains columns for ID, Memory ID, Creation Timestamp, and multiple vector dimensions.\n */\nexport const embeddingTable = pgTable(\n 'embeddings',\n {\n id: uuid('id').primaryKey().defaultRandom().notNull(),\n memoryId: uuid('memory_id').references(() => memoryTable.id, { onDelete: 'cascade' }),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n dim384: vector('dim_384', { dimensions: VECTOR_DIMS.SMALL }),\n dim512: vector('dim_512', { dimensions: VECTOR_DIMS.MEDIUM }),\n dim768: vector('dim_768', { dimensions: VECTOR_DIMS.LARGE }),\n dim1024: vector('dim_1024', { dimensions: VECTOR_DIMS.XL }),\n dim1536: vector('dim_1536', { dimensions: VECTOR_DIMS.XXL }),\n dim3072: vector('dim_3072', { dimensions: VECTOR_DIMS.XXXL }),\n },\n (table) => [\n check('embedding_source_check', sql`\"memory_id\" IS NOT NULL`),\n index('idx_embedding_memory').on(table.memoryId),\n foreignKey({\n name: 'fk_embedding_memory',\n columns: [table.memoryId],\n foreignColumns: [memoryTable.id],\n }).onDelete('cascade'),\n ]\n);\n\n/**\n * Defines the possible values for the Embedding Dimension Column.\n * It can be \"dim384\", \"dim512\", \"dim768\", \"dim1024\", \"dim1536\", or \"dim3072\".\n */\nexport type EmbeddingDimensionColumn =\n | 'dim384'\n | 'dim512'\n | 'dim768'\n | 'dim1024'\n | 'dim1536'\n | 'dim3072';\n\n/**\n * Retrieve the type of a specific column in the EmbeddingTable based on the EmbeddingDimensionColumn key.\n */\nexport type EmbeddingTableColumn = (typeof embeddingTable._.columns)[EmbeddingDimensionColumn];\n",
31
- "import { relations, sql } from 'drizzle-orm';\nimport {\n boolean,\n check,\n foreignKey,\n index,\n jsonb,\n pgTable,\n text,\n timestamp,\n uuid,\n} from 'drizzle-orm/pg-core';\nimport type { Content, Metadata } from '@elizaos/core';\nimport { agentTable } from './agent';\nimport { embeddingTable } from './embedding';\nimport { entityTable } from './entity';\nimport { roomTable } from './room';\n\n/**\n * Definition of the memory table in the database.\n *\n * @param {string} tableName - The name of the table.\n * @param {object} columns - An object containing the column definitions.\n * @param {function} indexes - A function that defines the indexes for the table.\n * @returns {object} - The memory table object.\n */\nexport const memoryTable = pgTable(\n 'memories',\n {\n id: uuid('id').primaryKey().notNull(),\n type: text('type').notNull(),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n content: jsonb('content').$type<Content>().notNull(),\n entityId: uuid('entity_id').references(() => entityTable.id, {\n onDelete: 'cascade',\n }),\n agentId: uuid('agent_id')\n .references(() => agentTable.id, {\n onDelete: 'cascade',\n })\n .notNull(),\n roomId: uuid('room_id').references(() => roomTable.id, {\n onDelete: 'cascade',\n }),\n worldId: uuid('world_id'),\n // .references(() => worldTable.id, {\n // onDelete: 'set null',\n // }),\n unique: boolean('unique').default(true).notNull(),\n metadata: jsonb('metadata').$type<Metadata>().default({}).notNull(),\n },\n (table) => [\n index('idx_memories_type_room').on(table.type, table.roomId),\n index('idx_memories_world_id').on(table.worldId),\n foreignKey({\n name: 'fk_room',\n columns: [table.roomId],\n foreignColumns: [roomTable.id],\n }).onDelete('cascade'),\n foreignKey({\n name: 'fk_user',\n columns: [table.entityId],\n foreignColumns: [entityTable.id],\n }).onDelete('cascade'),\n foreignKey({\n name: 'fk_agent',\n columns: [table.agentId],\n foreignColumns: [agentTable.id],\n }).onDelete('cascade'),\n // foreignKey({\n // name: 'fk_world',\n // columns: [table.worldId],\n // foreignColumns: [worldTable.id],\n // }).onDelete('set null'),\n index('idx_memories_metadata_type').on(sql`((metadata->>'type'))`),\n index('idx_memories_document_id').on(sql`((metadata->>'documentId'))`),\n index('idx_fragments_order').on(\n sql`((metadata->>'documentId'))`,\n sql`((metadata->>'position'))`\n ),\n check(\n 'fragment_metadata_check',\n sql`\n CASE \n WHEN metadata->>'type' = 'fragment' THEN\n metadata ? 'documentId' AND \n metadata ? 'position'\n ELSE true\n END\n `\n ),\n check(\n 'document_metadata_check',\n sql`\n CASE \n WHEN metadata->>'type' = 'document' THEN\n metadata ? 'timestamp'\n ELSE true\n END\n `\n ),\n ]\n);\n\nexport const memoryRelations = relations(memoryTable, ({ one }) => ({\n embedding: one(embeddingTable),\n}));\n",
32
- "import { sql } from 'drizzle-orm';\nimport { jsonb, pgTable, text, timestamp, unique, uuid } from 'drizzle-orm/pg-core';\nimport type { Metadata } from '@elizaos/core';\nimport { agentTable } from './agent';\n\n/**\n * Represents an entity table in the database.\n * Includes columns for id, agentId, createdAt, names, and metadata.\n */\nexport const entityTable = pgTable(\n 'entities',\n {\n id: uuid('id').notNull().primaryKey(),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, {\n onDelete: 'cascade',\n }),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n names: text('names')\n .array()\n .default(sql`'{}'::text[]`)\n .notNull(),\n metadata: jsonb('metadata')\n .$type<Metadata>()\n .default(sql`'{}'::jsonb`)\n .notNull(),\n },\n (table) => {\n return {\n idAgentIdUnique: unique('id_agent_id_unique').on(table.id, table.agentId),\n };\n }\n);\n",
33
- "import { sql } from 'drizzle-orm';\nimport { jsonb, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport type { Metadata } from '@elizaos/core';\nimport { agentTable } from './agent';\n\n/**\n * Defines a table schema for 'rooms' in the database.\n *\n * @typedef {object} RoomTable\n * @property {string} id - The unique identifier for the room.\n * @property {string} agentId - The UUID of the agent associated with the room.\n * @property {string} source - The source of the room.\n * @property {string} type - The type of the room.\n * @property {string} messageServerId - The message server ID of the room.\n * @property {string} worldId - The UUID of the world associated with the room.\n * @property {string} name - The name of the room.\n * @property {object} metadata - Additional metadata for the room in JSON format.\n * @property {string} channelId - The channel ID of the room.\n * @property {number} createdAt - The timestamp of when the room was created.\n */\nexport const roomTable = pgTable('rooms', {\n id: uuid('id')\n .notNull()\n .primaryKey()\n .default(sql`gen_random_uuid()`),\n agentId: uuid('agent_id').references(() => agentTable.id, {\n onDelete: 'cascade',\n }),\n source: text('source').notNull(),\n type: text('type').notNull(),\n messageServerId: uuid('message_server_id'),\n worldId: uuid('world_id'), // no guarantee that world exists, it is optional for now\n // .references(() => worldTable.id, {\n // onDelete: 'cascade',\n // }),\n name: text('name'),\n metadata: jsonb('metadata').$type<Metadata>(),\n channelId: text('channel_id'),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n});\n",
34
- "export { agentTable } from './agent';\nexport { cacheTable } from './cache';\nexport { componentTable } from './component';\nexport { embeddingTable } from './embedding';\nexport { entityTable } from './entity';\nexport { logTable } from './log';\nexport { memoryTable } from './memory';\nexport { serverTable } from './server';\nexport { participantTable } from './participant';\nexport { relationshipTable } from './relationship';\nexport { roomTable } from './room';\nexport { worldTable } from './world';\nexport { taskTable } from './tasks';\n\n// Central database tables\nexport { messageServerTable } from './messageServer';\nexport { channelTable } from './channel';\nexport { messageTable } from './message';\nexport { channelParticipantsTable } from './channelParticipant';\nexport { messageServerAgentsTable } from './messageServerAgent';\n",
35
- "import { sql } from 'drizzle-orm';\nimport { jsonb, pgTable, text, primaryKey, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport { agentTable } from './agent';\n\n/**\n * Represents a PostgreSQL table for caching data.\n *\n * @type {pgTable}\n */\nexport const cacheTable = pgTable(\n 'cache',\n {\n key: text('key').notNull(),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, { onDelete: 'cascade' }),\n value: jsonb('value').notNull(),\n createdAt: timestamp('created_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n expiresAt: timestamp('expires_at', { withTimezone: true }),\n },\n (table) => [primaryKey({ columns: [table.key, table.agentId] })]\n);\n",
36
- "import { sql } from 'drizzle-orm';\nimport { jsonb, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport { agentTable } from './agent';\nimport { entityTable } from './entity';\nimport { roomTable } from './room';\nimport { worldTable } from './world';\n\n/**\n * Represents a component table in the database.\n */\nexport const componentTable = pgTable('components', {\n id: uuid('id')\n .primaryKey()\n .default(sql`gen_random_uuid()`)\n .notNull(),\n\n // Foreign keys\n entityId: uuid('entity_id')\n .references(() => entityTable.id, { onDelete: 'cascade' })\n .notNull(),\n agentId: uuid('agent_id')\n .references(() => agentTable.id, { onDelete: 'cascade' })\n .notNull(),\n roomId: uuid('room_id')\n .references(() => roomTable.id, { onDelete: 'cascade' })\n .notNull(),\n worldId: uuid('world_id').references(() => worldTable.id, { onDelete: 'cascade' }),\n sourceEntityId: uuid('source_entity_id').references(() => entityTable.id, {\n onDelete: 'cascade',\n }),\n\n // Data\n type: text('type').notNull(),\n data: jsonb('data').default(sql`'{}'::jsonb`),\n\n // Timestamps\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n});\n",
37
- "import { sql } from 'drizzle-orm';\nimport { jsonb, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport type { Metadata } from '@elizaos/core';\nimport { agentTable } from './agent';\n\n/**\n * Represents a table schema for worlds in the database.\n *\n * @type {PgTable}\n */\n\nexport const worldTable = pgTable('worlds', {\n id: uuid('id')\n .notNull()\n .primaryKey()\n .default(sql`gen_random_uuid()`),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, { onDelete: 'cascade' }),\n name: text('name').notNull(),\n metadata: jsonb('metadata').$type<Metadata>(),\n messageServerId: uuid('message_server_id'),\n createdAt: timestamp('created_at')\n .default(sql`now()`)\n .notNull(),\n});\n",
38
- "import { sql } from 'drizzle-orm';\nimport { foreignKey, jsonb, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport { entityTable } from './entity';\nimport { roomTable } from './room';\n\n/**\n * Represents a PostgreSQL table for storing logs.\n *\n * @type {Table}\n */\n\nexport const logTable = pgTable(\n 'logs',\n {\n id: uuid('id').defaultRandom().notNull(),\n createdAt: timestamp('created_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n entityId: uuid('entity_id')\n .notNull()\n .references(() => entityTable.id, { onDelete: 'cascade' }),\n body: jsonb('body').notNull(),\n type: text('type').notNull(),\n roomId: uuid('room_id')\n .notNull()\n .references(() => roomTable.id, { onDelete: 'cascade' }),\n },\n (table) => [\n foreignKey({\n name: 'fk_room',\n columns: [table.roomId],\n foreignColumns: [roomTable.id],\n }).onDelete('cascade'),\n foreignKey({\n name: 'fk_user',\n columns: [table.entityId],\n foreignColumns: [entityTable.id],\n }).onDelete('cascade'),\n ]\n);\n",
39
- "import { sql } from 'drizzle-orm';\nimport { foreignKey, index, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport { agentTable } from './agent';\nimport { entityTable } from './entity';\nimport { roomTable } from './room';\n\n/**\n * Defines the schema for the \"participants\" table in the database.\n *\n * @type {import('knex').TableBuilder}\n */\nexport const participantTable = pgTable(\n 'participants',\n {\n id: uuid('id')\n .notNull()\n .primaryKey()\n .default(sql`gen_random_uuid()`),\n createdAt: timestamp('created_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n entityId: uuid('entity_id').references(() => entityTable.id, {\n onDelete: 'cascade',\n }),\n roomId: uuid('room_id').references(() => roomTable.id, {\n onDelete: 'cascade',\n }),\n agentId: uuid('agent_id').references(() => agentTable.id, {\n onDelete: 'cascade',\n }),\n roomState: text('room_state'),\n },\n (table) => [\n // unique(\"participants_user_room_agent_unique\").on(table.entityId, table.roomId, table.agentId),\n index('idx_participants_user').on(table.entityId),\n index('idx_participants_room').on(table.roomId),\n foreignKey({\n name: 'fk_room',\n columns: [table.roomId],\n foreignColumns: [roomTable.id],\n }).onDelete('cascade'),\n foreignKey({\n name: 'fk_user',\n columns: [table.entityId],\n foreignColumns: [entityTable.id],\n }).onDelete('cascade'),\n ]\n);\n",
40
- "import { sql } from 'drizzle-orm';\nimport {\n foreignKey,\n index,\n jsonb,\n pgTable,\n text,\n timestamp,\n unique,\n uuid,\n} from 'drizzle-orm/pg-core';\nimport type { Metadata } from '@elizaos/core';\nimport { agentTable } from './agent';\nimport { entityTable } from './entity';\n\n/**\n * Defines the relationshipTable containing information about relationships between entities and agents.\n * @type {import('knex').TableBuilder}\n */\nexport const relationshipTable = pgTable(\n 'relationships',\n {\n id: uuid('id')\n .notNull()\n .primaryKey()\n .default(sql`gen_random_uuid()`),\n createdAt: timestamp('created_at', { withTimezone: true })\n .default(sql`now()`)\n .notNull(),\n sourceEntityId: uuid('source_entity_id')\n .notNull()\n .references(() => entityTable.id, { onDelete: 'cascade' }),\n targetEntityId: uuid('target_entity_id')\n .notNull()\n .references(() => entityTable.id, { onDelete: 'cascade' }),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, { onDelete: 'cascade' }),\n tags: text('tags').array(),\n metadata: jsonb('metadata').$type<Metadata>(),\n },\n (table) => [\n index('idx_relationships_users').on(table.sourceEntityId, table.targetEntityId),\n unique('unique_relationship').on(table.sourceEntityId, table.targetEntityId, table.agentId),\n foreignKey({\n name: 'fk_user_a',\n columns: [table.sourceEntityId],\n foreignColumns: [entityTable.id],\n }).onDelete('cascade'),\n foreignKey({\n name: 'fk_user_b',\n columns: [table.targetEntityId],\n foreignColumns: [entityTable.id],\n }).onDelete('cascade'),\n ]\n);\n",
41
- "import { jsonb, pgTable, text, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport type { Metadata } from '@elizaos/core';\nimport { agentTable } from './agent';\n\n/**\n * Represents a table schema for tasks in the database.\n *\n * @type {PgTable}\n */\nexport const taskTable = pgTable('tasks', {\n id: uuid('id').primaryKey().defaultRandom(),\n name: text('name').notNull(),\n description: text('description'),\n roomId: uuid('room_id'),\n worldId: uuid('world_id'),\n entityId: uuid('entity_id'),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, { onDelete: 'cascade' }),\n tags: text('tags')\n .array()\n .default(sql`'{}'::text[]`),\n metadata: jsonb('metadata')\n .$type<Metadata>()\n .default(sql`'{}'::jsonb`),\n createdAt: timestamp('created_at', { withTimezone: true }).defaultNow(),\n updatedAt: timestamp('updated_at', { withTimezone: true }).defaultNow(),\n});\n",
42
- "import { pgTable, text, jsonb, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport type { Metadata } from '@elizaos/core';\n\nexport const messageServerTable = pgTable('message_servers', {\n id: uuid('id').primaryKey(),\n name: text('name').notNull(),\n sourceType: text('source_type').notNull(),\n sourceId: text('source_id'),\n metadata: jsonb('metadata').$type<Metadata>(),\n createdAt: timestamp('created_at', { mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp('updated_at', { mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n});\n",
43
- "import { pgTable, text, jsonb, timestamp, uuid } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport type { Metadata } from '@elizaos/core';\nimport { messageServerTable } from './messageServer';\n\nexport const channelTable = pgTable('channels', {\n id: text('id').primaryKey(), // UUID stored as text\n messageServerId: uuid('message_server_id')\n .notNull()\n .references(() => messageServerTable.id, { onDelete: 'cascade' }),\n name: text('name').notNull(),\n type: text('type').notNull(), // Store ChannelType enum values as text\n sourceType: text('source_type'),\n sourceId: text('source_id'),\n topic: text('topic'),\n metadata: jsonb('metadata').$type<Metadata>(),\n // Note: server_id is added dynamically by RLS setup, not defined in schema\n createdAt: timestamp('created_at', { mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp('updated_at', { mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n});\n",
44
- "import { pgTable, text, jsonb, timestamp } from 'drizzle-orm/pg-core';\nimport { sql } from 'drizzle-orm';\nimport type { Metadata } from '@elizaos/core';\nimport { channelTable } from './channel';\n\nexport const messageTable = pgTable('central_messages', {\n id: text('id').primaryKey(), // UUID stored as text\n channelId: text('channel_id')\n .notNull()\n .references(() => channelTable.id, { onDelete: 'cascade' }),\n authorId: text('author_id').notNull(),\n content: text('content').notNull(),\n rawMessage: jsonb('raw_message'),\n inReplyToRootMessageId: text('in_reply_to_root_message_id').references(() => messageTable.id, {\n onDelete: 'set null',\n }),\n sourceType: text('source_type'),\n sourceId: text('source_id'),\n metadata: jsonb('metadata').$type<Metadata>(),\n createdAt: timestamp('created_at', { mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n updatedAt: timestamp('updated_at', { mode: 'date' })\n .default(sql`CURRENT_TIMESTAMP`)\n .notNull(),\n});\n",
45
- "import { pgTable, text, primaryKey } from 'drizzle-orm/pg-core';\nimport { channelTable } from './channel';\n\nexport const channelParticipantsTable = pgTable(\n 'channel_participants',\n {\n channelId: text('channel_id')\n .notNull()\n .references(() => channelTable.id, { onDelete: 'cascade' }),\n entityId: text('entity_id').notNull(), // Entity UUID (can be an agentId or a dedicated central user ID)\n },\n (table) => [primaryKey({ columns: [table.channelId, table.entityId] })]\n);\n",
46
- "import { pgTable, uuid, primaryKey } from 'drizzle-orm/pg-core';\nimport { messageServerTable } from './messageServer';\nimport { agentTable } from './agent';\n\nexport const messageServerAgentsTable = pgTable(\n 'message_server_agents',\n {\n messageServerId: uuid('message_server_id')\n .notNull()\n .references(() => messageServerTable.id, { onDelete: 'cascade' }),\n agentId: uuid('agent_id')\n .notNull()\n .references(() => agentTable.id, { onDelete: 'cascade' }),\n },\n (table) => [primaryKey({ columns: [table.messageServerId, table.agentId] })]\n);\n",
47
- "/**\n * Sanitizes a JSON object by replacing problematic Unicode escape sequences\n * that could cause errors during JSON serialization/storage\n *\n * @param value - The value to sanitize\n * @param seen - WeakSet to track circular references (internal use)\n * @returns The sanitized value\n */\nexport function sanitizeJsonObject(value: unknown, seen: WeakSet<object> = new WeakSet()): unknown {\n if (value === null || value === undefined) {\n return value;\n }\n\n if (typeof value === 'string') {\n // Handle multiple cases that can cause PostgreSQL/PgLite JSON parsing errors:\n // 1. Remove null bytes (U+0000) which are not allowed in PostgreSQL text fields\n // 2. Escape single backslashes that might be interpreted as escape sequences\n // 3. Fix broken Unicode escape sequences (\\u not followed by 4 hex digits)\n return value\n .replace(/\\u0000/g, '') // Remove null bytes\n .replace(/\\\\(?![\"\\\\/bfnrtu])/g, '\\\\\\\\') // Escape single backslashes not part of valid escape sequences\n .replace(/\\\\u(?![0-9a-fA-F]{4})/g, '\\\\\\\\u'); // Fix malformed Unicode escape sequences\n }\n\n if (typeof value === 'object') {\n if (seen.has(value as object)) {\n return null;\n } else {\n seen.add(value as object);\n }\n\n if (Array.isArray(value)) {\n return value.map((item) => sanitizeJsonObject(item, seen));\n } else {\n const result: Record<string, unknown> = {};\n for (const [key, val] of Object.entries(value)) {\n // Also sanitize object keys\n const sanitizedKey =\n typeof key === 'string'\n ? key.replace(/\\u0000/g, '').replace(/\\\\u(?![0-9a-fA-F]{4})/g, '\\\\\\\\u')\n : key;\n result[sanitizedKey] = sanitizeJsonObject(val, seen);\n }\n return result;\n }\n }\n\n return value;\n}\n",
48
- "import { type Agent, logger, type UUID } from '@elizaos/core';\nimport { count, eq } from 'drizzle-orm';\nimport { agentTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class AgentStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async get(agentId: UUID): Promise<Agent | null> {\n return this.ctx.withRetry(async () => {\n const rows = await this.db\n .select()\n .from(agentTable)\n .where(eq(agentTable.id, agentId))\n .limit(1);\n\n if (rows.length === 0) return null;\n\n const row = rows[0];\n return {\n ...row,\n username: row.username || '',\n id: row.id as UUID,\n system: !row.system ? undefined : row.system,\n bio: !row.bio ? '' : row.bio,\n createdAt: row.createdAt.getTime(),\n updatedAt: row.updatedAt.getTime(),\n settings: row.settings as Agent['settings'],\n };\n }, 'AgentStore.get');\n }\n\n async getAll(): Promise<Partial<Agent>[]> {\n const result = await this.ctx.withRetry(async () => {\n const rows = await this.db\n .select({\n id: agentTable.id,\n name: agentTable.name,\n bio: agentTable.bio,\n })\n .from(agentTable);\n return rows.map((row) => ({\n ...row,\n id: row.id as UUID,\n bio: row.bio === null ? '' : row.bio,\n }));\n }, 'AgentStore.getAll');\n return result || [];\n }\n\n async create(agent: Agent): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n if (agent.id) {\n const existing = await this.db\n .select({ id: agentTable.id })\n .from(agentTable)\n .where(eq(agentTable.id, agent.id))\n .limit(1);\n\n if (existing.length > 0) {\n logger.warn(\n { src: 'plugin:sql', agentId: agent.id },\n 'Attempted to create agent with duplicate ID'\n );\n return false;\n }\n }\n\n await this.db.transaction(async (tx) => {\n await tx.insert(agentTable).values({\n ...agent,\n createdAt: new Date(agent.createdAt || Date.now()),\n updatedAt: new Date(agent.updatedAt || Date.now()),\n });\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: agent.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create agent'\n );\n return false;\n }\n }, 'AgentStore.create');\n }\n\n async update(agentId: UUID, agent: Partial<Agent>): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n if (!agentId) {\n throw new Error('Agent ID is required for update');\n }\n\n await this.db.transaction(async (tx) => {\n if (agent?.settings) {\n agent.settings = await this.mergeSettings(tx, agentId, agent.settings);\n }\n\n const updateData: Record<string, unknown> = { ...agent };\n\n if (updateData.createdAt) {\n if (typeof updateData.createdAt === 'number') {\n updateData.createdAt = new Date(updateData.createdAt);\n } else {\n delete updateData.createdAt;\n }\n }\n if (updateData.updatedAt) {\n if (typeof updateData.updatedAt === 'number') {\n updateData.updatedAt = new Date(updateData.updatedAt);\n } else {\n updateData.updatedAt = new Date();\n }\n } else {\n updateData.updatedAt = new Date();\n }\n\n await tx.update(agentTable).set(updateData).where(eq(agentTable.id, agentId));\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to update agent'\n );\n return false;\n }\n }, 'AgentStore.update');\n }\n\n async delete(agentId: UUID): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n const result = await this.db\n .delete(agentTable)\n .where(eq(agentTable.id, agentId))\n .returning();\n\n if (result.length === 0) {\n logger.warn({ src: 'plugin:sql', agentId }, 'Agent not found for deletion');\n return false;\n }\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to delete agent'\n );\n throw error;\n }\n }, 'AgentStore.delete');\n }\n\n async count(): Promise<number> {\n return this.ctx.withRetry(async () => {\n try {\n const result = await this.db.select({ count: count() }).from(agentTable);\n return result[0]?.count || 0;\n } catch (error) {\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Failed to count agents'\n );\n return 0;\n }\n }, 'AgentStore.count');\n }\n\n async deleteAll(): Promise<void> {\n return this.ctx.withRetry(async () => {\n try {\n await this.db.delete(agentTable);\n } catch (error) {\n logger.error(\n { src: 'plugin:sql', error: error instanceof Error ? error.message : String(error) },\n 'Failed to clean up agent table'\n );\n throw error;\n }\n }, 'AgentStore.deleteAll');\n }\n\n private async mergeSettings<T extends Record<string, unknown>>(\n tx: DrizzleDatabase,\n agentId: UUID,\n updatedSettings: T\n ): Promise<T> {\n const currentAgent = await tx\n .select({ settings: agentTable.settings })\n .from(agentTable)\n .where(eq(agentTable.id, agentId))\n .limit(1);\n\n const currentSettings =\n currentAgent.length > 0 && currentAgent[0].settings ? currentAgent[0].settings : {};\n\n const deepMerge = (\n target: Record<string, unknown> | unknown,\n source: Record<string, unknown>\n ): Record<string, unknown> | undefined => {\n if (source === null) return undefined;\n if (Array.isArray(source) || typeof source !== 'object') return source;\n\n const output =\n typeof target === 'object' && target !== null && !Array.isArray(target)\n ? { ...target }\n : {};\n\n for (const key of Object.keys(source)) {\n const sourceValue = source[key];\n if (sourceValue === null) {\n delete output[key];\n } else if (typeof sourceValue === 'object' && !Array.isArray(sourceValue)) {\n const nested = deepMerge(output[key], sourceValue as Record<string, unknown>);\n if (nested === undefined) delete output[key];\n else output[key] = nested;\n } else {\n output[key] = sourceValue;\n }\n }\n\n if (Object.keys(output).length === 0) {\n if (!(typeof source === 'object' && source !== null && Object.keys(source).length === 0)) {\n return undefined;\n }\n }\n return output;\n };\n\n const finalSettings = deepMerge(currentSettings, updatedSettings);\n return (finalSettings ?? {}) as T;\n }\n}\n",
49
- "import { logger, type Memory, type MemoryMetadata, type UUID } from '@elizaos/core';\nimport { and, cosineDistance, desc, eq, gte, inArray, lte, sql } from 'drizzle-orm';\nimport { v4 } from 'uuid';\nimport { embeddingTable, memoryTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class MemoryStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async get(params: {\n entityId?: UUID;\n agentId?: UUID;\n count?: number;\n offset?: number;\n unique?: boolean;\n tableName: string;\n start?: number;\n end?: number;\n roomId?: UUID;\n worldId?: UUID;\n }): Promise<Memory[]> {\n const { entityId, agentId, roomId, worldId, tableName, unique, start, end, offset } = params;\n\n if (!tableName) throw new Error('tableName is required');\n if (offset !== undefined && offset < 0) {\n throw new Error('offset must be a non-negative number');\n }\n\n return this.ctx.withIsolationContext(entityId ?? null, async (tx) => {\n const conditions = [eq(memoryTable.type, tableName)];\n\n if (start) conditions.push(gte(memoryTable.createdAt, new Date(start)));\n if (roomId) conditions.push(eq(memoryTable.roomId, roomId));\n if (worldId) conditions.push(eq(memoryTable.worldId, worldId));\n if (end) conditions.push(lte(memoryTable.createdAt, new Date(end)));\n if (unique) conditions.push(eq(memoryTable.unique, true));\n if (agentId) conditions.push(eq(memoryTable.agentId, agentId));\n\n const baseQuery = tx\n .select({\n memory: {\n id: memoryTable.id,\n type: memoryTable.type,\n createdAt: memoryTable.createdAt,\n content: memoryTable.content,\n entityId: memoryTable.entityId,\n agentId: memoryTable.agentId,\n roomId: memoryTable.roomId,\n unique: memoryTable.unique,\n metadata: memoryTable.metadata,\n },\n embedding: embeddingTable[this.ctx.getEmbeddingDimension()],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt), desc(memoryTable.id));\n\n const rows = await (async () => {\n if (params.count && offset !== undefined && offset > 0) {\n return baseQuery.limit(params.count).offset(offset);\n } else if (params.count) {\n return baseQuery.limit(params.count);\n } else if (offset !== undefined && offset > 0) {\n return baseQuery.offset(offset);\n }\n return baseQuery;\n })();\n\n return rows.map((row) => ({\n id: row.memory.id as UUID,\n type: row.memory.type,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ? Array.from(row.embedding) : undefined,\n }));\n });\n }\n\n async getByRoomIds(params: {\n roomIds: UUID[];\n tableName: string;\n limit?: number;\n }): Promise<Memory[]> {\n return this.ctx.withRetry(async () => {\n if (params.roomIds.length === 0) return [];\n\n const conditions = [\n eq(memoryTable.type, params.tableName),\n inArray(memoryTable.roomId, params.roomIds),\n eq(memoryTable.agentId, this.ctx.agentId),\n ];\n\n const query = this.db\n .select({\n id: memoryTable.id,\n type: memoryTable.type,\n createdAt: memoryTable.createdAt,\n content: memoryTable.content,\n entityId: memoryTable.entityId,\n agentId: memoryTable.agentId,\n roomId: memoryTable.roomId,\n unique: memoryTable.unique,\n metadata: memoryTable.metadata,\n })\n .from(memoryTable)\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt), desc(memoryTable.id));\n\n const rows = params.limit ? await query.limit(params.limit) : await query;\n\n return rows.map((row) => ({\n id: row.id as UUID,\n createdAt: row.createdAt.getTime(),\n content: typeof row.content === 'string' ? JSON.parse(row.content) : row.content,\n entityId: row.entityId as UUID,\n agentId: row.agentId as UUID,\n roomId: row.roomId as UUID,\n unique: row.unique,\n metadata: row.metadata,\n })) as Memory[];\n }, 'MemoryStore.getByRoomIds');\n }\n\n async getById(id: UUID): Promise<Memory | null> {\n return this.ctx.withRetry(async () => {\n // Split query to avoid Drizzle ORM issue with leftJoin on dynamic vector columns\n const memoryResult = await this.db\n .select()\n .from(memoryTable)\n .where(eq(memoryTable.id, id))\n .limit(1);\n\n if (memoryResult.length === 0) return null;\n\n const memory = memoryResult[0];\n\n // Fetch embedding separately\n let embedding: number[] | undefined;\n try {\n const embeddingCol = this.ctx.getEmbeddingDimension();\n const embeddingResult = await this.db\n .select({ embedding: embeddingTable[embeddingCol] })\n .from(embeddingTable)\n .where(eq(embeddingTable.memoryId, id))\n .limit(1);\n\n embedding = embeddingResult[0]?.embedding ?? undefined;\n } catch {\n embedding = undefined;\n }\n\n return {\n id: memory.id as UUID,\n createdAt: memory.createdAt.getTime(),\n content: typeof memory.content === 'string' ? JSON.parse(memory.content) : memory.content,\n entityId: memory.entityId as UUID,\n agentId: memory.agentId as UUID,\n roomId: memory.roomId as UUID,\n unique: memory.unique,\n metadata: memory.metadata as MemoryMetadata,\n embedding,\n };\n }, 'MemoryStore.getById');\n }\n\n async getByIds(memoryIds: UUID[], tableName?: string): Promise<Memory[]> {\n return this.ctx.withRetry(async () => {\n if (memoryIds.length === 0) return [];\n\n const conditions = [inArray(memoryTable.id, memoryIds)];\n if (tableName) conditions.push(eq(memoryTable.type, tableName));\n\n const rows = await this.db\n .select({\n memory: memoryTable,\n embedding: embeddingTable[this.ctx.getEmbeddingDimension()],\n })\n .from(memoryTable)\n .leftJoin(embeddingTable, eq(embeddingTable.memoryId, memoryTable.id))\n .where(and(...conditions))\n .orderBy(desc(memoryTable.createdAt), desc(memoryTable.id));\n\n return rows.map((row) => ({\n id: row.memory.id as UUID,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n }));\n }, 'MemoryStore.getByIds');\n }\n\n async searchByEmbedding(\n embedding: number[],\n params: {\n match_threshold?: number;\n count?: number;\n roomId?: UUID;\n worldId?: UUID;\n entityId?: UUID;\n unique?: boolean;\n tableName: string;\n }\n ): Promise<Memory[]> {\n return this.ctx.withRetry(async () => {\n const cleanVector = embedding.map((n) => (Number.isFinite(n) ? Number(n.toFixed(6)) : 0));\n\n const similarity = sql<number>`1 - (${cosineDistance(\n embeddingTable[this.ctx.getEmbeddingDimension()],\n cleanVector\n )})`;\n\n const conditions = [\n eq(memoryTable.type, params.tableName),\n eq(memoryTable.agentId, this.ctx.agentId),\n ];\n\n if (params.unique) conditions.push(eq(memoryTable.unique, true));\n if (params.roomId) conditions.push(eq(memoryTable.roomId, params.roomId));\n if (params.worldId) conditions.push(eq(memoryTable.worldId, params.worldId));\n if (params.entityId) conditions.push(eq(memoryTable.entityId, params.entityId));\n if (params.match_threshold) conditions.push(gte(similarity, params.match_threshold));\n\n const results = await this.db\n .select({\n memory: memoryTable,\n similarity,\n embedding: embeddingTable[this.ctx.getEmbeddingDimension()],\n })\n .from(embeddingTable)\n .innerJoin(memoryTable, eq(memoryTable.id, embeddingTable.memoryId))\n .where(and(...conditions))\n .orderBy(desc(similarity))\n .limit(params.count ?? 10);\n\n return results.map((row) => ({\n id: row.memory.id as UUID,\n type: row.memory.type,\n createdAt: row.memory.createdAt.getTime(),\n content:\n typeof row.memory.content === 'string'\n ? JSON.parse(row.memory.content)\n : row.memory.content,\n entityId: row.memory.entityId as UUID,\n agentId: row.memory.agentId as UUID,\n roomId: row.memory.roomId as UUID,\n worldId: row.memory.worldId as UUID | undefined,\n unique: row.memory.unique,\n metadata: row.memory.metadata as MemoryMetadata,\n embedding: row.embedding ?? undefined,\n similarity: row.similarity,\n }));\n }, 'MemoryStore.searchByEmbedding');\n }\n\n async create(memory: Memory & { metadata?: MemoryMetadata }, tableName: string): Promise<UUID> {\n const memoryId = memory.id ?? (v4() as UUID);\n\n if (memory.unique === undefined) {\n memory.unique = true;\n if (memory.embedding && Array.isArray(memory.embedding)) {\n const similarMemories = await this.searchByEmbedding(memory.embedding, {\n tableName,\n roomId: memory.roomId,\n worldId: memory.worldId,\n entityId: memory.entityId,\n match_threshold: 0.95,\n count: 1,\n });\n memory.unique = similarMemories.length === 0;\n }\n }\n\n const contentToInsert =\n typeof memory.content === 'string' ? memory.content : JSON.stringify(memory.content ?? {});\n\n const metadataToInsert =\n typeof memory.metadata === 'string' ? memory.metadata : JSON.stringify(memory.metadata ?? {});\n\n await this.ctx.withIsolationContext(memory.entityId, async (tx) => {\n const inserted = await tx\n .insert(memoryTable)\n .values([\n {\n id: memoryId,\n type: tableName,\n content: sql`${contentToInsert}::jsonb`,\n metadata: sql`${metadataToInsert}::jsonb`,\n entityId: memory.entityId,\n roomId: memory.roomId,\n worldId: memory.worldId,\n agentId: memory.agentId || this.ctx.agentId,\n unique: memory.unique,\n createdAt: memory.createdAt ? new Date(memory.createdAt) : new Date(),\n },\n ])\n .onConflictDoNothing()\n .returning();\n\n if (inserted.length > 0 && memory.embedding && Array.isArray(memory.embedding)) {\n await this.upsertEmbedding(tx, memoryId, memory.embedding);\n }\n });\n\n return memoryId;\n }\n\n async update(\n memory: Partial<Memory> & { id: UUID; metadata?: MemoryMetadata }\n ): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n await this.db.transaction(async (tx) => {\n if (memory.content) {\n const contentToUpdate =\n typeof memory.content === 'string'\n ? memory.content\n : JSON.stringify(memory.content ?? {});\n\n const metadataToUpdate =\n typeof memory.metadata === 'string'\n ? memory.metadata\n : JSON.stringify(memory.metadata ?? {});\n\n await tx\n .update(memoryTable)\n .set({\n content: sql`${contentToUpdate}::jsonb`,\n ...(memory.metadata && { metadata: sql`${metadataToUpdate}::jsonb` }),\n })\n .where(eq(memoryTable.id, memory.id));\n } else if (memory.metadata) {\n const metadataToUpdate =\n typeof memory.metadata === 'string'\n ? memory.metadata\n : JSON.stringify(memory.metadata ?? {});\n\n await tx\n .update(memoryTable)\n .set({ metadata: sql`${metadataToUpdate}::jsonb` })\n .where(eq(memoryTable.id, memory.id));\n }\n\n if (memory.embedding && Array.isArray(memory.embedding)) {\n await this.upsertEmbedding(tx, memory.id, memory.embedding);\n }\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n memoryId: memory.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to update memory'\n );\n return false;\n }\n }, 'MemoryStore.update');\n }\n\n async delete(memoryId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.transaction(async (tx) => {\n await this.deleteFragments(tx, memoryId);\n await tx.delete(embeddingTable).where(eq(embeddingTable.memoryId, memoryId));\n await tx.delete(memoryTable).where(eq(memoryTable.id, memoryId));\n });\n }, 'MemoryStore.delete');\n }\n\n async deleteMany(memoryIds: UUID[]): Promise<void> {\n if (memoryIds.length === 0) return;\n\n return this.ctx.withRetry(async () => {\n await this.db.transaction(async (tx) => {\n const BATCH_SIZE = 100;\n for (let i = 0; i < memoryIds.length; i += BATCH_SIZE) {\n const batch = memoryIds.slice(i, i + BATCH_SIZE);\n\n await Promise.all(batch.map((id) => this.deleteFragments(tx, id)));\n await tx.delete(embeddingTable).where(inArray(embeddingTable.memoryId, batch));\n await tx.delete(memoryTable).where(inArray(memoryTable.id, batch));\n }\n });\n }, 'MemoryStore.deleteMany');\n }\n\n async deleteAllByRoom(roomId: UUID, tableName: string): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.transaction(async (tx) => {\n const rows = await tx\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(and(eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)));\n\n const ids = rows.map((r) => r.id);\n if (ids.length === 0) return;\n\n await Promise.all(\n ids.map(async (memoryId) => {\n await this.deleteFragments(tx, memoryId);\n await tx.delete(embeddingTable).where(eq(embeddingTable.memoryId, memoryId));\n })\n );\n\n await tx\n .delete(memoryTable)\n .where(and(eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)));\n });\n }, 'MemoryStore.deleteAllByRoom');\n }\n\n async count(roomId: UUID, unique = true, tableName = ''): Promise<number> {\n if (!tableName) throw new Error('tableName is required');\n\n return this.ctx.withRetry(async () => {\n const conditions = [eq(memoryTable.roomId, roomId), eq(memoryTable.type, tableName)];\n if (unique) conditions.push(eq(memoryTable.unique, true));\n\n const result = await this.db\n .select({ count: sql<number>`count(*)` })\n .from(memoryTable)\n .where(and(...conditions));\n\n return Number(result[0]?.count ?? 0);\n }, 'MemoryStore.count');\n }\n\n private async upsertEmbedding(\n tx: DrizzleDatabase,\n memoryId: UUID,\n embedding: number[]\n ): Promise<void> {\n const cleanVector = embedding.map((n) => (Number.isFinite(n) ? Number(n.toFixed(6)) : 0));\n\n const existingEmbedding = await tx\n .select({ id: embeddingTable.id })\n .from(embeddingTable)\n .where(eq(embeddingTable.memoryId, memoryId))\n .limit(1);\n\n if (existingEmbedding.length > 0) {\n const updateValues: Record<string, unknown> = {};\n updateValues[this.ctx.getEmbeddingDimension()] = cleanVector;\n await tx\n .update(embeddingTable)\n .set(updateValues)\n .where(eq(embeddingTable.memoryId, memoryId));\n } else {\n const embeddingValues: Record<string, unknown> = { id: v4(), memoryId };\n embeddingValues[this.ctx.getEmbeddingDimension()] = cleanVector;\n await tx.insert(embeddingTable).values([embeddingValues]);\n }\n }\n\n private async deleteFragments(tx: DrizzleDatabase, documentId: UUID): Promise<void> {\n const fragments = await tx\n .select({ id: memoryTable.id })\n .from(memoryTable)\n .where(\n and(\n eq(memoryTable.agentId, this.ctx.agentId),\n sql`${memoryTable.metadata}->>'documentId' = ${documentId}`\n )\n );\n\n if (fragments.length > 0) {\n const fragmentIds = fragments.map((f) => f.id) as UUID[];\n await tx.delete(embeddingTable).where(inArray(embeddingTable.memoryId, fragmentIds));\n await tx.delete(memoryTable).where(inArray(memoryTable.id, fragmentIds));\n }\n }\n}\n",
50
- "import validate from './validate.js';\nconst byteToHex = [];\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\nexport function unsafeStringify(arr, offset = 0) {\n return (byteToHex[arr[offset + 0]] +\n byteToHex[arr[offset + 1]] +\n byteToHex[arr[offset + 2]] +\n byteToHex[arr[offset + 3]] +\n '-' +\n byteToHex[arr[offset + 4]] +\n byteToHex[arr[offset + 5]] +\n '-' +\n byteToHex[arr[offset + 6]] +\n byteToHex[arr[offset + 7]] +\n '-' +\n byteToHex[arr[offset + 8]] +\n byteToHex[arr[offset + 9]] +\n '-' +\n byteToHex[arr[offset + 10]] +\n byteToHex[arr[offset + 11]] +\n byteToHex[arr[offset + 12]] +\n byteToHex[arr[offset + 13]] +\n byteToHex[arr[offset + 14]] +\n byteToHex[arr[offset + 15]]).toLowerCase();\n}\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset);\n if (!validate(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n return uuid;\n}\nexport default stringify;\n",
51
- "let getRandomValues;\nconst rnds8 = new Uint8Array(16);\nexport default function rng() {\n if (!getRandomValues) {\n if (typeof crypto === 'undefined' || !crypto.getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n getRandomValues = crypto.getRandomValues.bind(crypto);\n }\n return getRandomValues(rnds8);\n}\n",
52
- "const randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nexport default { randomUUID };\n",
53
- "import native from './native.js';\nimport rng from './rng.js';\nimport { unsafeStringify } from './stringify.js';\nfunction _v4(options, buf, offset) {\n options = options || {};\n const rnds = options.random ?? options.rng?.() ?? rng();\n if (rnds.length < 16) {\n throw new Error('Random bytes length must be >= 16');\n }\n rnds[6] = (rnds[6] & 0x0f) | 0x40;\n rnds[8] = (rnds[8] & 0x3f) | 0x80;\n if (buf) {\n offset = offset || 0;\n if (offset < 0 || offset + 16 > buf.length) {\n throw new RangeError(`UUID byte range ${offset}:${offset + 15} is out of buffer bounds`);\n }\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n return buf;\n }\n return unsafeStringify(rnds);\n}\nfunction v4(options, buf, offset) {\n if (native.randomUUID && !buf && !options) {\n return native.randomUUID();\n }\n return _v4(options, buf, offset);\n}\nexport default v4;\n",
54
- "import { ChannelType, type Room, RoomMetadata, type UUID } from '@elizaos/core';\nimport { and, eq, inArray } from 'drizzle-orm';\nimport { v4 } from 'uuid';\nimport { roomTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class RoomStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async getByIds(roomIds: UUID[]): Promise<Room[] | null> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select({\n id: roomTable.id,\n name: roomTable.name,\n channelId: roomTable.channelId,\n agentId: roomTable.agentId,\n messageServerId: roomTable.messageServerId,\n worldId: roomTable.worldId,\n type: roomTable.type,\n source: roomTable.source,\n metadata: roomTable.metadata,\n })\n .from(roomTable)\n .where(and(inArray(roomTable.id, roomIds), eq(roomTable.agentId, this.ctx.agentId)));\n\n return result.map((room) => ({\n ...room,\n id: room.id as UUID,\n name: room.name ?? undefined,\n agentId: room.agentId as UUID,\n messageServerId: room.messageServerId as UUID,\n serverId: room.messageServerId as UUID,\n worldId: room.worldId as UUID,\n channelId: room.channelId as UUID,\n type: room.type as ChannelType,\n metadata: room.metadata as RoomMetadata,\n }));\n }, 'RoomStore.getByIds');\n }\n\n async getByWorld(worldId: UUID): Promise<Room[]> {\n return this.ctx.withRetry(async () => {\n const result = await this.db.select().from(roomTable).where(eq(roomTable.worldId, worldId));\n\n return result.map((room) => ({\n ...room,\n id: room.id as UUID,\n name: room.name ?? undefined,\n agentId: room.agentId as UUID,\n messageServerId: room.messageServerId as UUID,\n serverId: room.messageServerId as UUID,\n worldId: room.worldId as UUID,\n channelId: room.channelId as UUID,\n type: room.type as ChannelType,\n metadata: room.metadata as RoomMetadata,\n }));\n }, 'RoomStore.getByWorld');\n }\n\n async update(room: Room): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db\n .update(roomTable)\n .set({ ...room, agentId: this.ctx.agentId })\n .where(eq(roomTable.id, room.id));\n }, 'RoomStore.update');\n }\n\n async create(rooms: Room[]): Promise<UUID[]> {\n return this.ctx.withRetry(async () => {\n const roomsWithIds = rooms.map((room) => ({\n ...room,\n agentId: this.ctx.agentId,\n id: room.id || v4(),\n }));\n\n await this.db.insert(roomTable).values(roomsWithIds).onConflictDoNothing();\n\n return roomsWithIds.map((r) => r.id as UUID);\n }, 'RoomStore.create');\n }\n\n async delete(roomId: UUID): Promise<void> {\n if (!roomId) throw new Error('Room ID is required');\n return this.ctx.withRetry(async () => {\n await this.db.transaction(async (tx) => {\n await tx.delete(roomTable).where(eq(roomTable.id, roomId));\n });\n }, 'RoomStore.delete');\n }\n\n async deleteByWorld(worldId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.delete(roomTable).where(eq(roomTable.worldId, worldId));\n }, 'RoomStore.deleteByWorld');\n }\n}\n",
55
- "import { logger, type UUID } from '@elizaos/core';\nimport { and, eq, inArray } from 'drizzle-orm';\nimport { participantTable, roomTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class ParticipantStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async getRoomsForEntity(entityId: UUID): Promise<UUID[]> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select({ roomId: participantTable.roomId })\n .from(participantTable)\n .innerJoin(roomTable, eq(participantTable.roomId, roomTable.id))\n .where(\n and(eq(participantTable.entityId, entityId), eq(roomTable.agentId, this.ctx.agentId))\n );\n\n return result.map((row) => row.roomId as UUID);\n }, 'ParticipantStore.getRoomsForEntity');\n }\n\n async getRoomsForEntities(entityIds: UUID[]): Promise<UUID[]> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .selectDistinct({ roomId: participantTable.roomId })\n .from(participantTable)\n .innerJoin(roomTable, eq(participantTable.roomId, roomTable.id))\n .where(\n and(\n inArray(participantTable.entityId, entityIds),\n eq(roomTable.agentId, this.ctx.agentId)\n )\n );\n\n return result.map((row) => row.roomId as UUID);\n }, 'ParticipantStore.getRoomsForEntities');\n }\n\n async add(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n await this.db\n .insert(participantTable)\n .values({\n entityId,\n roomId,\n agentId: this.ctx.agentId,\n })\n .onConflictDoNothing();\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId,\n roomId,\n agentId: this.ctx.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to add participant to room'\n );\n return false;\n }\n }, 'ParticipantStore.add');\n }\n\n async addMany(entityIds: UUID[], roomId: UUID): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n const values = entityIds.map((id) => ({\n entityId: id,\n roomId,\n agentId: this.ctx.agentId,\n }));\n await this.db.insert(participantTable).values(values).onConflictDoNothing().execute();\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n roomId,\n agentId: this.ctx.agentId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to add participants to room'\n );\n return false;\n }\n }, 'ParticipantStore.addMany');\n }\n\n async remove(entityId: UUID, roomId: UUID): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n const result = await this.db.transaction(async (tx) => {\n return await tx\n .delete(participantTable)\n .where(\n and(eq(participantTable.entityId, entityId), eq(participantTable.roomId, roomId))\n )\n .returning();\n });\n return result.length > 0;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId,\n roomId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to remove participant from room'\n );\n return false;\n }\n }, 'ParticipantStore.remove');\n }\n\n async getForRoom(roomId: UUID): Promise<UUID[]> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select({ entityId: participantTable.entityId })\n .from(participantTable)\n .where(eq(participantTable.roomId, roomId));\n\n return result.map((row) => row.entityId as UUID);\n }, 'ParticipantStore.getForRoom');\n }\n\n async isParticipant(roomId: UUID, entityId: UUID): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select()\n .from(participantTable)\n .where(and(eq(participantTable.roomId, roomId), eq(participantTable.entityId, entityId)))\n .limit(1);\n\n return result.length > 0;\n }, 'ParticipantStore.isParticipant');\n }\n\n async getUserState(roomId: UUID, entityId: UUID): Promise<'FOLLOWED' | 'MUTED' | null> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select({ roomState: participantTable.roomState })\n .from(participantTable)\n .where(\n and(\n eq(participantTable.roomId, roomId),\n eq(participantTable.entityId, entityId),\n eq(participantTable.agentId, this.ctx.agentId)\n )\n )\n .limit(1);\n\n return (result[0]?.roomState as 'FOLLOWED' | 'MUTED' | null) ?? null;\n }, 'ParticipantStore.getUserState');\n }\n\n async setUserState(\n roomId: UUID,\n entityId: UUID,\n state: 'FOLLOWED' | 'MUTED' | null\n ): Promise<void> {\n return this.ctx.withRetry(async () => {\n try {\n await this.db.transaction(async (tx) => {\n await tx\n .update(participantTable)\n .set({ roomState: state })\n .where(\n and(\n eq(participantTable.roomId, roomId),\n eq(participantTable.entityId, entityId),\n eq(participantTable.agentId, this.ctx.agentId)\n )\n );\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n roomId,\n entityId,\n state,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to set participant follow state'\n );\n throw error;\n }\n }, 'ParticipantStore.setUserState');\n }\n\n async getByEntity(entityId: UUID): Promise<Array<{ id: UUID; entityId: UUID; roomId: UUID }>> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select({\n id: participantTable.id,\n entityId: participantTable.entityId,\n roomId: participantTable.roomId,\n })\n .from(participantTable)\n .where(eq(participantTable.entityId, entityId));\n\n return result.map((row) => ({\n id: row.id as UUID,\n entityId: row.entityId as UUID,\n roomId: row.roomId as UUID,\n }));\n }, 'ParticipantStore.getByEntity');\n }\n}\n",
56
- "import { logger, type Component, type Entity, type UUID } from '@elizaos/core';\nimport { and, eq, inArray, or, sql } from 'drizzle-orm';\nimport { componentTable, entityTable, participantTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class EntityStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async getByIds(entityIds: UUID[]): Promise<Entity[] | null> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select({\n entity: entityTable,\n components: componentTable,\n })\n .from(entityTable)\n .leftJoin(componentTable, eq(componentTable.entityId, entityTable.id))\n .where(inArray(entityTable.id, entityIds));\n\n if (result.length === 0) return [];\n\n const entities: Record<UUID, Entity> = {};\n const entityComponents: Record<UUID, Entity['components']> = {};\n\n for (const e of result) {\n const key = e.entity.id;\n entities[key] = e.entity;\n if (entityComponents[key] === undefined) entityComponents[key] = [];\n if (e.components) {\n const componentsArray = Array.isArray(e.components) ? e.components : [e.components];\n entityComponents[key] = [...entityComponents[key], ...componentsArray];\n }\n }\n\n for (const k of Object.keys(entityComponents)) {\n entities[k].components = entityComponents[k];\n }\n\n return Object.values(entities);\n }, 'EntityStore.getByIds');\n }\n\n async getForRoom(roomId: UUID, includeComponents?: boolean): Promise<Entity[]> {\n return this.ctx.withRetry(async () => {\n const query = this.db\n .select({\n entity: entityTable,\n ...(includeComponents && { components: componentTable }),\n })\n .from(participantTable)\n .leftJoin(\n entityTable,\n and(\n eq(participantTable.entityId, entityTable.id),\n eq(entityTable.agentId, this.ctx.agentId)\n )\n );\n\n if (includeComponents) {\n query.leftJoin(componentTable, eq(componentTable.entityId, entityTable.id));\n }\n\n const result = await query.where(eq(participantTable.roomId, roomId));\n\n const entitiesByIdMap = new Map<UUID, Entity>();\n\n for (const row of result) {\n if (!row.entity) continue;\n\n const entityId = row.entity.id as UUID;\n if (!entitiesByIdMap.has(entityId)) {\n const entity: Entity = {\n ...row.entity,\n id: entityId,\n agentId: row.entity.agentId as UUID,\n metadata: row.entity.metadata as Record<string, unknown>,\n components: includeComponents ? [] : undefined,\n };\n entitiesByIdMap.set(entityId, entity);\n }\n\n if (includeComponents && row.components) {\n const entity = entitiesByIdMap.get(entityId);\n if (entity) {\n if (!entity.components) entity.components = [];\n entity.components.push(row.components as Component);\n }\n }\n }\n\n return Array.from(entitiesByIdMap.values());\n }, 'EntityStore.getForRoom');\n }\n\n async create(entities: Entity[]): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n return await this.db.transaction(async (tx) => {\n const normalizedEntities = entities.map((entity) => ({\n ...entity,\n names: this.normalizeNames(entity.names),\n metadata: entity.metadata || {},\n }));\n\n await tx.insert(entityTable).values(normalizedEntities).onConflictDoNothing();\n return true;\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId: entities[0]?.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create entities'\n );\n return false;\n }\n }, 'EntityStore.create');\n }\n\n async ensureExists(entity: Entity): Promise<boolean> {\n if (!entity.id) {\n logger.error({ src: 'plugin:sql' }, 'Entity ID is required for ensureExists');\n return false;\n }\n\n try {\n const existingEntities = await this.getByIds([entity.id]);\n if (!existingEntities || !existingEntities.length) {\n return await this.create([entity]);\n }\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n entityId: entity.id,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to ensure entity exists'\n );\n return false;\n }\n }\n\n async update(entity: Entity): Promise<void> {\n if (!entity.id) throw new Error('Entity ID is required for update');\n\n return this.ctx.withRetry(async () => {\n const normalizedEntity = {\n ...entity,\n names: this.normalizeNames(entity.names),\n metadata: entity.metadata || {},\n };\n\n await this.db\n .update(entityTable)\n .set(normalizedEntity)\n .where(eq(entityTable.id, entity.id as string));\n }, 'EntityStore.update');\n }\n\n async delete(entityId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.transaction(async (tx) => {\n await tx\n .delete(componentTable)\n .where(\n or(eq(componentTable.entityId, entityId), eq(componentTable.sourceEntityId, entityId))\n );\n await tx.delete(entityTable).where(eq(entityTable.id, entityId));\n });\n }, 'EntityStore.delete');\n }\n\n async getByNames(params: { names: string[]; agentId: UUID }): Promise<Entity[]> {\n return this.ctx.withRetry(async () => {\n const { names, agentId } = params;\n const nameConditions = names.map((name) => sql`${name} = ANY(${entityTable.names})`);\n\n const query = sql`\n SELECT * FROM ${entityTable}\n WHERE ${entityTable.agentId} = ${agentId}\n AND (${sql.join(nameConditions, sql` OR `)})\n `;\n\n const result = await this.db.execute(query);\n\n return result.rows.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: Array.isArray(row.names) ? (row.names as string[]) : [],\n metadata: (row.metadata as Record<string, unknown>) || {},\n }));\n }, 'EntityStore.getByNames');\n }\n\n async searchByName(params: { query: string; agentId: UUID; limit?: number }): Promise<Entity[]> {\n return this.ctx.withRetry(async () => {\n const { query, agentId, limit = 10 } = params;\n\n if (!query || query.trim() === '') {\n const result = await this.db\n .select()\n .from(entityTable)\n .where(eq(entityTable.agentId, agentId))\n .limit(limit);\n\n return result.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: Array.isArray(row.names) ? (row.names as string[]) : [],\n metadata: (row.metadata as Record<string, unknown>) || {},\n }));\n }\n\n const searchQuery = sql`\n SELECT * FROM ${entityTable}\n WHERE ${entityTable.agentId} = ${agentId}\n AND EXISTS (\n SELECT 1 FROM unnest(${entityTable.names}) AS name\n WHERE LOWER(name) LIKE LOWER(${'%' + query + '%'})\n )\n LIMIT ${limit}\n `;\n\n const result = await this.db.execute(searchQuery);\n\n return result.rows.map((row: Record<string, unknown>) => ({\n id: row.id as UUID,\n agentId: row.agentId as UUID,\n names: Array.isArray(row.names) ? (row.names as string[]) : [],\n metadata: (row.metadata as Record<string, unknown>) || {},\n }));\n }, 'EntityStore.searchByName');\n }\n\n private normalizeNames(names: unknown): string[] {\n if (names == null) return [];\n if (typeof names === 'string') return [names];\n if (Array.isArray(names)) return names.map(String);\n if (names instanceof Set) return Array.from(names).map(String);\n if (\n typeof names === 'object' &&\n typeof (names as Iterable<unknown>)[Symbol.iterator] === 'function'\n ) {\n return Array.from(names as Iterable<unknown>).map(String);\n }\n return [String(names)];\n }\n}\n",
57
- "import { type Component, type UUID } from '@elizaos/core';\nimport { and, eq } from 'drizzle-orm';\nimport { componentTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class ComponentStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async get(\n entityId: UUID,\n type: string,\n worldId?: UUID,\n sourceEntityId?: UUID\n ): Promise<Component | null> {\n return this.ctx.withRetry(async () => {\n const conditions = [eq(componentTable.entityId, entityId), eq(componentTable.type, type)];\n\n if (worldId) conditions.push(eq(componentTable.worldId, worldId));\n if (sourceEntityId) conditions.push(eq(componentTable.sourceEntityId, sourceEntityId));\n\n const result = await this.db\n .select()\n .from(componentTable)\n .where(and(...conditions));\n\n if (result.length === 0) return null;\n\n const component = result[0];\n return {\n ...component,\n id: component.id as UUID,\n entityId: component.entityId as UUID,\n agentId: component.agentId as UUID,\n roomId: component.roomId as UUID,\n worldId: (component.worldId ?? '') as UUID,\n sourceEntityId: (component.sourceEntityId ?? '') as UUID,\n data: component.data as Record<string, unknown>,\n createdAt: component.createdAt.getTime(),\n };\n }, 'ComponentStore.get');\n }\n\n async getAll(entityId: UUID, worldId?: UUID, sourceEntityId?: UUID): Promise<Component[]> {\n return this.ctx.withRetry(async () => {\n const conditions = [eq(componentTable.entityId, entityId)];\n\n if (worldId) conditions.push(eq(componentTable.worldId, worldId));\n if (sourceEntityId) conditions.push(eq(componentTable.sourceEntityId, sourceEntityId));\n\n const result = await this.db\n .select({\n id: componentTable.id,\n entityId: componentTable.entityId,\n type: componentTable.type,\n data: componentTable.data,\n worldId: componentTable.worldId,\n agentId: componentTable.agentId,\n roomId: componentTable.roomId,\n sourceEntityId: componentTable.sourceEntityId,\n createdAt: componentTable.createdAt,\n })\n .from(componentTable)\n .where(and(...conditions));\n\n if (result.length === 0) return [];\n\n return result.map((component) => ({\n ...component,\n id: component.id as UUID,\n entityId: component.entityId as UUID,\n agentId: component.agentId as UUID,\n roomId: component.roomId as UUID,\n worldId: (component.worldId ?? '') as UUID,\n sourceEntityId: (component.sourceEntityId ?? '') as UUID,\n data: component.data as Record<string, unknown>,\n createdAt: component.createdAt.getTime(),\n }));\n }, 'ComponentStore.getAll');\n }\n\n async create(component: Component): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n await this.db.insert(componentTable).values({\n ...component,\n createdAt: new Date(),\n });\n return true;\n }, 'ComponentStore.create');\n }\n\n async update(component: Component): Promise<void> {\n return this.ctx.withRetry(async () => {\n const { createdAt, ...updateData } = component;\n await this.db\n .update(componentTable)\n .set(updateData)\n .where(eq(componentTable.id, component.id));\n }, 'ComponentStore.update');\n }\n\n async delete(componentId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.delete(componentTable).where(eq(componentTable.id, componentId));\n }, 'ComponentStore.delete');\n }\n}\n",
58
- "import { logger, type Relationship, type UUID } from '@elizaos/core';\nimport { and, eq, SQL, sql } from 'drizzle-orm';\nimport { v4 } from 'uuid';\nimport { relationshipTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class RelationshipStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async create(params: {\n sourceEntityId: UUID;\n targetEntityId: UUID;\n tags?: string[];\n metadata?: { [key: string]: unknown };\n }): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n const id = v4();\n const saveParams = {\n id,\n sourceEntityId: params.sourceEntityId,\n targetEntityId: params.targetEntityId,\n agentId: this.ctx.agentId,\n tags: params.tags || [],\n metadata: params.metadata || {},\n };\n try {\n await this.db.insert(relationshipTable).values(saveParams);\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.ctx.agentId,\n error: error instanceof Error ? error.message : String(error),\n saveParams,\n },\n 'Error creating relationship'\n );\n return false;\n }\n }, 'RelationshipStore.create');\n }\n\n async update(relationship: Relationship): Promise<void> {\n return this.ctx.withRetry(async () => {\n try {\n await this.db\n .update(relationshipTable)\n .set({\n tags: relationship.tags || [],\n metadata: relationship.metadata || {},\n })\n .where(eq(relationshipTable.id, relationship.id));\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.ctx.agentId,\n error: error instanceof Error ? error.message : String(error),\n relationshipId: relationship.id,\n },\n 'Error updating relationship'\n );\n throw error;\n }\n }, 'RelationshipStore.update');\n }\n\n async get(params: { sourceEntityId: UUID; targetEntityId: UUID }): Promise<Relationship | null> {\n return this.ctx.withRetry(async () => {\n const { sourceEntityId, targetEntityId } = params;\n const result = await this.db\n .select()\n .from(relationshipTable)\n .where(\n and(\n eq(relationshipTable.sourceEntityId, sourceEntityId),\n eq(relationshipTable.targetEntityId, targetEntityId)\n )\n );\n\n if (result.length === 0) return null;\n\n const relationship = result[0];\n return {\n ...relationship,\n id: relationship.id as UUID,\n sourceEntityId: relationship.sourceEntityId as UUID,\n targetEntityId: relationship.targetEntityId as UUID,\n agentId: relationship.agentId as UUID,\n tags: relationship.tags ?? [],\n metadata: (relationship.metadata as Record<string, unknown>) ?? {},\n createdAt: relationship.createdAt.toISOString(),\n };\n }, 'RelationshipStore.get');\n }\n\n async getAll(params: { entityId: UUID; tags?: string[] }): Promise<Relationship[]> {\n return this.ctx.withRetry(async () => {\n const { entityId, tags } = params;\n\n let query: SQL;\n\n if (tags && tags.length > 0) {\n query = sql`\n SELECT * FROM ${relationshipTable}\n WHERE (${relationshipTable.sourceEntityId} = ${entityId} OR ${relationshipTable.targetEntityId} = ${entityId})\n AND ${relationshipTable.tags} && CAST(ARRAY[${sql.join(tags, sql`, `)}] AS text[])\n `;\n } else {\n query = sql`\n SELECT * FROM ${relationshipTable}\n WHERE ${relationshipTable.sourceEntityId} = ${entityId} OR ${relationshipTable.targetEntityId} = ${entityId}\n `;\n }\n\n const result = await this.db.execute(query);\n\n return result.rows.map((relationship: Record<string, unknown>) => ({\n ...relationship,\n id: relationship.id as UUID,\n sourceEntityId: (relationship.source_entity_id || relationship.sourceEntityId) as UUID,\n targetEntityId: (relationship.target_entity_id || relationship.targetEntityId) as UUID,\n agentId: (relationship.agent_id || relationship.agentId) as UUID,\n tags: Array.isArray(relationship.tags) ? (relationship.tags as string[]) : [],\n metadata: (relationship.metadata as Record<string, unknown>) ?? {},\n createdAt:\n relationship.created_at || relationship.createdAt\n ? (relationship.created_at || relationship.createdAt) instanceof Date\n ? ((relationship.created_at || relationship.createdAt) as Date).toISOString()\n : new Date(\n (relationship.created_at as string) || (relationship.createdAt as string)\n ).toISOString()\n : new Date().toISOString(),\n }));\n }, 'RelationshipStore.getAll');\n }\n}\n",
59
- "import { logger } from '@elizaos/core';\nimport { and, eq } from 'drizzle-orm';\nimport { cacheTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class CacheStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async get<T>(key: string): Promise<T | undefined> {\n return this.ctx.withRetry(async () => {\n try {\n const result = await this.db\n .select({ value: cacheTable.value })\n .from(cacheTable)\n .where(and(eq(cacheTable.agentId, this.ctx.agentId), eq(cacheTable.key, key)))\n .limit(1);\n\n if (result && result.length > 0 && result[0]) {\n return result[0].value as T | undefined;\n }\n\n return undefined;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.ctx.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error fetching cache'\n );\n return undefined;\n }\n }, 'CacheStore.get');\n }\n\n async set<T>(key: string, value: T): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n await this.db\n .insert(cacheTable)\n .values({\n key: key,\n agentId: this.ctx.agentId,\n value: value,\n })\n .onConflictDoUpdate({\n target: [cacheTable.key, cacheTable.agentId],\n set: { value: value },\n });\n\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.ctx.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error setting cache'\n );\n return false;\n }\n }, 'CacheStore.set');\n }\n\n async delete(key: string): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n try {\n await this.db.transaction(async (tx) => {\n await tx\n .delete(cacheTable)\n .where(and(eq(cacheTable.agentId, this.ctx.agentId), eq(cacheTable.key, key)));\n });\n return true;\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n agentId: this.ctx.agentId,\n error: error instanceof Error ? error.message : String(error),\n key,\n },\n 'Error deleting cache'\n );\n return false;\n }\n }, 'CacheStore.delete');\n }\n}\n",
60
- "import { type UUID, type World } from '@elizaos/core';\nimport { eq } from 'drizzle-orm';\nimport { v4 } from 'uuid';\nimport { worldTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class WorldStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async create(world: World): Promise<UUID> {\n return this.ctx.withRetry(async () => {\n const newWorldId = world.id || v4();\n await this.db\n .insert(worldTable)\n .values({\n ...world,\n id: newWorldId,\n name: world.name || '',\n })\n .onConflictDoNothing();\n return newWorldId;\n }, 'WorldStore.create');\n }\n\n async get(id: UUID): Promise<World | null> {\n return this.ctx.withRetry(async () => {\n const result = await this.db.select().from(worldTable).where(eq(worldTable.id, id));\n return result.length > 0 ? (result[0] as World) : null;\n }, 'WorldStore.get');\n }\n\n async getAll(): Promise<World[]> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select()\n .from(worldTable)\n .where(eq(worldTable.agentId, this.ctx.agentId));\n return result as World[];\n }, 'WorldStore.getAll');\n }\n\n async update(world: World): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.update(worldTable).set(world).where(eq(worldTable.id, world.id));\n }, 'WorldStore.update');\n }\n\n async remove(id: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.delete(worldTable).where(eq(worldTable.id, id));\n }, 'WorldStore.remove');\n }\n}\n",
61
- "import { type Task, TaskMetadata, type UUID } from '@elizaos/core';\nimport { and, eq, sql } from 'drizzle-orm';\nimport { taskTable } from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\nexport class TaskStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n async create(task: Task): Promise<UUID> {\n if (!task.worldId) throw new Error('worldId is required');\n\n return this.ctx.withRetry(async () => {\n const now = new Date();\n const metadata = task.metadata || {};\n\n const values = {\n id: task.id as UUID,\n name: task.name,\n description: task.description,\n roomId: task.roomId as UUID,\n worldId: task.worldId as UUID,\n tags: task.tags,\n metadata: metadata,\n createdAt: now,\n updatedAt: now,\n agentId: this.ctx.agentId as UUID,\n };\n\n const result = await this.db.insert(taskTable).values(values).returning();\n return result[0].id as UUID;\n }, 'TaskStore.create');\n }\n\n async getAll(params: { roomId?: UUID; tags?: string[]; entityId?: UUID }): Promise<Task[]> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(\n and(\n eq(taskTable.agentId, this.ctx.agentId),\n ...(params.roomId ? [eq(taskTable.roomId, params.roomId)] : []),\n ...(params.tags && params.tags.length > 0\n ? [\n sql`${taskTable.tags} @> ARRAY[${sql.join(\n params.tags.map((t) => sql`${t}`),\n sql`, `\n )}]::text[]`,\n ]\n : [])\n )\n );\n\n return result.map((row) => ({\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: row.metadata as TaskMetadata,\n }));\n }, 'TaskStore.getAll');\n }\n\n async getByName(name: string): Promise<Task[]> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(and(eq(taskTable.name, name), eq(taskTable.agentId, this.ctx.agentId)));\n\n return result.map((row) => ({\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: (row.metadata || {}) as TaskMetadata,\n }));\n }, 'TaskStore.getByName');\n }\n\n async get(id: UUID): Promise<Task | null> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select()\n .from(taskTable)\n .where(and(eq(taskTable.id, id), eq(taskTable.agentId, this.ctx.agentId)))\n .limit(1);\n\n if (result.length === 0) return null;\n\n const row = result[0];\n return {\n id: row.id as UUID,\n name: row.name,\n description: row.description ?? '',\n roomId: row.roomId as UUID,\n worldId: row.worldId as UUID,\n tags: row.tags || [],\n metadata: (row.metadata || {}) as TaskMetadata,\n };\n }, 'TaskStore.get');\n }\n\n async update(id: UUID, task: Partial<Task>): Promise<void> {\n return this.ctx.withRetry(async () => {\n const updateValues: Partial<Task> = {};\n\n if (task.name !== undefined) updateValues.name = task.name;\n if (task.description !== undefined) updateValues.description = task.description;\n if (task.roomId !== undefined) updateValues.roomId = task.roomId;\n if (task.worldId !== undefined) updateValues.worldId = task.worldId;\n if (task.tags !== undefined) updateValues.tags = task.tags;\n\n interface TaskUpdateValues extends Partial<typeof taskTable.$inferInsert> {\n updatedAt?: Date;\n }\n const dbUpdateValues: TaskUpdateValues = {\n ...updateValues,\n updatedAt: new Date(),\n };\n\n if (task.metadata !== undefined) {\n dbUpdateValues.metadata = task.metadata;\n }\n\n await this.db\n .update(taskTable)\n .set(dbUpdateValues)\n .where(and(eq(taskTable.id, id), eq(taskTable.agentId, this.ctx.agentId)));\n }, 'TaskStore.update');\n }\n\n async delete(id: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db\n .delete(taskTable)\n .where(and(eq(taskTable.id, id), eq(taskTable.agentId, this.ctx.agentId)));\n }, 'TaskStore.delete');\n }\n}\n",
62
- "import { and, desc, eq, gte, lte, sql, type SQL } from 'drizzle-orm';\nimport type {\n Log,\n LogBody,\n UUID,\n AgentRunSummary,\n AgentRunSummaryResult,\n AgentRunCounts,\n RunStatus,\n} from '@elizaos/core';\nimport { logger } from '@elizaos/core';\nimport { logTable, roomTable } from '../schema';\nimport type { Store, StoreContext } from './types';\nimport { sanitizeJsonObject } from '../utils';\n\n// Raw SQL row types for aggregate queries\ntype ActionSummaryRow = {\n runId: string;\n actions: number | string;\n errors: number | string;\n modelCalls: number | string;\n};\n\ntype EvaluatorSummaryRow = {\n runId: string;\n evaluators: number | string;\n};\n\ntype GenericSummaryRow = {\n runId: string;\n modelLogs: number | string;\n embeddingErrors: number | string;\n};\n\nexport class LogStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n async create(params: {\n body: { [key: string]: unknown };\n entityId: UUID;\n roomId: UUID;\n type: string;\n }): Promise<void> {\n try {\n const sanitizedBody = sanitizeJsonObject(params.body);\n const jsonString = JSON.stringify(sanitizedBody);\n\n await this.ctx.withIsolationContext(params.entityId, async (tx) => {\n await tx.insert(logTable).values({\n body: sql`${jsonString}::jsonb`,\n entityId: params.entityId,\n roomId: params.roomId,\n type: params.type,\n });\n });\n } catch (error) {\n logger.error(\n {\n src: 'plugin:sql',\n type: params.type,\n roomId: params.roomId,\n entityId: params.entityId,\n error: error instanceof Error ? error.message : String(error),\n },\n 'Failed to create log entry'\n );\n throw error;\n }\n }\n\n async getMany(params: {\n entityId?: UUID;\n roomId?: UUID;\n type?: string;\n count?: number;\n offset?: number;\n }): Promise<Log[]> {\n const { entityId, roomId, type, count, offset } = params;\n\n return this.ctx.withIsolationContext(entityId ?? null, async (tx) => {\n const result = await tx\n .select()\n .from(logTable)\n .where(\n and(\n roomId ? eq(logTable.roomId, roomId) : undefined,\n type ? eq(logTable.type, type) : undefined\n )\n )\n .orderBy(desc(logTable.createdAt))\n .limit(count ?? 10)\n .offset(offset ?? 0);\n\n return result.map((log) => ({\n ...log,\n id: log.id as UUID,\n entityId: log.entityId as UUID,\n roomId: log.roomId as UUID,\n type: log.type as string,\n body: log.body as LogBody,\n createdAt: new Date(log.createdAt as string | number | Date),\n }));\n });\n }\n\n async getAgentRunSummaries(\n agentId: UUID,\n params: {\n limit?: number;\n roomId?: UUID;\n status?: RunStatus | 'all';\n from?: number;\n to?: number;\n entityId?: UUID;\n } = {}\n ): Promise<AgentRunSummaryResult> {\n const limit = Math.min(Math.max(params.limit ?? 20, 1), 100);\n const fromDate = typeof params.from === 'number' ? new Date(params.from) : undefined;\n const toDate = typeof params.to === 'number' ? new Date(params.to) : undefined;\n\n return this.ctx.withIsolationContext(params.entityId ?? null, async (tx) => {\n const runMap = new Map<string, AgentRunSummary>();\n\n const conditions: SQL<unknown>[] = [\n eq(logTable.type, 'run_event'),\n sql`${logTable.body} ? 'runId'`,\n eq(roomTable.agentId, agentId),\n ];\n\n if (params.roomId) {\n conditions.push(eq(logTable.roomId, params.roomId));\n }\n if (fromDate) {\n conditions.push(gte(logTable.createdAt, fromDate));\n }\n if (toDate) {\n conditions.push(lte(logTable.createdAt, toDate));\n }\n\n const whereClause = and(...conditions);\n const eventLimit = Math.max(limit * 20, 200);\n\n const runEventRows = await tx\n .select({\n runId: sql<string>`(${logTable.body} ->> 'runId')`,\n status: sql<string | null>`(${logTable.body} ->> 'status')`,\n messageId: sql<string | null>`(${logTable.body} ->> 'messageId')`,\n rawBody: logTable.body,\n createdAt: logTable.createdAt,\n roomId: logTable.roomId,\n entityId: logTable.entityId,\n })\n .from(logTable)\n .innerJoin(roomTable, eq(roomTable.id, logTable.roomId))\n .where(whereClause)\n .orderBy(desc(logTable.createdAt))\n .limit(eventLimit);\n\n for (const row of runEventRows) {\n const runId = row.runId;\n if (!runId) continue;\n\n const summary: AgentRunSummary = runMap.get(runId) ?? {\n runId,\n status: 'started',\n startedAt: null,\n endedAt: null,\n durationMs: null,\n messageId: undefined,\n roomId: undefined,\n entityId: undefined,\n metadata: {},\n };\n\n if (!summary.messageId && row.messageId) {\n summary.messageId = row.messageId as UUID;\n }\n if (!summary.roomId && row.roomId) {\n summary.roomId = row.roomId as UUID;\n }\n if (!summary.entityId && row.entityId) {\n summary.entityId = row.entityId as UUID;\n }\n\n const body = row.rawBody as Record<string, unknown> | undefined;\n if (body && typeof body === 'object') {\n if (!summary.roomId && typeof body.roomId === 'string') {\n summary.roomId = body.roomId as UUID;\n }\n if (!summary.entityId && typeof body.entityId === 'string') {\n summary.entityId = body.entityId as UUID;\n }\n if (!summary.messageId && typeof body.messageId === 'string') {\n summary.messageId = body.messageId as UUID;\n }\n if (!summary.metadata || Object.keys(summary.metadata).length === 0) {\n const metadata = (body.metadata as Record<string, unknown> | undefined) ?? undefined;\n summary.metadata = metadata ? { ...metadata } : {};\n }\n }\n\n const createdAt = row.createdAt instanceof Date ? row.createdAt : new Date(row.createdAt);\n const timestamp = createdAt.getTime();\n const eventStatus =\n (row.status as RunStatus | undefined) ?? (body?.status as RunStatus | undefined);\n\n if (eventStatus === 'started') {\n summary.startedAt =\n summary.startedAt === null ? timestamp : Math.min(summary.startedAt, timestamp);\n } else if (\n eventStatus === 'completed' ||\n eventStatus === 'timeout' ||\n eventStatus === 'error'\n ) {\n summary.status = eventStatus;\n summary.endedAt = timestamp;\n if (summary.startedAt !== null) {\n summary.durationMs = Math.max(timestamp - summary.startedAt, 0);\n }\n }\n\n runMap.set(runId, summary);\n }\n\n let runs = Array.from(runMap.values());\n if (params.status && params.status !== 'all') {\n runs = runs.filter((run) => run.status === params.status);\n }\n\n runs.sort((a, b) => (b.startedAt ?? 0) - (a.startedAt ?? 0));\n\n const total = runs.length;\n const limitedRuns = runs.slice(0, limit);\n const hasMore = total > limit;\n\n const runCounts = new Map<string, AgentRunCounts>();\n for (const run of limitedRuns) {\n runCounts.set(run.runId, { actions: 0, modelCalls: 0, errors: 0, evaluators: 0 });\n }\n\n const runIds = limitedRuns.map((run) => run.runId).filter(Boolean);\n\n if (runIds.length > 0) {\n const db = this.ctx.getDb();\n const runIdArray = sql`array[${sql.join(\n runIds.map((id) => sql`${id}`),\n sql`, `\n )}]::text[]`;\n\n const actionSummary = await db.execute<ActionSummaryRow>(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*)::int as \"actions\",\n SUM(CASE WHEN COALESCE(body->'result'->>'success', 'true') = 'false' THEN 1 ELSE 0 END)::int as \"errors\",\n SUM(COALESCE((body->>'promptCount')::int, 0))::int as \"modelCalls\"\n FROM ${logTable}\n WHERE type = 'action'\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const actionRows = actionSummary.rows ?? [];\n for (const row of actionRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.actions += Number(row.actions ?? 0);\n counts.errors += Number(row.errors ?? 0);\n counts.modelCalls += Number(row.modelCalls ?? 0);\n }\n\n const evaluatorSummary = await db.execute<EvaluatorSummaryRow>(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*)::int as \"evaluators\"\n FROM ${logTable}\n WHERE type = 'evaluator'\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const evaluatorRows = evaluatorSummary.rows ?? [];\n for (const row of evaluatorRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.evaluators += Number(row.evaluators ?? 0);\n }\n\n const genericSummary = await db.execute<GenericSummaryRow>(sql`\n SELECT\n body->>'runId' as \"runId\",\n COUNT(*) FILTER (WHERE type LIKE 'useModel:%')::int as \"modelLogs\",\n COUNT(*) FILTER (WHERE type = 'embedding_event' AND body->>'status' = 'failed')::int as \"embeddingErrors\"\n FROM ${logTable}\n WHERE (type LIKE 'useModel:%' OR type = 'embedding_event')\n AND body->>'runId' = ANY(${runIdArray})\n GROUP BY body->>'runId'\n `);\n\n const genericRows = genericSummary.rows ?? [];\n for (const row of genericRows) {\n const counts = runCounts.get(row.runId);\n if (!counts) continue;\n counts.modelCalls += Number(row.modelLogs ?? 0);\n counts.errors += Number(row.embeddingErrors ?? 0);\n }\n }\n\n for (const run of limitedRuns) {\n run.counts = runCounts.get(run.runId) ?? {\n actions: 0,\n modelCalls: 0,\n errors: 0,\n evaluators: 0,\n };\n }\n\n return {\n runs: limitedRuns,\n total,\n hasMore,\n } satisfies AgentRunSummaryResult;\n });\n }\n\n async delete(logId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.ctx.getDb().delete(logTable).where(eq(logTable.id, logId));\n }, 'LogStore.delete');\n }\n}\n",
63
- "import { ChannelType, type Metadata, type UUID } from '@elizaos/core';\nimport { and, desc, eq, lt, sql } from 'drizzle-orm';\nimport { v4 } from 'uuid';\nimport {\n channelParticipantsTable,\n channelTable,\n messageServerAgentsTable,\n messageServerTable,\n messageTable,\n} from '../schema/index';\nimport type { DrizzleDatabase } from '../types';\nimport type { Store, StoreContext } from './types';\n\n// Type definitions for messaging entities\nexport type MessageServer = {\n id: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n};\n\n// Raw SQL row type (snake_case columns from database)\ntype RawMessageServerRow = {\n id: string;\n name: string;\n source_type: string;\n source_id: string | null;\n metadata: Metadata | null;\n created_at: string;\n updated_at: string;\n};\n\nexport type Channel = {\n id: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport type Message = {\n id: UUID;\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n createdAt: Date;\n updatedAt: Date;\n};\n\nexport class MessagingStore implements Store {\n constructor(public readonly ctx: StoreContext) {}\n\n private get db(): DrizzleDatabase {\n return this.ctx.getDb();\n }\n\n // ============================================\n // Message Server Operations\n // ============================================\n\n async createMessageServer(data: {\n id?: UUID;\n name: string;\n sourceType: string;\n sourceId?: string;\n metadata?: Metadata;\n }): Promise<MessageServer> {\n return this.ctx.withRetry(async () => {\n const newId = data.id || (v4() as UUID);\n const now = new Date();\n const serverToInsert = {\n id: newId,\n name: data.name,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n metadata: data.metadata,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.insert(messageServerTable).values(serverToInsert).onConflictDoNothing();\n\n // If server already existed, fetch it\n if (data.id) {\n const existing = await this.db\n .select()\n .from(messageServerTable)\n .where(eq(messageServerTable.id, data.id))\n .limit(1);\n if (existing.length > 0) {\n return {\n id: existing[0].id as UUID,\n name: existing[0].name,\n sourceType: existing[0].sourceType,\n sourceId: existing[0].sourceId || undefined,\n metadata: existing[0].metadata || undefined,\n createdAt: existing[0].createdAt,\n updatedAt: existing[0].updatedAt,\n };\n }\n }\n\n return serverToInsert;\n }, 'MessagingStore.createMessageServer');\n }\n\n async getMessageServers(): Promise<MessageServer[]> {\n const result = await this.ctx.withRetry(async () => {\n const results = await this.db.select().from(messageServerTable);\n return results.map((r) => ({\n id: r.id as UUID,\n name: r.name,\n sourceType: r.sourceType,\n sourceId: r.sourceId || undefined,\n metadata: r.metadata || undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n }, 'MessagingStore.getMessageServers');\n return result || [];\n }\n\n async getMessageServerById(serverId: UUID): Promise<MessageServer | null> {\n return this.ctx.withRetry(async () => {\n const results = await this.db\n .select()\n .from(messageServerTable)\n .where(eq(messageServerTable.id, serverId))\n .limit(1);\n return results.length > 0\n ? {\n id: results[0].id as UUID,\n name: results[0].name,\n sourceType: results[0].sourceType,\n sourceId: results[0].sourceId || undefined,\n metadata: results[0].metadata || undefined,\n createdAt: results[0].createdAt,\n updatedAt: results[0].updatedAt,\n }\n : null;\n }, 'MessagingStore.getMessageServerById');\n }\n\n async getMessageServerByRlsServerId(rlsServerId: UUID): Promise<MessageServer | null> {\n return this.ctx.withRetry(async () => {\n // Use raw SQL since server_id column is dynamically added by RLS and not in Drizzle schema\n const results = await this.db.execute<RawMessageServerRow>(sql`\n SELECT id, name, source_type, source_id, metadata, created_at, updated_at\n FROM message_servers\n WHERE server_id = ${rlsServerId}\n LIMIT 1\n `);\n\n const rows = results.rows || results;\n if (rows.length === 0) return null;\n\n const row = rows[0];\n return {\n id: row.id as UUID,\n name: row.name,\n sourceType: row.source_type,\n sourceId: row.source_id || undefined,\n metadata: row.metadata || undefined,\n createdAt: new Date(row.created_at),\n updatedAt: new Date(row.updated_at),\n };\n }, 'MessagingStore.getMessageServerByRlsServerId');\n }\n\n // ============================================\n // Server Agent Operations\n // ============================================\n\n async addAgentToMessageServer(messageServerId: UUID, agentId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db\n .insert(messageServerAgentsTable)\n .values({\n messageServerId,\n agentId,\n })\n .onConflictDoNothing();\n }, 'MessagingStore.addAgentToMessageServer');\n }\n\n async getAgentsForMessageServer(messageServerId: UUID): Promise<UUID[]> {\n return this.ctx.withRetry(async () => {\n const results = await this.db\n .select({ agentId: messageServerAgentsTable.agentId })\n .from(messageServerAgentsTable)\n .where(eq(messageServerAgentsTable.messageServerId, messageServerId));\n\n return results.map((r) => r.agentId as UUID);\n }, 'MessagingStore.getAgentsForMessageServer');\n }\n\n async removeAgentFromMessageServer(messageServerId: UUID, agentId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db\n .delete(messageServerAgentsTable)\n .where(\n and(\n eq(messageServerAgentsTable.messageServerId, messageServerId),\n eq(messageServerAgentsTable.agentId, agentId)\n )\n );\n }, 'MessagingStore.removeAgentFromMessageServer');\n }\n\n // ============================================\n // Channel Operations\n // ============================================\n\n async createChannel(\n data: {\n id?: UUID;\n messageServerId: UUID;\n name: string;\n type: string;\n sourceType?: string;\n sourceId?: string;\n topic?: string;\n metadata?: Metadata;\n },\n participantIds?: UUID[]\n ): Promise<Channel> {\n return this.ctx.withRetry(async () => {\n const newId = data.id || (v4() as UUID);\n const now = new Date();\n const channelToInsert = {\n id: newId,\n messageServerId: data.messageServerId,\n name: data.name,\n type: data.type,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n topic: data.topic,\n metadata: data.metadata,\n createdAt: now,\n updatedAt: now,\n };\n\n // UPSERT: insert channel, ignore if already exists\n await this.db.insert(channelTable).values(channelToInsert).onConflictDoNothing();\n\n // UPSERT: insert participants, ignore duplicates\n if (participantIds && participantIds.length > 0) {\n const participantValues = participantIds.map((entityId) => ({\n channelId: newId,\n entityId: entityId,\n }));\n await this.db\n .insert(channelParticipantsTable)\n .values(participantValues)\n .onConflictDoNothing();\n }\n\n return channelToInsert;\n }, 'MessagingStore.createChannel');\n }\n\n async getChannelsForMessageServer(messageServerId: UUID): Promise<Channel[]> {\n return this.ctx.withRetry(async () => {\n const results = await this.db\n .select()\n .from(channelTable)\n .where(eq(channelTable.messageServerId, messageServerId));\n return results.map((r) => ({\n id: r.id as UUID,\n messageServerId: r.messageServerId as UUID,\n name: r.name,\n type: r.type,\n sourceType: r.sourceType || undefined,\n sourceId: r.sourceId || undefined,\n topic: r.topic || undefined,\n metadata: r.metadata || undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n }, 'MessagingStore.getChannelsForMessageServer');\n }\n\n async getChannelDetails(channelId: UUID): Promise<Channel | null> {\n return this.ctx.withRetry(async () => {\n const results = await this.db\n .select()\n .from(channelTable)\n .where(eq(channelTable.id, channelId))\n .limit(1);\n return results.length > 0\n ? {\n id: results[0].id as UUID,\n messageServerId: results[0].messageServerId as UUID,\n name: results[0].name,\n type: results[0].type,\n sourceType: results[0].sourceType || undefined,\n sourceId: results[0].sourceId || undefined,\n topic: results[0].topic || undefined,\n metadata: results[0].metadata || undefined,\n createdAt: results[0].createdAt,\n updatedAt: results[0].updatedAt,\n }\n : null;\n }, 'MessagingStore.getChannelDetails');\n }\n\n async updateChannel(\n channelId: UUID,\n updates: { name?: string; participantCentralUserIds?: UUID[]; metadata?: Metadata }\n ): Promise<Channel> {\n return this.ctx.withRetry(async () => {\n const now = new Date();\n\n // Wrap in transaction for atomicity (delete + insert participants must succeed together)\n await this.db.transaction(async (tx) => {\n // Update channel details\n const updateData: Record<string, unknown> = { updatedAt: now };\n if (updates.name !== undefined) updateData.name = updates.name;\n if (updates.metadata !== undefined) updateData.metadata = updates.metadata;\n\n await tx.update(channelTable).set(updateData).where(eq(channelTable.id, channelId));\n\n // Update participants if provided\n if (updates.participantCentralUserIds !== undefined) {\n // Remove existing participants\n await tx\n .delete(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n // Add new participants\n if (updates.participantCentralUserIds.length > 0) {\n const participantValues = updates.participantCentralUserIds.map((entityId) => ({\n channelId: channelId,\n entityId: entityId,\n }));\n await tx\n .insert(channelParticipantsTable)\n .values(participantValues)\n .onConflictDoNothing();\n }\n }\n });\n\n // Return updated channel details\n const updatedChannel = await this.getChannelDetails(channelId);\n if (!updatedChannel) {\n throw new Error(`Channel ${channelId} not found after update`);\n }\n return updatedChannel;\n }, 'MessagingStore.updateChannel');\n }\n\n async deleteChannel(channelId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.transaction(async (tx) => {\n // Delete all messages in the channel\n await tx.delete(messageTable).where(eq(messageTable.channelId, channelId));\n\n // Delete all participants\n await tx\n .delete(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n // Delete the channel itself\n await tx.delete(channelTable).where(eq(channelTable.id, channelId));\n });\n }, 'MessagingStore.deleteChannel');\n }\n\n async findOrCreateDmChannel(\n user1Id: UUID,\n user2Id: UUID,\n messageServerId: UUID\n ): Promise<Channel> {\n return this.ctx.withRetry(async () => {\n const ids = [user1Id, user2Id].sort();\n const dmChannelName = `DM-${ids[0]}-${ids[1]}`;\n\n const existingChannels = await this.db\n .select()\n .from(channelTable)\n .where(\n and(\n eq(channelTable.type, ChannelType.DM),\n eq(channelTable.name, dmChannelName),\n eq(channelTable.messageServerId, messageServerId)\n )\n )\n .limit(1);\n\n if (existingChannels.length > 0) {\n return {\n id: existingChannels[0].id as UUID,\n messageServerId: existingChannels[0].messageServerId as UUID,\n name: existingChannels[0].name,\n type: existingChannels[0].type,\n sourceType: existingChannels[0].sourceType || undefined,\n sourceId: existingChannels[0].sourceId || undefined,\n topic: existingChannels[0].topic || undefined,\n metadata: existingChannels[0].metadata || undefined,\n createdAt: existingChannels[0].createdAt,\n updatedAt: existingChannels[0].updatedAt,\n };\n }\n\n // Create new DM channel\n return this.createChannel(\n {\n messageServerId,\n name: dmChannelName,\n type: ChannelType.DM,\n metadata: { user1: ids[0], user2: ids[1] },\n },\n ids\n );\n }, 'MessagingStore.findOrCreateDmChannel');\n }\n\n // ============================================\n // Channel Participant Operations\n // ============================================\n\n async addChannelParticipants(channelId: UUID, entityIds: UUID[]): Promise<void> {\n return this.ctx.withRetry(async () => {\n if (!entityIds || entityIds.length === 0) return;\n\n const participantValues = entityIds.map((entityId) => ({\n channelId: channelId,\n entityId: entityId,\n }));\n\n await this.db\n .insert(channelParticipantsTable)\n .values(participantValues)\n .onConflictDoNothing();\n }, 'MessagingStore.addChannelParticipants');\n }\n\n async getChannelParticipants(channelId: UUID): Promise<UUID[]> {\n return this.ctx.withRetry(async () => {\n const results = await this.db\n .select({ entityId: channelParticipantsTable.entityId })\n .from(channelParticipantsTable)\n .where(eq(channelParticipantsTable.channelId, channelId));\n\n return results.map((r) => r.entityId as UUID);\n }, 'MessagingStore.getChannelParticipants');\n }\n\n async isChannelParticipant(channelId: UUID, entityId: UUID): Promise<boolean> {\n return this.ctx.withRetry(async () => {\n const result = await this.db\n .select()\n .from(channelParticipantsTable)\n .where(\n and(\n eq(channelParticipantsTable.channelId, channelId),\n eq(channelParticipantsTable.entityId, entityId)\n )\n )\n .limit(1);\n\n return result.length > 0;\n }, 'MessagingStore.isChannelParticipant');\n }\n\n // ============================================\n // Message Operations\n // ============================================\n\n async createMessage(data: {\n channelId: UUID;\n authorId: UUID;\n content: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n messageId?: UUID;\n }): Promise<Message> {\n return this.ctx.withRetry(async () => {\n const newId = data.messageId || (v4() as UUID);\n const now = new Date();\n const messageToInsert = {\n id: newId,\n channelId: data.channelId,\n authorId: data.authorId,\n content: data.content,\n rawMessage: data.rawMessage,\n sourceType: data.sourceType,\n sourceId: data.sourceId,\n metadata: data.metadata,\n inReplyToRootMessageId: data.inReplyToRootMessageId,\n createdAt: now,\n updatedAt: now,\n };\n\n await this.db.insert(messageTable).values(messageToInsert);\n return messageToInsert;\n }, 'MessagingStore.createMessage');\n }\n\n async getMessageById(id: UUID): Promise<Message | null> {\n return this.ctx.withRetry(async () => {\n const rows = await this.db\n .select()\n .from(messageTable)\n .where(eq(messageTable.id, id))\n .limit(1);\n if (!rows || rows.length === 0) return null;\n const r = rows[0];\n return {\n id: r.id as UUID,\n channelId: r.channelId as UUID,\n authorId: r.authorId as UUID,\n content: r.content,\n rawMessage: r.rawMessage || undefined,\n sourceType: r.sourceType || undefined,\n sourceId: r.sourceId || undefined,\n metadata: r.metadata || undefined,\n inReplyToRootMessageId: r.inReplyToRootMessageId as UUID | undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n };\n }, 'MessagingStore.getMessageById');\n }\n\n async updateMessage(\n id: UUID,\n patch: {\n content?: string;\n rawMessage?: Record<string, unknown>;\n sourceType?: string;\n sourceId?: string;\n metadata?: Metadata;\n inReplyToRootMessageId?: UUID;\n }\n ): Promise<Message | null> {\n return this.ctx.withRetry(async () => {\n const existing = await this.getMessageById(id);\n if (!existing) return null;\n\n const updatedAt = new Date();\n const next = {\n content: patch.content ?? existing.content,\n rawMessage: patch.rawMessage ?? existing.rawMessage,\n sourceType: patch.sourceType ?? existing.sourceType,\n sourceId: patch.sourceId ?? existing.sourceId,\n metadata: patch.metadata ?? existing.metadata,\n inReplyToRootMessageId: patch.inReplyToRootMessageId ?? existing.inReplyToRootMessageId,\n updatedAt,\n };\n\n await this.db.update(messageTable).set(next).where(eq(messageTable.id, id));\n\n return {\n ...existing,\n ...next,\n };\n }, 'MessagingStore.updateMessage');\n }\n\n async getMessagesForChannel(\n channelId: UUID,\n limit: number = 50,\n beforeTimestamp?: Date\n ): Promise<Message[]> {\n return this.ctx.withRetry(async () => {\n const conditions = [eq(messageTable.channelId, channelId)];\n if (beforeTimestamp) {\n conditions.push(lt(messageTable.createdAt, beforeTimestamp));\n }\n\n const query = this.db\n .select()\n .from(messageTable)\n .where(and(...conditions))\n .orderBy(desc(messageTable.createdAt))\n .limit(limit);\n\n const results = await query;\n return results.map((r) => ({\n id: r.id as UUID,\n channelId: r.channelId as UUID,\n authorId: r.authorId as UUID,\n content: r.content,\n rawMessage: r.rawMessage || undefined,\n sourceType: r.sourceType || undefined,\n sourceId: r.sourceId || undefined,\n metadata: r.metadata || undefined,\n inReplyToRootMessageId: r.inReplyToRootMessageId as UUID | undefined,\n createdAt: r.createdAt,\n updatedAt: r.updatedAt,\n }));\n }, 'MessagingStore.getMessagesForChannel');\n }\n\n async deleteMessage(messageId: UUID): Promise<void> {\n return this.ctx.withRetry(async () => {\n await this.db.delete(messageTable).where(eq(messageTable.id, messageId));\n }, 'MessagingStore.deleteMessage');\n }\n}\n",
64
- "import { PGlite, type PGliteOptions } from '@electric-sql/pglite';\nimport { fuzzystrmatch } from '@electric-sql/pglite/contrib/fuzzystrmatch';\nimport { vector } from '@electric-sql/pglite/vector';\nimport type { IDatabaseClientManager } from '../types';\n\n/**\n * Class representing a database client manager for PGlite.\n * @implements { IDatabaseClientManager }\n */\nexport class PGliteClientManager implements IDatabaseClientManager<PGlite> {\n private client: PGlite;\n private shuttingDown = false;\n\n /**\n * Constructor for creating a new instance of PGlite with the provided options.\n * Initializes the PGlite client with additional extensions.\n * @param {PGliteOptions} options - The options to configure the PGlite client.\n */\n constructor(options: PGliteOptions) {\n this.client = new PGlite({\n ...options,\n extensions: {\n vector,\n fuzzystrmatch,\n },\n });\n this.setupShutdownHandlers();\n }\n\n public getConnection(): PGlite {\n return this.client;\n }\n\n public isShuttingDown(): boolean {\n return this.shuttingDown;\n }\n\n public async initialize(): Promise<void> {\n // Kept for backward compatibility\n }\n\n public async close(): Promise<void> {\n this.shuttingDown = true;\n // Actually close the PGLite client to release file locks and cleanup resources\n // Without this, the WAL files remain locked and deleting the data directory\n // causes ENOENT errors when subsequent tests try to access it\n if (this.client) {\n try {\n await this.client.close();\n } catch {}\n }\n }\n\n private setupShutdownHandlers() {\n // Implementation of setupShutdownHandlers method\n }\n}\n"
65
- ],
66
- "mappings": "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,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK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AC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,gEAAgE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,CAAC,EAAC,GAAE,KAAI,EAAC,KAAI,GAAE,QAAO,CAAC,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,kEAAiE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,mEAAkE,kEAAkE,GAAE,CAAC,oEAAmE,iEAAiE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAmE,kEAAkE,GAAE,CAAC,oEAAm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GAAG,GAAE,MAAI,KAAK,KAAK,KAAI,GAAG,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAK,KAAK,KAAI,GAAG,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,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K,KAAI,GAAG,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAK,KAAK,KAAI,GAAG,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAA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GAAG,IAAE,GAAE,KAAG,KAAK,KAAK,KAAI,GAAG,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,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,KAAI,GAAG,IAAE,GAAE,KAAG,KAAK,KAAK,KAAI,GAAG,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,MAAI,MAAI,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG,IAAE,GAAE,KAAG,KAAG,KAAK,KAAK,KAAI,GAAG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",
67
- "debugId": "0A9AA0ECC3C837CD64756E2164756E21",
68
- "names": []
69
- }