@noosphere/agent-core 0.1.0-alpha.9 → 0.2.0-alpha.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.
- package/dist/index.cjs +11182 -137
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.mts +535 -4
- package/dist/index.d.ts +535 -4
- package/dist/index.js +11176 -118
- package/dist/index.js.map +1 -1
- package/package.json +17 -6
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/EventMonitor.ts","../src/ContainerManager.ts","../src/NoosphereAgent.ts","../src/SchedulerService.ts","../src/utils/CommitmentUtils.ts","../src/utils/ConfigLoader.ts","../src/types/index.ts","../src/utils/RequestIdUtils.ts"],"sourcesContent":["export { EventMonitor } from './EventMonitor';\nexport type { CheckpointData } from './EventMonitor';\nexport { ContainerManager } from './ContainerManager';\nexport { NoosphereAgent } from './NoosphereAgent';\nexport type { ComputeDeliveredEvent, RequestStartedCallbackEvent, CommitmentSuccessCallbackEvent } from './NoosphereAgent';\nexport { SchedulerService } from './SchedulerService';\n\nexport * from './types';\nexport * from './utils';\n\n// Re-export crypto utilities for convenience\nexport { WalletManager, KeystoreManager } from '@noosphere/crypto';\nexport type { NoosphereKeystore, PaymentWalletInfo, KeystoreInfo } from '@noosphere/crypto';\n\n// Re-export registry utilities for convenience\nexport { RegistryManager } from '@noosphere/registry';\nexport type {\n ContainerMetadata as RegistryContainerMetadata,\n VerifierMetadata as RegistryVerifierMetadata,\n RegistryConfig,\n} from '@noosphere/registry';\n\n// Export config types\nexport type { NoosphereAgentConfig, ContainerConfig } from './types';\n","import { EventEmitter } from 'events';\nimport { ethers } from 'ethers';\nimport type { AgentConfig, RequestStartedEvent } from './types';\n\nexport interface CheckpointData {\n blockNumber: number;\n blockHash?: string;\n blockTimestamp?: number;\n}\n\nexport interface EventMonitorOptions {\n loadCheckpoint?: () => CheckpointData | undefined;\n saveCheckpoint?: (checkpoint: CheckpointData) => void;\n}\n\nexport class EventMonitor extends EventEmitter {\n private provider!: ethers.WebSocketProvider | ethers.JsonRpcProvider;\n private router!: ethers.Contract;\n private coordinator!: ethers.Contract;\n private lastProcessedBlock: number;\n private useWebSocket: boolean;\n private reconnectAttempts = 0;\n private maxReconnectAttempts = 10;\n private isReconnecting = false;\n private heartbeatInterval: NodeJS.Timeout | null = null;\n private lastEventTime = Date.now();\n private checkpointCallbacks?: EventMonitorOptions;\n\n constructor(\n private config: AgentConfig,\n private routerAbi: any[],\n private coordinatorAbi: any[],\n options?: EventMonitorOptions\n ) {\n super();\n this.lastProcessedBlock = config.deploymentBlock || 0;\n this.useWebSocket = false;\n this.checkpointCallbacks = options;\n }\n\n async connect(): Promise<void> {\n try {\n // Try WebSocket first for push-based events\n if (this.config.wsRpcUrl) {\n this.provider = new ethers.WebSocketProvider(this.config.wsRpcUrl);\n // Note: Do NOT call _start() - it causes race condition with auto-initialization\n // The provider will initialize automatically on first request\n this.useWebSocket = true;\n console.log('✓ Connected via WebSocket (push-based events)');\n } else {\n throw new Error('WebSocket URL not provided');\n }\n } catch (error) {\n // Fallback to HTTP with polling\n console.warn('WebSocket unavailable, falling back to HTTP polling');\n this.provider = new ethers.JsonRpcProvider(this.config.rpcUrl);\n this.useWebSocket = false;\n }\n\n // Initialize contract instances\n this.router = new ethers.Contract(this.config.routerAddress, this.routerAbi, this.provider);\n\n this.coordinator = new ethers.Contract(\n this.config.coordinatorAddress,\n this.coordinatorAbi,\n this.provider\n );\n }\n\n async start(): Promise<void> {\n // Load checkpoint from callback or use deployment block\n if (this.checkpointCallbacks?.loadCheckpoint) {\n const checkpoint = this.checkpointCallbacks.loadCheckpoint();\n if (checkpoint) {\n this.lastProcessedBlock = checkpoint.blockNumber;\n }\n }\n\n console.log(`Starting from block ${this.lastProcessedBlock}`);\n\n // Replay missed events\n await this.replayEvents(this.lastProcessedBlock, 'latest');\n\n // Start real-time listening\n if (this.useWebSocket) {\n await this.startWebSocketListening();\n } else {\n await this.startPolling();\n }\n }\n\n private async replayEvents(fromBlock: number, toBlock: string | number): Promise<void> {\n console.log(`Replaying events from block ${fromBlock} to ${toBlock}`);\n\n const currentBlock = await this.provider.getBlockNumber();\n const toBlockNumber = toBlock === 'latest' ? currentBlock : Number(toBlock);\n\n // Query historical events in chunks to avoid RPC limits\n const chunkSize = 10000;\n for (let start = fromBlock; start <= toBlockNumber; start += chunkSize) {\n const end = Math.min(start + chunkSize - 1, toBlockNumber);\n\n const events = await this.coordinator.queryFilter(\n this.coordinator.filters.RequestStarted(),\n start,\n end\n );\n\n for (const event of events) {\n await this.processEvent(event);\n }\n\n if (events.length > 0) {\n this.saveCheckpoint(end);\n }\n }\n\n console.log(`Replayed events up to block ${toBlockNumber}`);\n }\n\n private async startWebSocketListening(): Promise<void> {\n console.log('Starting WebSocket event listening...');\n\n // Listen for RequestStarted events\n this.coordinator.on('RequestStarted', async (...args) => {\n const event = args[args.length - 1]; // Last argument is the event object\n this.lastEventTime = Date.now();\n await this.processEvent(event);\n\n const blockNumber = event.blockNumber;\n if (blockNumber - this.lastProcessedBlock >= 10) {\n this.saveCheckpoint(blockNumber);\n }\n });\n\n // Setup WebSocket error/close handlers for reconnection\n if (this.provider instanceof ethers.WebSocketProvider) {\n const wsProvider = this.provider as ethers.WebSocketProvider;\n\n // Access the underlying WebSocket to detect connection issues\n // ethers v6 exposes websocket through _websocket property (internal)\n const ws = (wsProvider as any)._websocket;\n if (ws) {\n ws.on('close', () => {\n console.warn('⚠️ WebSocket connection closed');\n this.handleDisconnect();\n });\n ws.on('error', (error: Error) => {\n console.error('⚠️ WebSocket error:', error.message);\n this.handleDisconnect();\n });\n }\n }\n\n // Start heartbeat to detect silent disconnections\n this.startHeartbeat();\n\n console.log('✓ WebSocket event listener started');\n }\n\n private startHeartbeat(): void {\n // Check connection health every 2 minutes (reduced from 30s to avoid rate limits)\n this.heartbeatInterval = setInterval(async () => {\n try {\n if (this.provider instanceof ethers.WebSocketProvider) {\n // Try to get block number as heartbeat\n const blockNumber = await this.provider.getBlockNumber();\n\n // If we haven't received events for 3+ minutes but blocks are advancing,\n // we might have a stale subscription - replay missed events\n const timeSinceLastEvent = Date.now() - this.lastEventTime;\n if (timeSinceLastEvent > 180000 && blockNumber > this.lastProcessedBlock + 5) {\n console.log(`⚠️ No events for ${Math.round(timeSinceLastEvent / 1000)}s, checking for missed events...`);\n await this.replayMissedEvents();\n }\n }\n } catch (error) {\n console.error('⚠️ Heartbeat failed, WebSocket may be disconnected');\n this.handleDisconnect();\n }\n }, 120000); // 2 minutes\n }\n\n private async replayMissedEvents(): Promise<void> {\n try {\n const currentBlock = await this.provider.getBlockNumber();\n if (currentBlock > this.lastProcessedBlock) {\n console.log(`📥 Replaying events from block ${this.lastProcessedBlock + 1} to ${currentBlock}`);\n await this.replayEvents(this.lastProcessedBlock + 1, currentBlock);\n this.lastEventTime = Date.now();\n }\n } catch (error) {\n console.error('Failed to replay missed events:', error);\n }\n }\n\n private handleDisconnect(): void {\n if (this.isReconnecting) return;\n this.isReconnecting = true;\n\n // Clear heartbeat during reconnection\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = null;\n }\n\n // Attempt reconnection\n this.reconnect().finally(() => {\n this.isReconnecting = false;\n });\n }\n\n private async startPolling(): Promise<void> {\n console.log('Starting HTTP polling (fallback mode)...');\n\n const pollingInterval = this.config.pollingInterval || 12000; // 12 seconds default\n let lastBlock = await this.provider.getBlockNumber();\n\n setInterval(async () => {\n try {\n const currentBlock = await this.provider.getBlockNumber();\n if (currentBlock > lastBlock) {\n const events = await this.coordinator.queryFilter(\n this.coordinator.filters.RequestStarted(),\n lastBlock + 1,\n currentBlock\n );\n\n for (const event of events) {\n await this.processEvent(event);\n }\n\n if (events.length > 0) {\n this.saveCheckpoint(currentBlock);\n }\n\n lastBlock = currentBlock;\n }\n } catch (error) {\n console.error('Polling error:', error);\n }\n }, pollingInterval);\n }\n\n private async processEvent(event: any): Promise<void> {\n // Parse event data\n // The RequestStarted event has: (requestId, subscriptionId, containerId, commitment)\n // Most fields are in the commitment struct\n const commitment = event.args.commitment;\n\n const requestStartedEvent: RequestStartedEvent = {\n requestId: event.args.requestId,\n subscriptionId: event.args.subscriptionId,\n containerId: event.args.containerId,\n interval: commitment.interval,\n redundancy: commitment.redundancy,\n useDeliveryInbox: commitment.useDeliveryInbox,\n feeAmount: commitment.feeAmount,\n feeToken: commitment.feeToken,\n verifier: commitment.verifier,\n coordinator: commitment.coordinator,\n walletAddress: commitment.walletAddress,\n blockNumber: event.blockNumber,\n };\n\n // Emit event for NoosphereAgent to handle\n this.emit('RequestStarted', requestStartedEvent);\n }\n\n private async reconnect(): Promise<void> {\n if (this.reconnectAttempts >= this.maxReconnectAttempts) {\n console.error('Max reconnection attempts reached. Falling back to HTTP polling.');\n this.useWebSocket = false;\n await this.connect();\n await this.startPolling();\n return;\n }\n\n const backoff = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 60000);\n console.log(\n `🔄 Reconnecting in ${backoff}ms (attempt ${this.reconnectAttempts + 1}/${this.maxReconnectAttempts})`\n );\n\n await new Promise((resolve) => setTimeout(resolve, backoff));\n\n try {\n // Clean up old listeners before reconnecting\n if (this.coordinator) {\n this.coordinator.removeAllListeners();\n }\n if (this.provider instanceof ethers.WebSocketProvider) {\n try {\n await this.provider.destroy();\n } catch {\n // Ignore destroy errors\n }\n }\n\n await this.connect();\n\n // Replay any missed events since last checkpoint\n await this.replayMissedEvents();\n\n await this.startWebSocketListening();\n console.log('✓ Reconnected successfully');\n this.reconnectAttempts = 0;\n this.lastEventTime = Date.now();\n } catch (error) {\n console.error('Reconnection failed:', error);\n this.reconnectAttempts++;\n await this.reconnect();\n }\n }\n\n private saveCheckpoint(blockNumber: number): void {\n this.lastProcessedBlock = blockNumber;\n\n // Use callback if provided\n if (this.checkpointCallbacks?.saveCheckpoint) {\n this.checkpointCallbacks.saveCheckpoint({\n blockNumber,\n blockTimestamp: Date.now(),\n });\n }\n }\n\n async stop(): Promise<void> {\n // Clear heartbeat interval\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = null;\n }\n\n if (this.router) {\n this.router.removeAllListeners();\n }\n if (this.coordinator) {\n this.coordinator.removeAllListeners();\n }\n if (this.provider instanceof ethers.WebSocketProvider) {\n await this.provider.destroy();\n }\n }\n}\n","import Docker from 'dockerode';\nimport fs from 'fs/promises';\nimport path from 'path';\nimport axios from 'axios';\nimport type { ContainerMetadata } from './types';\n\nexport interface ContainerExecutionResult {\n output: string;\n exitCode: number;\n executionTime: number;\n}\n\nexport class ContainerManager {\n private docker: Docker;\n private runningContainers: Set<Docker.Container> = new Set();\n private persistentContainers: Map<string, Docker.Container> = new Map();\n private containerPorts: Map<string, number> = new Map();\n\n constructor() {\n this.docker = new Docker();\n }\n\n async runContainer(\n container: ContainerMetadata,\n input: string,\n timeout: number = 300000 // 5 minutes default\n ): Promise<ContainerExecutionResult> {\n const startTime = Date.now();\n\n try {\n // Get the port for this container\n // We need to find the container ID from the metadata\n // Since we don't have a direct mapping from metadata to ID, we'll use the port from metadata\n const port = container.port ? parseInt(container.port) : 8081; // Default to 8081\n\n // Make HTTP POST request to the persistent container\n // Use container name as host when DOCKER_NETWORK is set (DinD), otherwise localhost\n // Note: container.name is the short name like \"noosphere-hello-world\", not the blockchain hash\n const containerHost = process.env.DOCKER_NETWORK\n ? `noosphere-${container.name}`\n : 'localhost';\n const url = `http://${containerHost}:${port}/computation`;\n\n // Prepare request body\n // Try to parse input as JSON and merge with { input: ... }\n let requestBody: any;\n try {\n const parsedInput = JSON.parse(input);\n // If input is valid JSON, merge it with { input: originalString }\n requestBody = { input: input, ...parsedInput };\n } catch {\n // Not JSON, just wrap in { input: ... }\n requestBody = { input: input };\n }\n\n const response = await axios.post(url, requestBody, {\n timeout,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n const executionTime = Date.now() - startTime;\n\n // Extract output from response\n // Handle both JSON responses with {output: \"...\"} and plain text responses\n let output: string;\n if (typeof response.data === 'string') {\n // Plain text response (e.g., LLM containers)\n output = response.data;\n } else if (response.data.output !== undefined) {\n // JSON response with output field\n output =\n typeof response.data.output === 'string'\n ? response.data.output\n : JSON.stringify(response.data.output);\n } else {\n // Fallback: stringify the entire response\n output = JSON.stringify(response.data);\n }\n\n return {\n output,\n exitCode: 0,\n executionTime,\n };\n } catch (error: any) {\n const executionTime = Date.now() - startTime;\n\n // Handle HTTP errors\n if (error.response) {\n throw new Error(\n `Container HTTP error ${error.response.status}: ${JSON.stringify(error.response.data)}`\n );\n } else if (error.code === 'ECONNREFUSED') {\n throw new Error(\n `Cannot connect to container (port ${container.port || 8081}). Is it running?`\n );\n } else if (error.code === 'ETIMEDOUT' || error.code === 'ECONNABORTED') {\n throw new Error(`Container execution timeout after ${timeout}ms`);\n }\n\n throw error;\n }\n }\n\n private async collectContainerResult(\n dockerContainer: Docker.Container,\n workDir: string,\n startTime: number\n ): Promise<ContainerExecutionResult> {\n try {\n // Get exit status\n const inspectData = await dockerContainer.inspect();\n const exitCode = inspectData.State.ExitCode || 0;\n\n // Read output\n const outputPath = path.join(workDir, 'output.json');\n let output = '';\n try {\n output = await fs.readFile(outputPath, 'utf-8');\n } catch (error) {\n // If no output file, try to get container logs\n const logs = await dockerContainer.logs({\n stdout: true,\n stderr: true,\n });\n output = logs.toString();\n }\n\n const executionTime = Date.now() - startTime;\n\n // Remove the container now that we've collected results\n try {\n await dockerContainer.remove({ force: true });\n } catch (error) {\n // Container might already be removed, ignore\n }\n\n // Cleanup work directory\n await fs.rm(workDir, { recursive: true, force: true });\n\n return {\n output,\n exitCode,\n executionTime,\n };\n } catch (error) {\n // Cleanup container and work directory on error\n try {\n await dockerContainer.remove({ force: true });\n } catch {\n // Ignore removal errors\n }\n await fs.rm(workDir, { recursive: true, force: true }).catch(() => {});\n throw error;\n }\n }\n\n private async pullImage(image: string, tag: string): Promise<void> {\n const imageTag = `${image}:${tag}`;\n\n try {\n // Check if image exists\n await this.docker.getImage(imageTag).inspect();\n console.log(`Image ${imageTag} already exists`);\n } catch {\n // Image doesn't exist, pull it\n console.log(`Pulling image ${imageTag}...`);\n\n return new Promise((resolve, reject) => {\n this.docker.pull(imageTag, (err: any, stream: NodeJS.ReadableStream) => {\n if (err) return reject(err);\n\n this.docker.modem.followProgress(\n stream,\n (err: any) => {\n if (err) return reject(err);\n console.log(`✓ Pulled image ${imageTag}`);\n resolve();\n },\n (event: any) => {\n // Progress update\n if (event.status) {\n console.log(`${event.status} ${event.progress || ''}`);\n }\n }\n );\n });\n });\n }\n }\n\n private async waitForContainer(container: Docker.Container): Promise<any> {\n return new Promise((resolve, reject) => {\n container.wait((err, data) => {\n if (err) return reject(err);\n resolve(data);\n });\n });\n }\n\n private timeout(ms: number): Promise<null> {\n return new Promise((resolve) => setTimeout(() => resolve(null), ms));\n }\n\n private parseMemory(memory: string): number {\n const units: { [key: string]: number } = {\n b: 1,\n kb: 1024,\n mb: 1024 * 1024,\n gb: 1024 * 1024 * 1024,\n };\n\n const match = memory.toLowerCase().match(/^(\\d+)\\s*(b|kb|mb|gb)$/);\n if (!match) {\n throw new Error(`Invalid memory format: ${memory}`);\n }\n\n const [, value, unit] = match;\n return parseInt(value, 10) * units[unit];\n }\n\n async checkDockerAvailable(): Promise<boolean> {\n try {\n await this.docker.ping();\n return true;\n } catch {\n return false;\n }\n }\n\n async getDockerInfo(): Promise<any> {\n return this.docker.info();\n }\n\n /**\n * Cleanup all running containers\n * Called when agent is shutting down\n */\n async cleanup(): Promise<void> {\n if (this.runningContainers.size === 0) {\n return;\n }\n\n console.log(`🧹 Cleaning up ${this.runningContainers.size} running containers...`);\n\n const cleanupPromises = Array.from(this.runningContainers).map(async (container) => {\n try {\n const inspect = await container.inspect();\n if (inspect.State.Running) {\n console.log(` Stopping container ${inspect.Id.slice(0, 12)}...`);\n await container.stop({ t: 10 }); // 10 second grace period\n await container.remove({ force: true });\n }\n } catch (error) {\n // Container might already be stopped/removed\n console.warn(` Warning: Failed to cleanup container:`, (error as Error).message);\n }\n });\n\n await Promise.all(cleanupPromises);\n this.runningContainers.clear();\n console.log('✓ Container cleanup completed');\n }\n\n /**\n * Get number of running containers\n */\n getRunningContainerCount(): number {\n return this.runningContainers.size;\n }\n\n /**\n * Pre-pull container images and start persistent containers on startup\n * This speeds up request handling by having containers ready\n */\n async prepareContainers(containers: Map<string, ContainerMetadata>): Promise<void> {\n if (containers.size === 0) {\n console.log('No containers to prepare');\n return;\n }\n\n console.log(`\\n🚀 Preparing ${containers.size} containers...`);\n\n const pullAndStartPromises = Array.from(containers.entries()).map(async ([id, container]) => {\n const imageTag = `${container.image}:${container.tag || 'latest'}`;\n\n try {\n console.log(` Pulling ${imageTag}...`);\n await this.pullImage(container.image, container.tag || 'latest');\n console.log(` ✓ ${imageTag} ready`);\n } catch (error) {\n console.error(` ❌ Failed to pull ${imageTag}:`, (error as Error).message);\n // Skip container start if pull failed\n return;\n }\n\n try {\n // Start persistent container\n await this.startPersistentContainer(id, container);\n } catch (error) {\n console.error(` ❌ Failed to start ${container.name || container.image}:`, (error as Error).message);\n }\n });\n\n await Promise.all(pullAndStartPromises);\n console.log('✓ All containers prepared\\n');\n }\n\n /**\n * Start a persistent container that stays running\n */\n private async startPersistentContainer(\n containerId: string,\n metadata: ContainerMetadata\n ): Promise<void> {\n // Use metadata.name for Docker container name (human-readable)\n // This matches the hostname used in runContainer()\n const containerName = `noosphere-${metadata.name}`;\n const imageTag = `${metadata.image}:${metadata.tag || 'latest'}`;\n\n // Check if container already exists\n const existingContainer = this.docker.getContainer(containerName);\n try {\n const inspect = await existingContainer.inspect();\n if (inspect.State.Running) {\n console.log(` ✓ Container ${containerName} already running`);\n this.persistentContainers.set(containerId, existingContainer);\n return;\n } else {\n // Container exists but stopped - try to start it\n try {\n await existingContainer.start();\n console.log(` ✓ Started existing container ${containerName}`);\n this.persistentContainers.set(containerId, existingContainer);\n return;\n } catch (startErr) {\n // Failed to start, remove and recreate\n console.log(` Removing stopped container ${containerName} to recreate...`);\n await existingContainer.remove({ force: true });\n }\n }\n } catch (err) {\n // Container doesn't exist, will create new one\n }\n\n // Create new persistent container\n const dockerNetwork = process.env.DOCKER_NETWORK;\n const createOptions: Docker.ContainerCreateOptions = {\n name: containerName,\n Image: imageTag,\n Tty: false,\n AttachStdout: false,\n AttachStderr: false,\n ExposedPorts: metadata.port ? { [`${metadata.port}/tcp`]: {} } : undefined,\n HostConfig: {\n AutoRemove: false, // Keep container for reuse\n // Only bind ports to host when not using Docker network (local dev)\n PortBindings:\n metadata.port && !dockerNetwork\n ? {\n [`${metadata.port}/tcp`]: [{ HostPort: metadata.port }],\n }\n : undefined,\n // Join the specified Docker network for DinD communication\n NetworkMode: dockerNetwork || undefined,\n },\n Env: metadata.env ? Object.entries(metadata.env).map(([k, v]) => `${k}=${v}`) : undefined,\n };\n\n // Add resource limits\n if (metadata.requirements) {\n const resources: any = {};\n\n if (metadata.requirements.memory) {\n resources.Memory = this.parseMemory(metadata.requirements.memory);\n }\n\n if (metadata.requirements.cpu) {\n resources.NanoCpus = metadata.requirements.cpu * 1e9;\n }\n\n if (metadata.requirements.gpu) {\n createOptions.HostConfig!.DeviceRequests = [\n {\n Driver: 'nvidia',\n Count: -1,\n Capabilities: [['gpu']],\n },\n ];\n }\n\n if (Object.keys(resources).length > 0) {\n createOptions.HostConfig = {\n ...createOptions.HostConfig,\n ...resources,\n };\n }\n }\n\n const dockerContainer = await this.docker.createContainer(createOptions);\n await dockerContainer.start();\n\n this.persistentContainers.set(containerId, dockerContainer);\n if (metadata.port) {\n this.containerPorts.set(containerId, parseInt(metadata.port));\n }\n\n console.log(` ✓ Started persistent container ${containerName}`);\n }\n\n /**\n * Stop and remove all persistent containers\n */\n async stopPersistentContainers(): Promise<void> {\n if (this.persistentContainers.size === 0) {\n return;\n }\n\n console.log(`\\n🛑 Stopping ${this.persistentContainers.size} persistent containers...`);\n\n const stopPromises = Array.from(this.persistentContainers.entries()).map(\n async ([id, container]) => {\n try {\n const inspect = await container.inspect();\n if (inspect.State.Running) {\n console.log(` Stopping ${inspect.Name}...`);\n await container.stop({ t: 10 });\n }\n await container.remove({ force: true });\n console.log(` ✓ Stopped ${inspect.Name}`);\n } catch (error) {\n console.warn(` Warning: Failed to stop container ${id}:`, (error as Error).message);\n }\n }\n );\n\n await Promise.all(stopPromises);\n this.persistentContainers.clear();\n this.containerPorts.clear();\n console.log('✓ All persistent containers stopped\\n');\n }\n}\n","import { ethers } from 'ethers';\nimport { EventMonitor } from './EventMonitor';\nimport { ContainerManager } from './ContainerManager';\nimport { SchedulerService, SchedulerConfig } from './SchedulerService';\nimport { WalletManager, KeystoreManager } from '@noosphere/crypto';\nimport { RegistryManager } from '@noosphere/registry';\nimport { ABIs } from '@noosphere/contracts';\nimport { CommitmentUtils } from './utils/CommitmentUtils';\nimport { ConfigLoader } from './utils/ConfigLoader';\nimport type {\n AgentConfig,\n RequestStartedEvent,\n ContainerMetadata,\n Commitment,\n NoosphereAgentConfig,\n} from './types';\n\nexport interface ComputeDeliveredEvent {\n requestId: string;\n subscriptionId: number;\n interval: number;\n containerId: string;\n redundancy: number;\n feeAmount: string;\n feeToken: string;\n input: string;\n output: string;\n txHash: string;\n blockNumber: number;\n gasUsed: bigint;\n gasPrice: bigint;\n}\n\nexport interface RequestStartedCallbackEvent {\n requestId: string;\n subscriptionId: number;\n interval: number;\n containerId: string;\n redundancy: number;\n feeAmount: string;\n feeToken: string;\n verifier: string;\n walletAddress: string;\n blockNumber: number;\n}\n\n/**\n * Event data for commitment success (scheduler prepareNextInterval)\n */\nexport interface CommitmentSuccessCallbackEvent {\n subscriptionId: bigint;\n interval: bigint;\n txHash: string;\n blockNumber: number;\n gasUsed: string;\n gasPrice: string;\n gasCost: string;\n}\n\nexport interface CheckpointData {\n blockNumber: number;\n blockHash?: string;\n blockTimestamp?: number;\n}\n\nexport interface NoosphereAgentOptions {\n config: AgentConfig;\n routerAbi?: any[]; // Optional - defaults to ABIs.Router from @noosphere/contracts\n coordinatorAbi?: any[]; // Optional - defaults to ABIs.Coordinator from @noosphere/contracts\n getContainer?: (containerId: string) => ContainerMetadata | undefined;\n containers?: Map<string, ContainerMetadata>; // Container map from config\n walletManager?: WalletManager; // Optional - provide pre-initialized WalletManager\n paymentWallet?: string; // Optional - WalletFactory wallet address for the agent\n schedulerConfig?: Partial<SchedulerConfig>; // Optional - scheduler configuration from config.json\n onRequestStarted?: (event: RequestStartedCallbackEvent) => void; // Callback when request is received\n onRequestProcessing?: (requestId: string) => void; // Callback when request processing starts\n onRequestSkipped?: (requestId: string, reason: string) => void; // Callback when request is skipped\n onRequestFailed?: (requestId: string, error: string, txHash?: string) => void; // Callback when request fails (txHash included if tx was sent)\n onComputeDelivered?: (event: ComputeDeliveredEvent) => void; // Callback when compute is delivered\n onCommitmentSuccess?: (event: CommitmentSuccessCallbackEvent) => void; // Callback when scheduler prepares interval\n isRequestProcessed?: (requestId: string) => boolean; // Check if request is already processed (completed/failed)\n loadCheckpoint?: () => CheckpointData | undefined; // Load checkpoint from storage\n saveCheckpoint?: (checkpoint: CheckpointData) => void; // Save checkpoint to storage\n}\n\nexport class NoosphereAgent {\n private eventMonitor: EventMonitor;\n private containerManager: ContainerManager;\n private scheduler: SchedulerService;\n private walletManager: WalletManager;\n private registryManager: RegistryManager;\n private router: ethers.Contract;\n private coordinator: ethers.Contract;\n private provider: ethers.JsonRpcProvider;\n private config: AgentConfig;\n private getContainer?: (containerId: string) => ContainerMetadata | undefined;\n private containers?: Map<string, ContainerMetadata>;\n private paymentWallet?: string;\n private isRunning = false;\n private processingRequests = new Set<string>(); // Deduplication: track requests being processed\n\n constructor(private options: NoosphereAgentOptions) {\n this.config = options.config;\n this.provider = new ethers.JsonRpcProvider(options.config.rpcUrl);\n const provider = this.provider;\n\n // Use default ABIs from @noosphere/contracts if not provided\n const routerAbi = options.routerAbi || ABIs.Router;\n const coordinatorAbi = options.coordinatorAbi || ABIs.Coordinator;\n\n // Use provided WalletManager or create from private key\n if (options.walletManager) {\n this.walletManager = options.walletManager;\n } else if (options.config.privateKey) {\n this.walletManager = new WalletManager(options.config.privateKey, provider);\n } else {\n throw new Error(\n 'Either walletManager or config.privateKey must be provided. ' +\n 'Recommended: Use NoosphereAgent.fromKeystore() for production.'\n );\n }\n\n this.containerManager = new ContainerManager();\n this.registryManager = new RegistryManager({\n autoSync: true, // Enable automatic sync with remote registry\n cacheTTL: 3600000, // 1 hour cache\n });\n this.eventMonitor = new EventMonitor(options.config, routerAbi, coordinatorAbi, {\n loadCheckpoint: options.loadCheckpoint,\n saveCheckpoint: options.saveCheckpoint,\n });\n\n // Initialize router contract\n this.router = new ethers.Contract(\n options.config.routerAddress,\n routerAbi,\n this.provider\n );\n\n this.coordinator = new ethers.Contract(\n options.config.coordinatorAddress,\n coordinatorAbi,\n this.walletManager.getWallet()\n );\n\n // Store container sources\n this.getContainer = options.getContainer;\n this.containers = options.containers;\n\n // Initialize scheduler service (with container filter)\n this.scheduler = new SchedulerService(\n provider,\n this.router,\n this.coordinator,\n this.walletManager.getAddress(),\n undefined, // batchReaderAddress (set later)\n undefined, // config (set later)\n this.getContainer // Pass container filter\n );\n\n // Store payment wallet (WalletFactory wallet for the agent)\n this.paymentWallet = options.paymentWallet;\n\n // Validate we have at least one container source\n if (!this.getContainer && (!this.containers || this.containers.size === 0)) {\n console.warn('⚠️ No container source provided. Agent will not be able to execute requests.');\n }\n }\n\n /**\n * Initialize NoosphereAgent from config.json (RECOMMENDED)\n * This loads all configuration including containers from a config file\n *\n * @param configPath - Path to config.json file\n * @param routerAbi - Router contract ABI (optional - defaults to ABIs.Router)\n * @param coordinatorAbi - Coordinator contract ABI (optional - defaults to ABIs.Coordinator)\n * @returns Initialized NoosphereAgent\n */\n static async fromConfig(\n configPath: string,\n routerAbi?: any[],\n coordinatorAbi?: any[]\n ): Promise<NoosphereAgent> {\n // Load config from file\n const fullConfig = ConfigLoader.loadFromFile(configPath);\n\n // Extract keystore path and password\n const keystorePath = fullConfig.chain.wallet.keystore?.path;\n const password = fullConfig.chain.wallet.keystore?.password;\n\n if (!keystorePath || !password) {\n throw new Error('Keystore path and password are required in config.chain.wallet.keystore');\n }\n\n // Load containers from config\n const containers = ConfigLoader.getContainersFromConfig(fullConfig);\n\n console.log(`📦 Loaded ${containers.size} containers from config:`);\n for (const [id, container] of containers.entries()) {\n console.log(` - ${id}: ${container.image}:${container.tag || 'latest'}`);\n }\n\n // Create provider\n const provider = new ethers.JsonRpcProvider(fullConfig.chain.rpcUrl);\n\n // Load keystore\n const keystoreManager = new KeystoreManager(keystorePath, password);\n await keystoreManager.load();\n\n // Initialize WalletManager from keystore\n const walletManager = await WalletManager.fromKeystoreManager(keystoreManager, provider);\n\n // Create AgentConfig from NoosphereAgentConfig\n const agentConfig: AgentConfig = {\n rpcUrl: fullConfig.chain.rpcUrl,\n wsRpcUrl: fullConfig.chain.wsRpcUrl,\n routerAddress: fullConfig.chain.routerAddress,\n coordinatorAddress: fullConfig.chain.coordinatorAddress || fullConfig.chain.routerAddress,\n deploymentBlock: fullConfig.chain.deploymentBlock,\n pollingInterval: fullConfig.chain.processingInterval,\n };\n\n // Extract payment wallet (WalletFactory wallet for the agent)\n const paymentWallet = fullConfig.chain.wallet.paymentAddress;\n\n // Create agent with pre-initialized WalletManager and containers\n return new NoosphereAgent({\n config: agentConfig,\n routerAbi,\n coordinatorAbi,\n walletManager,\n containers,\n paymentWallet,\n });\n }\n\n /**\n * Initialize NoosphereAgent from keystore (RECOMMENDED)\n * This is the secure way to initialize an agent in production\n *\n * @param keystorePath - Path to keystore file\n * @param password - Keystore password\n * @param options - Agent configuration options\n * @returns Initialized NoosphereAgent\n */\n static async fromKeystore(\n keystorePath: string,\n password: string,\n options: Omit<NoosphereAgentOptions, 'walletManager'>\n ): Promise<NoosphereAgent> {\n const provider = new ethers.JsonRpcProvider(options.config.rpcUrl);\n\n // Load keystore\n const keystoreManager = new KeystoreManager(keystorePath, password);\n await keystoreManager.load();\n\n // Initialize WalletManager from keystore\n const walletManager = await WalletManager.fromKeystoreManager(keystoreManager, provider);\n\n // Create agent with pre-initialized WalletManager\n return new NoosphereAgent({\n ...options,\n walletManager,\n });\n }\n\n async start(): Promise<void> {\n console.log('Starting Noosphere Agent...');\n\n // Load registry (local + remote sync)\n console.log('📋 Loading container registry...');\n await this.registryManager.load();\n const stats = this.registryManager.getStats();\n console.log(\n `✓ Registry loaded: ${stats.totalContainers} containers, ${stats.totalVerifiers} verifiers`\n );\n\n // Check Docker availability\n const dockerAvailable = await this.containerManager.checkDockerAvailable();\n if (!dockerAvailable) {\n throw new Error('Docker is not available. Please ensure Docker daemon is running.');\n }\n\n // Get wallet info\n const address = this.walletManager.getAddress();\n const balance = await this.walletManager.getBalance();\n console.log(`Agent wallet: ${address}`);\n console.log(`Balance: ${ethers.formatEther(balance)} ETH`);\n\n if (balance === 0n) {\n console.warn('⚠️ Warning: Wallet has zero balance. Agent needs ETH for gas fees.');\n }\n\n // Pre-pull container images if containers are provided\n if (this.containers && this.containers.size > 0) {\n console.log(`\\n🚀 Preparing ${this.containers.size} containers...`);\n await this.containerManager.prepareContainers(this.containers);\n }\n\n // Connect event monitor\n await this.eventMonitor.connect();\n\n // Set up event handler\n this.eventMonitor.on('RequestStarted', async (event: RequestStartedEvent) => {\n await this.handleRequest(event);\n });\n\n // Start listening\n await this.eventMonitor.start();\n\n // Try to get SubscriptionBatchReader address from coordinator\n try {\n const batchReaderAddress = await this.coordinator.getSubscriptionBatchReader();\n if (\n batchReaderAddress &&\n batchReaderAddress !== '0x0000000000000000000000000000000000000000'\n ) {\n console.log(`✓ SubscriptionBatchReader found: ${batchReaderAddress}`);\n\n // Reinitialize scheduler with BatchReader and config from options\n this.scheduler.stop();\n this.scheduler = new SchedulerService(\n this.provider,\n this.router,\n this.coordinator,\n this.walletManager.getAddress(),\n batchReaderAddress,\n this.options.schedulerConfig || {\n cronIntervalMs: 60000, // 1 minute (default)\n syncPeriodMs: 3000, // 3 seconds (default)\n maxRetryAttempts: 3, // 3 retries (default)\n },\n this.getContainer // Pass container filter\n );\n } else {\n console.warn('⚠️ SubscriptionBatchReader not available - subscription sync disabled');\n }\n } catch (error) {\n console.warn('⚠️ Failed to get SubscriptionBatchReader address:', (error as Error).message);\n }\n\n // Start scheduler service\n this.scheduler.start();\n\n // Listen for commitment:success events to handle cases where WebSocket misses events\n this.scheduler.on('commitment:success', async (data: {\n subscriptionId: bigint;\n interval: bigint;\n txHash: string;\n blockNumber: number;\n gasUsed?: string;\n gasPrice?: string;\n gasCost?: string;\n requestStartedEvent?: RequestStartedEvent;\n }) => {\n // Call callback if provided (for DB persistence)\n if (this.options.onCommitmentSuccess) {\n this.options.onCommitmentSuccess({\n subscriptionId: data.subscriptionId,\n interval: data.interval,\n txHash: data.txHash,\n blockNumber: data.blockNumber,\n gasUsed: data.gasUsed || '0',\n gasPrice: data.gasPrice || '0',\n gasCost: data.gasCost || '0',\n });\n }\n\n if (data.requestStartedEvent) {\n console.log(` 📥 Processing RequestStarted from prepare receipt (fallback for missed WebSocket)`);\n await this.handleRequest(data.requestStartedEvent);\n }\n });\n\n this.isRunning = true;\n console.log('✓ Noosphere Agent is running');\n console.log('Listening for requests...');\n }\n\n /**\n * Convert registry ContainerMetadata to agent-core ContainerMetadata\n */\n private convertRegistryContainer(registryContainer: any): ContainerMetadata {\n // Parse image name and tag from imageName (format: \"image:tag\" or just \"image\")\n const [image, tag] = registryContainer.imageName.split(':');\n\n return {\n id: registryContainer.id,\n name: registryContainer.name,\n image: image,\n tag: tag || 'latest',\n port: registryContainer.port?.toString(),\n env: registryContainer.env,\n requirements: registryContainer.requirements,\n payments: registryContainer.payments\n ? {\n basePrice: registryContainer.payments.basePrice,\n unit: registryContainer.payments.token,\n per: registryContainer.payments.per,\n }\n : undefined,\n verified: registryContainer.verified,\n };\n }\n\n private async handleRequest(event: RequestStartedEvent): Promise<void> {\n const requestIdShort = event.requestId.slice(0, 10);\n\n // Deduplication: Check if this request is already being processed\n if (this.processingRequests.has(event.requestId)) {\n console.log(` ⏭️ Request ${requestIdShort}... already being processed, skipping duplicate`);\n return;\n }\n\n // Check if request has already been processed (completed/failed)\n if (this.options.isRequestProcessed && this.options.isRequestProcessed(event.requestId)) {\n console.log(` ⏭️ Request ${requestIdShort}... already processed, skipping`);\n return;\n }\n\n this.processingRequests.add(event.requestId);\n\n console.log(`\\n[${new Date().toISOString()}] RequestStarted: ${requestIdShort}...`);\n console.log(` SubscriptionId: ${event.subscriptionId}`);\n console.log(` Interval: ${event.interval}`);\n console.log(` ContainerId: ${event.containerId.slice(0, 10)}...`);\n\n // Call onRequestStarted callback if provided\n if (this.options.onRequestStarted) {\n this.options.onRequestStarted({\n requestId: event.requestId,\n subscriptionId: Number(event.subscriptionId),\n interval: Number(event.interval),\n containerId: event.containerId,\n redundancy: event.redundancy,\n feeAmount: event.feeAmount.toString(),\n feeToken: event.feeToken,\n verifier: event.verifier,\n walletAddress: event.walletAddress,\n blockNumber: event.blockNumber,\n });\n }\n\n // Check if this interval is still current (skip old replayed events)\n // Note: One-time executions (intervalSeconds=0) return type(uint32).max, should not be skipped\n try {\n const currentInterval = await this.router.getComputeSubscriptionInterval(event.subscriptionId);\n const eventInterval = Number(event.interval);\n\n // Skip check only for scheduled subscriptions (not one-time executions)\n // type(uint32).max = 4294967295 indicates one-time execution\n const isOneTimeExecution = currentInterval === 4294967295n;\n\n if (!isOneTimeExecution && currentInterval > eventInterval + 2) {\n console.log(` ⏭️ Skipping old interval ${eventInterval} (current: ${currentInterval})`);\n if (this.options.onRequestSkipped) {\n this.options.onRequestSkipped(event.requestId, `Old interval ${eventInterval} (current: ${currentInterval})`);\n }\n this.processingRequests.delete(event.requestId);\n return;\n }\n } catch (error) {\n console.warn(` Could not verify interval currency:`, (error as Error).message);\n // Continue processing if we can't verify\n }\n\n // Mark this interval as committed (subscription will be tracked by batch reader)\n this.scheduler.markIntervalCommitted(BigInt(event.subscriptionId), BigInt(event.interval));\n\n // Track sent transaction hash for error reporting\n let sentTxHash: string | undefined;\n\n try {\n // Self-coordination: Wait based on position-based priority\n await this.waitForPriority(event);\n\n // Call onRequestProcessing callback if provided\n if (this.options.onRequestProcessing) {\n this.options.onRequestProcessing(event.requestId);\n }\n\n // Check if already fulfilled (redundancy check)\n const currentCount = await this.coordinator.redundancyCount(event.requestId);\n if (currentCount >= event.redundancy) {\n console.log(` ⏭️ Already fulfilled (${currentCount}/${event.redundancy}), skipping`);\n if (this.options.onRequestSkipped) {\n this.options.onRequestSkipped(event.requestId, `Already fulfilled (${currentCount}/${event.redundancy})`);\n }\n this.processingRequests.delete(event.requestId);\n return;\n }\n\n // Get container metadata (try callback first for validation, then registry, then map)\n let container: ContainerMetadata | undefined;\n\n // 1. Try callback function first (allows config-based filtering)\n if (this.getContainer) {\n container = this.getContainer(event.containerId);\n if (container) {\n console.log(` 📦 Container found via callback: ${container.name}`);\n }\n }\n\n // 2. Fallback to registry\n if (!container) {\n const registryContainer = this.registryManager.getContainer(event.containerId);\n if (registryContainer) {\n console.log(` 📋 Container found in registry: ${registryContainer.name}`);\n container = this.convertRegistryContainer(registryContainer);\n }\n }\n\n // 3. Fallback to containers map from config\n if (!container && this.containers) {\n container = this.containers.get(event.containerId);\n if (container) {\n console.log(` 📦 Container found in config: ${container.name}`);\n }\n }\n\n if (!container) {\n console.error(` ❌ Container not found: ${event.containerId}`);\n console.error(` 💡 Try adding it to the registry or config file`);\n if (this.options.onRequestSkipped) {\n this.options.onRequestSkipped(event.requestId, `Container not found: ${event.containerId}`);\n }\n return;\n }\n\n console.log(\n ` 📦 Using container: ${container.name} (${container.image}:${container.tag || 'latest'})`\n );\n\n // Fetch subscription to get client address\n const subscription = await this.router.getComputeSubscription(event.subscriptionId);\n const clientAddress = subscription.client;\n\n if (!clientAddress || clientAddress === '0x0000000000000000000000000000000000000000') {\n console.error(` ❌ Invalid client address for subscription ${event.subscriptionId}`);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, `Invalid client address for subscription ${event.subscriptionId}`);\n }\n return;\n }\n\n console.log(` 📞 Fetching inputs from client: ${clientAddress.slice(0, 10)}...`);\n\n // Call client's getComputeInputs to get the input data\n const clientAbi = [\n 'function getComputeInputs(uint64 subscriptionId, uint32 interval, uint32 timestamp, address caller) external view returns (bytes memory)',\n ];\n const client = new ethers.Contract(clientAddress, clientAbi, this.provider);\n const timestamp = Math.floor(Date.now() / 1000);\n\n let inputBytes: string;\n try {\n inputBytes = await client.getComputeInputs(\n event.subscriptionId,\n event.interval,\n timestamp,\n this.walletManager.getAddress()\n );\n } catch (error) {\n const errorMessage = (error as Error).message || String(error);\n console.error(` ❌ Failed to get inputs from client:`, error);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, `Failed to get inputs: ${errorMessage}`);\n }\n return;\n }\n\n // Convert bytes to string\n const inputData = ethers.toUtf8String(inputBytes);\n console.log(\n ` 📥 Inputs received: ${inputData.substring(0, 100)}${inputData.length > 100 ? '...' : ''}`\n );\n\n // Execute container\n console.log(` ⚙️ Executing...`);\n const result = await this.containerManager.runContainer(\n container,\n inputData,\n 300000 // 5 min timeout\n );\n\n if (result.exitCode !== 0) {\n console.error(` ❌ Container execution failed with exit code ${result.exitCode}`);\n console.error(` 📄 Container output:`, result.output);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, `Container execution failed with exit code ${result.exitCode}`);\n }\n return;\n }\n\n console.log(` ✓ Execution completed in ${result.executionTime}ms`);\n\n // Submit result to coordinator\n console.log(` 📤 Submitting result...`);\n\n // Use the original input data from client (already a string)\n const input = inputData;\n const output = result.output;\n const proof = event.verifier ? result.output : ''; // Use output as proof if verifier exists\n\n // Use the wallet address from the event (subscription's payment wallet)\n const subscriptionWallet = event.walletAddress;\n\n // Create commitment using SDK utility\n const commitment: Commitment = CommitmentUtils.fromEvent(event, subscriptionWallet);\n\n // Encode commitment data using SDK utility\n const commitmentData = CommitmentUtils.encode(commitment);\n\n // Use payment wallet (WalletFactory wallet) if set, otherwise fallback to EOA\n const nodeWallet = this.paymentWallet || this.walletManager.getAddress();\n\n // Send transaction\n const tx = await this.coordinator.reportComputeResult(\n event.interval,\n ethers.toUtf8Bytes(input),\n ethers.toUtf8Bytes(output),\n ethers.toUtf8Bytes(proof),\n commitmentData,\n nodeWallet\n );\n\n // Capture tx hash immediately for error reporting\n sentTxHash = tx.hash;\n console.log(` 📤 Transaction sent: ${tx.hash}`);\n\n // Wait for confirmation\n const receipt = await tx.wait();\n\n if (receipt.status === 1) {\n console.log(` ✓ Result delivered successfully (block ${receipt.blockNumber})`);\n console.log(` 💰 Fee earned: ${ethers.formatEther(event.feeAmount)} ETH`);\n\n // Call onComputeDelivered callback if provided\n if (this.options.onComputeDelivered) {\n this.options.onComputeDelivered({\n requestId: event.requestId,\n subscriptionId: Number(event.subscriptionId),\n interval: Number(event.interval),\n containerId: event.containerId,\n redundancy: event.redundancy,\n feeAmount: event.feeAmount.toString(),\n feeToken: event.feeToken,\n input: input,\n output: output,\n txHash: tx.hash,\n blockNumber: receipt.blockNumber,\n gasUsed: receipt.gasUsed,\n gasPrice: receipt.gasPrice || tx.gasPrice || 0n,\n });\n }\n } else {\n throw new Error(`Delivery transaction failed with status ${receipt.status}`);\n }\n } catch (error) {\n const errorMessage = (error as Error).message || String(error);\n const errorCode = (error as any).code;\n\n // Handle nonce expired error - this usually means another handler already processed this request\n if (errorCode === 'NONCE_EXPIRED' || errorMessage.includes('nonce has already been used') || errorMessage.includes('nonce too low')) {\n console.log(` ⚠️ Nonce expired (likely already processed by another handler)`);\n // Don't mark as failed - it was probably successful via another path\n return;\n }\n\n console.error(` ❌ Error processing request:`, error);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, errorMessage, sentTxHash);\n }\n } finally {\n // Cleanup: Remove from processing set\n this.processingRequests.delete(event.requestId);\n }\n }\n\n /**\n * Self-coordination: Calculate priority and wait\n */\n private async waitForPriority(event: RequestStartedEvent): Promise<void> {\n const priority = this.calculatePriority(event.requestId);\n const maxDelay = event.redundancy === 1 ? 1000 : 200; // 1s for single redundancy, 200ms otherwise\n const delay = Math.floor((priority / 0xffffffff) * maxDelay);\n\n if (delay > 0) {\n console.log(\n ` ⏱️ Priority wait: ${delay}ms (priority: 0x${priority.toString(16).slice(0, 8)})`\n );\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n\n /**\n * Calculate deterministic priority for this agent and request\n */\n private calculatePriority(requestId: string): number {\n const hash = ethers.keccak256(ethers.concat([requestId, this.walletManager.getAddress()]));\n\n // Use first 8 hex chars as priority (0x00000000 - 0xffffffff)\n return parseInt(hash.slice(2, 10), 16);\n }\n\n async stop(): Promise<void> {\n console.log('Stopping Noosphere Agent...');\n\n // Stop event monitoring\n await this.eventMonitor.stop();\n\n // Stop scheduler\n this.scheduler.stop();\n\n // Cleanup running containers\n await this.containerManager.cleanup();\n\n // Stop persistent containers\n await this.containerManager.stopPersistentContainers();\n\n this.isRunning = false;\n console.log('✓ Agent stopped');\n }\n\n getStatus(): {\n running: boolean;\n address: string;\n scheduler: {\n totalSubscriptions: number;\n activeSubscriptions: number;\n committedIntervals: number;\n pendingTransactions: number;\n };\n containers: {\n runningCount: number;\n };\n } {\n return {\n running: this.isRunning,\n address: this.walletManager.getAddress(),\n scheduler: this.scheduler.getStats(),\n containers: {\n runningCount: this.containerManager.getRunningContainerCount(),\n },\n };\n }\n\n /**\n * Get scheduler service (for advanced usage)\n */\n getScheduler(): SchedulerService {\n return this.scheduler;\n }\n}\n","/**\n * SchedulerService\n *\n * Manages periodic commitment generation for active subscriptions.\n * Equivalent to Java's CommitmentGenerationService with cron scheduling.\n */\n\nimport { EventEmitter } from 'events';\nimport { Contract, Provider, TransactionReceipt } from 'ethers';\nimport { SubscriptionBatchReaderContract, type ComputeSubscription } from '@noosphere/contracts';\nimport type { RequestStartedEvent } from './types';\n\nexport interface SubscriptionState {\n subscriptionId: bigint;\n routeId: string;\n containerId: string;\n client: string;\n wallet: string;\n activeAt: bigint;\n intervalSeconds: bigint;\n maxExecutions: bigint;\n redundancy: number;\n verifier?: string;\n currentInterval: bigint;\n lastProcessedAt: number;\n pendingTx?: string;\n txAttempts: number;\n}\n\nexport interface SchedulerConfig {\n cronIntervalMs: number; // Default: 60000 (1 minute)\n maxRetryAttempts: number; // Default: 3\n syncPeriodMs: number; // Default: 3000 (3 seconds)\n // Persistence callbacks for committed intervals\n loadCommittedIntervals?: () => string[]; // Load from DB on startup\n saveCommittedInterval?: (key: string) => void; // Save to DB when committed\n}\n\nexport class SchedulerService extends EventEmitter {\n private subscriptions = new Map<string, SubscriptionState>();\n private committedIntervals = new Set<string>(); // subscriptionId:interval\n private pendingTxs = new Map<string, string>(); // key -> txHash\n private intervalTimer?: NodeJS.Timeout;\n private syncTimer?: NodeJS.Timeout;\n private config: SchedulerConfig;\n private batchReader?: SubscriptionBatchReaderContract;\n private lastSyncedId: bigint = 0n;\n private maxSubscriptionId?: bigint;\n private getContainer?: (containerId: string) => any;\n\n constructor(\n private provider: Provider,\n private router: Contract,\n private coordinator: Contract,\n private agentWallet: string,\n batchReaderAddress?: string,\n config?: Partial<SchedulerConfig>,\n getContainer?: (containerId: string) => any\n ) {\n super();\n this.config = {\n cronIntervalMs: config?.cronIntervalMs ?? 60000, // 1 minute\n maxRetryAttempts: config?.maxRetryAttempts ?? 3,\n syncPeriodMs: config?.syncPeriodMs ?? 3000, // 3 seconds\n loadCommittedIntervals: config?.loadCommittedIntervals,\n saveCommittedInterval: config?.saveCommittedInterval,\n };\n this.getContainer = getContainer;\n\n // Initialize SubscriptionBatchReader if address provided\n if (batchReaderAddress) {\n this.batchReader = new SubscriptionBatchReaderContract(batchReaderAddress, provider);\n console.log(`✓ SubscriptionBatchReader configured: ${batchReaderAddress}`);\n } else {\n console.warn('⚠️ SubscriptionBatchReader not configured - subscription sync disabled');\n }\n }\n\n /**\n * Start the scheduler service\n */\n start(): void {\n console.log('🕐 Starting Scheduler Service...');\n console.log(` Commitment generation interval: ${this.config.cronIntervalMs}ms`);\n console.log(` Sync period: ${this.config.syncPeriodMs}ms`);\n\n // Load committed intervals from persistent storage\n if (this.config.loadCommittedIntervals) {\n const loaded = this.config.loadCommittedIntervals();\n for (const key of loaded) {\n this.committedIntervals.add(key);\n }\n if (loaded.length > 0) {\n console.log(` Loaded ${loaded.length} committed intervals from storage`);\n }\n }\n\n // Start commitment generation timer (like Spring @Scheduled cron)\n this.intervalTimer = setInterval(() => this.generateCommitments(), this.config.cronIntervalMs);\n\n // Start periodic sync timer\n this.syncTimer = setInterval(() => this.syncSubscriptions(), this.config.syncPeriodMs);\n\n console.log('✓ Scheduler Service started');\n }\n\n /**\n * Stop the scheduler service\n */\n stop(): void {\n if (this.intervalTimer) {\n clearInterval(this.intervalTimer);\n this.intervalTimer = undefined;\n }\n if (this.syncTimer) {\n clearInterval(this.syncTimer);\n this.syncTimer = undefined;\n }\n console.log('✓ Scheduler Service stopped');\n }\n\n /**\n * Track a new subscription\n */\n trackSubscription(\n subscription: Omit<SubscriptionState, 'currentInterval' | 'lastProcessedAt' | 'txAttempts'>\n ): void {\n const key = subscription.subscriptionId.toString();\n\n if (this.subscriptions.has(key)) {\n console.log(` Subscription ${key} already tracked, updating...`);\n }\n\n // Calculate current interval based on elapsed time\n // Note: Contract uses 1-based indexing: ((timestamp - activeAt) / intervalSeconds) + 1\n const now = Math.floor(Date.now() / 1000);\n const elapsed = now - Number(subscription.activeAt);\n const currentInterval = subscription.intervalSeconds > 0n\n ? BigInt(Math.max(1, Math.floor(elapsed / Number(subscription.intervalSeconds)) + 1))\n : 1n;\n\n this.subscriptions.set(key, {\n ...subscription,\n currentInterval,\n lastProcessedAt: Date.now(),\n txAttempts: 0,\n });\n\n console.log(`✓ Tracking subscription ${key}`);\n this.emit('subscription:tracked', subscription.subscriptionId);\n }\n\n /**\n * Remove a subscription from tracking\n */\n untrackSubscription(subscriptionId: bigint): void {\n const key = subscriptionId.toString();\n if (this.subscriptions.delete(key)) {\n // Clean up committedIntervals for this subscription to prevent memory leak\n const prefix = `${key}:`;\n let cleanedCount = 0;\n for (const commitmentKey of this.committedIntervals) {\n if (commitmentKey.startsWith(prefix)) {\n this.committedIntervals.delete(commitmentKey);\n cleanedCount++;\n }\n }\n if (cleanedCount > 0) {\n console.log(` 🧹 Cleaned up ${cleanedCount} committed intervals for subscription ${key}`);\n }\n console.log(`✓ Stopped tracking subscription ${key}`);\n this.emit('subscription:untracked', subscriptionId);\n }\n }\n\n /**\n * Mark an interval as committed (for RequestStarted events)\n * Also persists to storage if callback is configured\n */\n markIntervalCommitted(subscriptionId: bigint, interval: bigint): void {\n const commitmentKey = `${subscriptionId}:${interval}`;\n this.addCommittedInterval(commitmentKey);\n console.log(` ✓ Marked interval ${interval} as committed for subscription ${subscriptionId}`);\n }\n\n /**\n * Add to committed intervals set and persist to storage\n */\n private addCommittedInterval(key: string): void {\n if (!this.committedIntervals.has(key)) {\n this.committedIntervals.add(key);\n if (this.config.saveCommittedInterval) {\n this.config.saveCommittedInterval(key);\n }\n }\n }\n\n /**\n * Main commitment generation loop (runs every cronIntervalMs)\n * Equivalent to Java's CommitmentGenerationService.generateCommitment()\n */\n private async generateCommitments(): Promise<void> {\n try {\n const timestamp = new Date().toISOString();\n console.log(`\\n🔄 [${timestamp}] Starting commitment generation task...`);\n\n // 1. Prune failed transactions\n this.pruneFailedTxs();\n\n // 2. Process active subscriptions\n await this.processActiveSubscriptions();\n\n const endTimestamp = new Date().toISOString();\n console.log(`✓ [${endTimestamp}] Finished commitment generation task.\\n`);\n } catch (error) {\n console.error('❌ Error in commitment generation:', error);\n this.emit('error', error);\n }\n }\n\n /**\n * Process all active subscriptions\n */\n private async processActiveSubscriptions(): Promise<void> {\n // Get blockchain timestamp instead of local system time\n const latestBlock = await this.provider.getBlock('latest');\n if (!latestBlock) {\n console.warn(' Could not fetch latest block, skipping this cycle');\n return;\n }\n const currentBlockTime = latestBlock.timestamp;\n\n if (this.subscriptions.size === 0) {\n console.log(' No subscriptions to process');\n return;\n }\n\n console.log(` Processing ${this.subscriptions.size} subscription(s)...`);\n\n for (const [subId, sub] of this.subscriptions.entries()) {\n let currentInterval: bigint = 0n;\n try {\n // Validate intervalSeconds to prevent division by zero\n if (sub.intervalSeconds <= 0n) {\n console.warn(` Skipping subscription ${subId}: invalid intervalSeconds (${sub.intervalSeconds})`);\n this.untrackSubscription(sub.subscriptionId);\n continue;\n }\n\n // Get current interval from blockchain (Router contract)\n // This ensures we prepare intervals in the correct sequence\n try {\n currentInterval = BigInt(await this.router.getComputeSubscriptionInterval(sub.subscriptionId));\n } catch (error) {\n console.warn(` Could not get interval from router for subscription ${subId}:`, (error as Error).message);\n // Fall back to local calculation as last resort\n const intervalsSinceActive = BigInt(currentBlockTime) - sub.activeAt;\n currentInterval = (intervalsSinceActive / sub.intervalSeconds) + 1n;\n }\n\n console.log(` Subscription ${subId}: currentInterval=${currentInterval}, maxExecutions=${sub.maxExecutions}, activeAt=${sub.activeAt}`);\n\n // Check if subscription should process\n if (!this.shouldProcess(sub, currentBlockTime)) {\n continue;\n }\n\n // Check if we've already committed this interval\n const commitmentKey = `${subId}:${currentInterval}`;\n if (this.committedIntervals.has(commitmentKey)) {\n continue;\n }\n\n // Check if there's already a commitment on-chain\n const hasCommitment = await this.hasRequestCommitments(sub.subscriptionId, currentInterval);\n\n if (hasCommitment) {\n this.addCommittedInterval(commitmentKey);\n console.log(` Subscription ${subId} interval ${currentInterval} already committed`);\n continue;\n }\n\n // Generate commitment (prepare next interval)\n await this.prepareNextInterval(sub, currentInterval);\n } catch (error) {\n const errorMessage = (error as Error).message;\n console.error(` Error processing subscription ${subId}:`, error);\n\n // Check if error is in exception chain (like Java's containsErrorInChain)\n const containsError = (ex: Error, text: string): boolean => {\n let current: Error | undefined = ex;\n while (current) {\n if (current.message?.includes(text)) return true;\n current = (current as any).cause;\n }\n return false;\n };\n\n // If overflow/underflow error, interval likely already executed\n if (containsError(error as Error, 'Panic due to OVERFLOW') ||\n containsError(error as Error, 'arithmetic underflow or overflow')) {\n console.log(` Interval ${currentInterval} for subscription ${subId} appears to be already executed (overflow), marking as committed`);\n const commitmentKey = `${subId}:${currentInterval}`;\n this.addCommittedInterval(commitmentKey);\n sub.currentInterval = currentInterval + 1n;\n }\n // NoNextInterval error (0x3cdc51d3) - client hasn't triggered interval 1 yet\n // For scheduled subscriptions, interval 1 is triggered by the client, not the scheduler\n // Keep the subscription tracked and wait for the client to trigger interval 1\n else if (containsError(error as Error, '0x3cdc51d3') ||\n containsError(error as Error, 'NoNextInterval')) {\n console.log(` Subscription ${subId}: waiting for client to trigger interval 1 (NoNextInterval)`);\n // Don't untrack - just wait for the client to trigger interval 1\n // Once interval 1 is executed, we can prepare interval 2\n }\n // If execution reverted or simulation failed, likely subscription was cancelled\n else if (containsError(error as Error, 'execution reverted') ||\n containsError(error as Error, 'Transaction simulation failed')) {\n console.log(` Subscription ${subId} appears to be cancelled or invalid, untracking...`);\n this.untrackSubscription(sub.subscriptionId);\n }\n }\n }\n }\n\n /**\n * Check if subscription should be processed\n */\n private shouldProcess(sub: SubscriptionState, currentBlockTime: number): boolean {\n const subId = sub.subscriptionId.toString();\n\n // Not active yet\n if (BigInt(currentBlockTime) < sub.activeAt) {\n console.log(` Skip: not active yet (currentTime=${currentBlockTime}, activeAt=${sub.activeAt})`);\n return false;\n }\n\n // Calculate current interval\n const intervalsSinceActive = BigInt(currentBlockTime) - sub.activeAt;\n const currentInterval = (intervalsSinceActive / sub.intervalSeconds) + 1n;\n\n // Note: We don't skip interval 1 unconditionally anymore.\n // If triggerFirstExecution was called, hasRequestCommitments will catch it.\n // If agent crashed before triggerFirstExecution completed, we need to prepare it.\n\n // Untrack if subscription is completed (past last interval)\n if (sub.maxExecutions > 0n && currentInterval > sub.maxExecutions) {\n console.log(` Subscription ${subId} completed (interval ${currentInterval} > maxExecutions ${sub.maxExecutions}), untracking...`);\n this.untrackSubscription(sub.subscriptionId);\n return false;\n }\n\n // Has pending transaction\n const runKey = `${sub.subscriptionId}:${currentInterval}`;\n if (this.pendingTxs.has(runKey)) {\n console.log(` Skip: pending transaction for interval ${currentInterval}`);\n return false;\n }\n\n // Exceeded max retry attempts\n if (sub.txAttempts >= this.config.maxRetryAttempts) {\n console.log(` Skip: max retry attempts reached (${sub.txAttempts}/${this.config.maxRetryAttempts})`);\n return false;\n }\n\n return true;\n }\n\n /**\n * Check if interval already has commitments on-chain\n */\n private async hasRequestCommitments(subscriptionId: bigint, interval: bigint): Promise<boolean> {\n try {\n const redundancy = await this.coordinator.redundancyCount(\n this.getRequestId(subscriptionId, interval)\n );\n return redundancy > 0;\n } catch (error) {\n console.error('Error checking commitments:', error);\n return false;\n }\n }\n\n /**\n * Prepare next interval by calling coordinator contract\n * Equivalent to Java's CoordinatorService.prepareNextInterval()\n */\n private async prepareNextInterval(sub: SubscriptionState, interval: bigint): Promise<void> {\n const runKey = `${sub.subscriptionId}:${interval}`;\n\n try {\n console.log(` Preparing interval ${interval} for subscription ${sub.subscriptionId}...`);\n\n // Re-verify interval is still current before sending transaction\n // This prevents NotReadyForNextInterval errors due to timing race conditions\n const currentIntervalNow = BigInt(await this.router.getComputeSubscriptionInterval(sub.subscriptionId));\n\n if (currentIntervalNow !== interval && currentIntervalNow !== interval - 1n) {\n console.log(` ⚠️ Interval changed: expected ${interval}, blockchain is at ${currentIntervalNow}. Skipping.`);\n return;\n }\n\n // Send actual transaction to coordinator contract\n const tx = await this.coordinator.prepareNextInterval(\n sub.subscriptionId,\n interval,\n this.agentWallet\n );\n\n // Track pending transaction\n this.pendingTxs.set(runKey, tx.hash);\n sub.pendingTx = tx.hash;\n\n console.log(` 📤 Transaction sent: ${tx.hash}`);\n\n // Wait for transaction confirmation\n const receipt = await tx.wait();\n\n if (receipt.status === 1) {\n console.log(\n ` ✓ Interval ${interval} prepared successfully (block ${receipt.blockNumber})`\n );\n\n // Mark as committed\n const commitmentKey = `${sub.subscriptionId}:${interval}`;\n this.addCommittedInterval(commitmentKey);\n\n // Update subscription state\n sub.currentInterval = interval;\n sub.lastProcessedAt = Date.now();\n sub.txAttempts = 0;\n sub.pendingTx = undefined;\n this.pendingTxs.delete(runKey);\n\n // Parse RequestStarted event from receipt logs\n // This ensures compute is triggered even if WebSocket misses the event\n const requestStartedEvent = this.parseRequestStartedFromReceipt(receipt, sub);\n\n // Calculate gas cost\n const gasUsed = receipt.gasUsed;\n const gasPrice = receipt.gasPrice ?? tx.gasPrice ?? 0n;\n const gasCost = gasUsed * gasPrice;\n\n this.emit('commitment:success', {\n subscriptionId: sub.subscriptionId,\n interval,\n txHash: tx.hash,\n blockNumber: receipt.blockNumber,\n gasUsed: gasUsed.toString(),\n gasPrice: gasPrice.toString(),\n gasCost: gasCost.toString(),\n requestStartedEvent, // Include parsed event for immediate processing\n });\n } else {\n throw new Error(`Transaction failed with status ${receipt.status}`);\n }\n } catch (error) {\n console.error(` Failed to prepare interval for ${runKey}:`, error);\n\n // Clean up pending state\n sub.pendingTx = undefined;\n this.pendingTxs.delete(runKey);\n\n // Check if this is a NoNextInterval error (client hasn't triggered interval 1 yet)\n const errorMessage = (error as Error).message || '';\n const isNoNextIntervalError = errorMessage.includes('0x3cdc51d3') ||\n errorMessage.includes('NoNextInterval');\n\n if (isNoNextIntervalError) {\n // Don't increment retry attempts for NoNextInterval\n // This is expected for scheduled subscriptions where interval 1 is client-triggered\n console.log(` Subscription ${sub.subscriptionId}: NoNextInterval - waiting for client to trigger interval 1`);\n sub.txAttempts = 0; // Reset retry counter\n return;\n }\n\n // Increment retry attempts for other errors\n sub.txAttempts++;\n\n if (sub.txAttempts >= this.config.maxRetryAttempts) {\n console.log(` Max retry attempts reached for ${runKey}`);\n this.emit('commitment:failed', {\n subscriptionId: sub.subscriptionId,\n interval,\n error,\n });\n }\n }\n }\n\n /**\n * Prune transactions that have failed\n */\n private pruneFailedTxs(): void {\n // Remove old pending transactions (older than 5 minutes)\n const fiveMinutesAgo = Date.now() - 5 * 60 * 1000;\n\n for (const [subId, sub] of this.subscriptions.entries()) {\n if (sub.lastProcessedAt < fiveMinutesAgo && sub.pendingTx) {\n console.log(` Pruning stale transaction for subscription ${subId}`);\n sub.pendingTx = undefined;\n sub.txAttempts = 0;\n }\n }\n }\n\n /**\n * Sync subscriptions (placeholder for blockchain event listening)\n */\n /**\n * Sync subscriptions from blockchain\n * Reads subscriptions in batches and tracks active ones\n */\n private async syncSubscriptions(): Promise<void> {\n if (!this.batchReader) {\n // BatchReader not configured, skip sync\n this.emit('sync:tick');\n return;\n }\n\n try {\n // Query max subscription ID from router\n if (this.maxSubscriptionId === undefined) {\n this.maxSubscriptionId = await this.router.getLastSubscriptionId();\n console.log(`📊 Total subscriptions in registry: ${this.maxSubscriptionId}`);\n }\n\n // Stop syncing if we've reached the end, but re-check for new subscriptions\n if (this.lastSyncedId >= this.maxSubscriptionId!) {\n // Re-check maxSubscriptionId to detect new subscriptions\n const latestMaxId = await this.router.getLastSubscriptionId();\n if (latestMaxId > this.maxSubscriptionId!) {\n console.log(`📊 Found new subscriptions: ${latestMaxId} (was ${this.maxSubscriptionId})`);\n this.maxSubscriptionId = latestMaxId;\n // Continue syncing with updated maxSubscriptionId\n } else {\n this.emit('sync:tick');\n return;\n }\n }\n\n const maxSubId = this.maxSubscriptionId!; // Use latest maxSubscriptionId\n\n const currentBlock = await this.provider.getBlockNumber();\n const block = await this.provider.getBlock(currentBlock);\n const blockTime = block?.timestamp || Math.floor(Date.now() / 1000);\n\n // Read subscriptions in batches\n const BATCH_SIZE = 100n;\n const startId = this.lastSyncedId + 1n;\n const endId = startId + BATCH_SIZE - 1n > maxSubId\n ? maxSubId\n : startId + BATCH_SIZE - 1n;\n\n const subscriptions = await this.batchReader.getSubscriptions(startId, endId, currentBlock);\n\n if (subscriptions.length === 0) {\n // No new subscriptions\n this.emit('sync:tick');\n return;\n }\n\n // Track active subscriptions (only containers this agent can run)\n let newSubscriptions = 0;\n let skippedContainers = 0;\n let skippedInactive = 0;\n let skippedEmpty = 0;\n let skippedOnDemand = 0;\n\n console.log(` Syncing ${subscriptions.length} subscriptions (blockTime: ${blockTime})`);\n\n for (let i = 0; i < subscriptions.length; i++) {\n const sub = subscriptions[i];\n const subscriptionId = startId + BigInt(i);\n\n // Skip cancelled/deleted subscriptions (containerId = 0x0000...0)\n if (sub.containerId === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n skippedEmpty++;\n continue;\n }\n\n // Skip if not active\n if (!this.isSubscriptionActive(sub, blockTime)) {\n // Debug log for non-empty subscriptions that are inactive\n if (sub.intervalSeconds > 0) {\n console.log(` Sub ${subscriptionId}: inactive (activeAt=${sub.activeAt}, now=${blockTime})`);\n }\n skippedInactive++;\n continue;\n }\n\n // Skip if agent cannot run this container (silently filter)\n if (this.getContainer && !this.getContainer(sub.containerId)) {\n skippedContainers++;\n continue;\n }\n\n // Track subscription (returns true if actually tracked)\n if (this.trackSubscriptionFromConfig(sub, subscriptionId)) {\n newSubscriptions++;\n } else {\n // Track on-demand subscriptions that were skipped\n if (sub.intervalSeconds <= 0) {\n skippedOnDemand++;\n }\n }\n }\n\n console.log(` Sync stats: ${newSubscriptions} tracked, ${skippedEmpty} empty, ${skippedInactive} inactive, ${skippedContainers} unsupported containers, ${skippedOnDemand} on-demand`);\n\n // Update last synced ID\n this.lastSyncedId = endId;\n\n // Log results only if there are new subscriptions\n if (newSubscriptions > 0) {\n console.log(`✓ Synced ${newSubscriptions} active subscriptions (ID ${startId} - ${endId})`);\n }\n\n // Log completion if we've reached the end\n if (this.lastSyncedId >= maxSubId) {\n console.log(`✓ Sync completed - processed all ${maxSubId} subscriptions`);\n }\n\n this.emit('sync:completed', {\n subscriptions: this.subscriptions.size,\n newSubscriptions,\n });\n } catch (error) {\n console.error('Error syncing subscriptions:', error);\n this.emit('sync:error', error);\n }\n }\n\n /**\n * Check if subscription is currently active\n */\n private isSubscriptionActive(sub: ComputeSubscription, currentBlockTime: number): boolean {\n // Not started yet\n if (currentBlockTime < sub.activeAt) {\n return false;\n }\n\n // Check if max executions reached\n // Note: currentInterval is 0-based here ((elapsed / intervalSeconds) gives 0 for first interval)\n // But maxExecutions is count, so we need > not >= (if currentInterval is 4 and max is 5, still active)\n if (sub.maxExecutions > 0 && sub.intervalSeconds > 0) {\n const elapsed = currentBlockTime - sub.activeAt;\n const currentInterval = Math.floor(elapsed / sub.intervalSeconds);\n // If currentInterval >= maxExecutions, all intervals have passed\n // e.g., maxExecutions=5, intervalSeconds=180, after 900s currentInterval=5 -> all done\n if (currentInterval >= sub.maxExecutions) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Track subscription from ComputeSubscription config\n * Returns true if subscription was tracked, false if skipped\n */\n private trackSubscriptionFromConfig(sub: ComputeSubscription, subscriptionId: bigint): boolean {\n // Skip empty/deleted subscriptions (all fields are 0)\n if (sub.containerId === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n // This is an empty slot (never created or deleted)\n return false;\n }\n\n // Skip if client address is zero (another indicator of empty subscription)\n if (sub.client === '0x0000000000000000000000000000000000000000') {\n return false;\n }\n\n const key = subscriptionId.toString();\n\n if (this.subscriptions.has(key)) {\n // Already tracked\n return false;\n }\n\n // Validate subscription data - intervalSeconds=0 means on-demand (not scheduled)\n if (sub.intervalSeconds <= 0) {\n // Silently skip on-demand subscriptions (not an error)\n return false;\n }\n\n // Log subscription details\n try {\n const { ethers } = require('ethers');\n const containerIdStr = ethers.decodeBytes32String(sub.containerId);\n console.log(` ✓ Tracking subscription: ${containerIdStr}`);\n console.log(` Client: ${sub.client}`);\n console.log(` Interval: ${sub.intervalSeconds}s`);\n console.log(` Max Executions: ${sub.maxExecutions}`);\n } catch (e) {\n console.log(` ✓ Tracking subscription: ${sub.containerId}`);\n }\n\n // Calculate current interval\n // Note: Contract uses 1-based indexing: ((timestamp - activeAt) / intervalSeconds) + 1\n const now = Math.floor(Date.now() / 1000);\n const elapsed = now - sub.activeAt;\n const currentInterval =\n sub.intervalSeconds > 0 ? Math.max(1, Math.floor(elapsed / sub.intervalSeconds) + 1) : 1;\n\n this.subscriptions.set(key, {\n subscriptionId: subscriptionId,\n routeId: sub.routeId,\n containerId: sub.containerId,\n client: sub.client,\n wallet: sub.wallet,\n activeAt: BigInt(sub.activeAt),\n intervalSeconds: BigInt(sub.intervalSeconds),\n maxExecutions: Number.isFinite(sub.maxExecutions) ? BigInt(sub.maxExecutions) : 0n,\n redundancy: sub.redundancy,\n verifier: sub.verifier || undefined,\n currentInterval: BigInt(currentInterval),\n lastProcessedAt: Date.now(),\n txAttempts: 0,\n });\n\n return true;\n }\n\n /**\n * Get request ID (hash of subscription ID and interval)\n */\n private getRequestId(subscriptionId: bigint, interval: bigint): string {\n // This should match the on-chain calculation\n const ethers = require('ethers');\n const abiCoder = ethers.AbiCoder.defaultAbiCoder();\n return ethers.keccak256(abiCoder.encode(['uint256', 'uint256'], [subscriptionId, interval]));\n }\n\n /**\n * Get scheduler statistics\n */\n getStats(): {\n totalSubscriptions: number;\n activeSubscriptions: number;\n committedIntervals: number;\n pendingTransactions: number;\n } {\n const now = Math.floor(Date.now() / 1000);\n const activeCount = Array.from(this.subscriptions.values()).filter((sub) => {\n // Must have started\n if (BigInt(now) < sub.activeAt) {\n return false;\n }\n\n // Check if completed (all maxExecutions done)\n if (sub.maxExecutions > 0n) {\n const elapsed = BigInt(now) - sub.activeAt;\n const currentInterval = elapsed / sub.intervalSeconds;\n\n // Subscription is completed if we've passed all intervals\n if (currentInterval >= sub.maxExecutions) {\n return false;\n }\n }\n\n return true;\n }).length;\n\n return {\n totalSubscriptions: this.subscriptions.size,\n activeSubscriptions: activeCount,\n committedIntervals: this.committedIntervals.size,\n pendingTransactions: this.pendingTxs.size,\n };\n }\n\n /**\n * Get all tracked subscriptions\n */\n getSubscriptions(): SubscriptionState[] {\n return Array.from(this.subscriptions.values());\n }\n\n /**\n * Parse RequestStarted event from transaction receipt\n * This allows the agent to process the event immediately without waiting for WebSocket\n */\n private parseRequestStartedFromReceipt(\n receipt: TransactionReceipt,\n sub: SubscriptionState\n ): RequestStartedEvent | null {\n try {\n // Find the RequestStarted log in the receipt\n for (const log of receipt.logs) {\n try {\n const parsed = this.coordinator.interface.parseLog({\n topics: log.topics as string[],\n data: log.data,\n });\n\n if (parsed && parsed.name === 'RequestStarted') {\n const commitment = parsed.args.commitment;\n return {\n requestId: parsed.args.requestId,\n subscriptionId: parsed.args.subscriptionId,\n containerId: parsed.args.containerId,\n interval: Number(commitment.interval),\n redundancy: Number(commitment.redundancy),\n useDeliveryInbox: commitment.useDeliveryInbox,\n feeAmount: commitment.feeAmount,\n feeToken: commitment.feeToken,\n verifier: commitment.verifier,\n coordinator: commitment.coordinator,\n walletAddress: commitment.walletAddress,\n blockNumber: receipt.blockNumber,\n };\n }\n } catch {\n // Not a RequestStarted log, continue\n }\n }\n } catch (error) {\n console.warn(' ⚠️ Could not parse RequestStarted event from receipt:', error);\n }\n return null;\n }\n}\n","import { ethers } from 'ethers';\nimport type { Commitment } from '../types';\n\nexport class CommitmentUtils {\n /**\n * Calculate commitment hash\n * Matches the keccak256(abi.encode(commitment)) in Solidity\n */\n static hash(commitment: Commitment): string {\n const encoded = ethers.AbiCoder.defaultAbiCoder().encode(\n [\n 'bytes32', // requestId\n 'uint64', // subscriptionId\n 'bytes32', // containerId\n 'uint32', // interval\n 'bool', // useDeliveryInbox\n 'uint16', // redundancy\n 'address', // walletAddress\n 'uint256', // feeAmount\n 'address', // feeToken\n 'address', // verifier\n 'address', // coordinator\n ],\n [\n commitment.requestId,\n commitment.subscriptionId,\n commitment.containerId,\n commitment.interval,\n commitment.useDeliveryInbox,\n commitment.redundancy,\n commitment.walletAddress,\n commitment.feeAmount,\n commitment.feeToken,\n commitment.verifier,\n commitment.coordinator,\n ]\n );\n\n return ethers.keccak256(encoded);\n }\n\n /**\n * Verify commitment hash matches expected value\n */\n static verify(commitment: Commitment, expectedHash: string): boolean {\n const actualHash = this.hash(commitment);\n return actualHash === expectedHash;\n }\n\n /**\n * Encode commitment data for reportComputeResult\n * Returns ABI-encoded commitment struct\n */\n static encode(commitment: Commitment): string {\n return ethers.AbiCoder.defaultAbiCoder().encode(\n [\n 'bytes32', // requestId\n 'uint64', // subscriptionId\n 'bytes32', // containerId\n 'uint32', // interval\n 'bool', // useDeliveryInbox\n 'uint16', // redundancy\n 'address', // walletAddress\n 'uint256', // feeAmount\n 'address', // feeToken\n 'address', // verifier\n 'address', // coordinator\n ],\n [\n commitment.requestId,\n commitment.subscriptionId,\n commitment.containerId,\n commitment.interval,\n commitment.useDeliveryInbox,\n commitment.redundancy,\n commitment.walletAddress,\n commitment.feeAmount,\n commitment.feeToken,\n commitment.verifier,\n commitment.coordinator,\n ]\n );\n }\n\n /**\n * Create Commitment from RequestStartedEvent\n */\n static fromEvent(event: any, walletAddress: string): Commitment {\n return {\n requestId: event.requestId,\n subscriptionId: event.subscriptionId,\n containerId: event.containerId,\n interval: event.interval,\n redundancy: event.redundancy,\n useDeliveryInbox: event.useDeliveryInbox || false,\n feeToken: event.feeToken,\n feeAmount: event.feeAmount,\n walletAddress: walletAddress, // Client wallet from subscription\n verifier: event.verifier || ethers.ZeroAddress,\n coordinator: event.coordinator,\n };\n }\n}\n","import { readFileSync } from 'fs';\nimport { ethers } from 'ethers';\nimport type { NoosphereAgentConfig, ContainerMetadata } from '../types';\n\nexport class ConfigLoader {\n /**\n * Load agent configuration from JSON file\n */\n static loadFromFile(configPath: string): NoosphereAgentConfig {\n try {\n const configData = readFileSync(configPath, 'utf-8');\n const config = JSON.parse(configData) as NoosphereAgentConfig;\n\n // Validate required fields\n if (!config.chain || !config.chain.enabled) {\n throw new Error('Chain configuration is required and must be enabled');\n }\n\n if (!config.chain.rpcUrl) {\n throw new Error('Chain RPC URL is required');\n }\n\n if (!config.chain.routerAddress) {\n throw new Error('Router address is required');\n }\n\n if (!config.containers || config.containers.length === 0) {\n console.warn('⚠️ No containers configured in config file');\n }\n\n return config;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n throw new Error(`Config file not found: ${configPath}`);\n }\n throw error;\n }\n }\n\n /**\n * Convert ContainerConfig to ContainerMetadata format\n */\n static containerConfigToMetadata(\n containerConfig: NoosphereAgentConfig['containers'][0]\n ): ContainerMetadata {\n // Parse image name and tag\n const [imageName, tag] = containerConfig.image.includes(':')\n ? containerConfig.image.split(':')\n : [containerConfig.image, 'latest'];\n\n // Extract container name from image (last part after /)\n const name = imageName.split('/').pop() || containerConfig.id;\n\n // Convert acceptedPayments to payments format\n let payments: ContainerMetadata['payments'] | undefined;\n if (containerConfig.acceptedPayments) {\n const basePrice = Object.values(containerConfig.acceptedPayments)[0]?.toString() || '0';\n payments = {\n basePrice,\n unit: 'wei',\n per: 'execution',\n };\n }\n\n return {\n id: containerConfig.id,\n name,\n image: imageName,\n tag,\n port: containerConfig.port,\n env: containerConfig.env,\n verified: !!containerConfig.verifierAddress,\n payments,\n };\n }\n\n /**\n * Get all containers from config as ContainerMetadata array\n */\n static getContainersFromConfig(config: NoosphereAgentConfig): Map<string, ContainerMetadata> {\n const containersMap = new Map<string, ContainerMetadata>();\n\n for (const containerConfig of config.containers) {\n const metadata = this.containerConfigToMetadata(containerConfig);\n // Hash the container ID the same way as the smart contract does:\n // keccak256(abi.encode(containerId))\n const containerIdHash = ethers.keccak256(\n ethers.AbiCoder.defaultAbiCoder().encode(['string'], [containerConfig.id])\n );\n containersMap.set(containerIdHash, metadata);\n }\n\n return containersMap;\n }\n\n /**\n * Get container config by ID\n */\n static getContainerConfig(\n config: NoosphereAgentConfig,\n containerId: string\n ): NoosphereAgentConfig['containers'][0] | undefined {\n return config.containers.find((c) => c.id === containerId);\n }\n}\n","export interface Commitment {\n requestId: string;\n subscriptionId: bigint;\n containerId: string;\n interval: number;\n redundancy: number;\n useDeliveryInbox: boolean;\n feeToken: string;\n feeAmount: bigint;\n walletAddress: string;\n verifier: string;\n coordinator: string;\n}\n\nexport interface Payment {\n recipient: string;\n feeToken: string;\n feeAmount: bigint;\n}\n\nexport interface ProofVerificationRequest {\n subscriptionId: bigint;\n interval: number;\n submitterAddress: string;\n escrowedAmount: bigint;\n}\n\nexport interface RequestStartedEvent {\n requestId: string;\n subscriptionId: bigint;\n containerId: string;\n interval: number;\n redundancy: number;\n useDeliveryInbox: boolean;\n feeAmount: bigint;\n feeToken: string;\n verifier: string;\n coordinator: string;\n walletAddress: string;\n blockNumber: number;\n}\n\nexport interface ComputeSubscription {\n owner: string;\n wallet: string;\n containerId: string;\n intervalSeconds: number;\n maxExecutions: number;\n redundancy: number;\n feeToken: string;\n feeAmount: bigint;\n verifier: string;\n routeId: string;\n activeAt: number;\n useDeliveryInbox: boolean;\n}\n\nexport interface AgentConfig {\n rpcUrl: string;\n wsRpcUrl?: string;\n privateKey?: string; // Optional - use keystore initialization instead\n routerAddress: string;\n coordinatorAddress: string;\n deploymentBlock?: number;\n pollingInterval?: number;\n}\n\n// Extended config for full agent configuration (matches Java agent config.json)\nexport interface NoosphereAgentConfig {\n forwardStats?: boolean;\n manageContainers?: boolean;\n startupWait?: number;\n agent?: {\n name: string;\n apiKey?: string;\n email?: string;\n };\n server?: {\n port: number;\n rateLimit?: {\n numRequests: number;\n period: number;\n };\n };\n hub?: {\n register: boolean;\n url: string;\n keepAlive?: {\n enabled: boolean;\n intervalMs: number;\n batchSize?: number;\n };\n };\n chain: {\n enabled: boolean;\n rpcUrl: string;\n wsRpcUrl?: string;\n trailHeadBlocks?: number;\n routerAddress: string;\n coordinatorAddress?: string;\n deploymentBlock?: number;\n processingInterval?: number;\n wallet: {\n maxGasLimit?: number;\n paymentAddress?: string;\n allowedSimErrors?: string[];\n keystore?: {\n path: string;\n password: string;\n keys?: {\n eth?: string;\n };\n };\n };\n snapshotSync?: {\n sleep?: number;\n batchSize?: number;\n startingSubId?: number;\n syncPeriod?: number;\n };\n connection?: {\n timeout?: number;\n readTimeout?: number;\n writeTimeout?: number;\n };\n gasConfig?: {\n priceMultiplier?: number;\n limitMultiplier?: number;\n };\n };\n docker?: {\n username?: string;\n password?: string;\n };\n containers: ContainerConfig[];\n}\n\nexport interface ContainerConfig {\n id: string;\n image: string;\n port?: string;\n env?: Record<string, string>;\n volumes?: string[];\n verifierAddress?: string;\n acceptedPayments?: Record<string, number>;\n}\n\nexport interface ContainerMetadata {\n id: string;\n name: string;\n image: string;\n tag?: string;\n port?: string;\n env?: Record<string, string>;\n requirements?: {\n memory?: string;\n cpu?: number;\n gpu?: boolean;\n };\n payments?: {\n basePrice: string;\n unit: string;\n per: string;\n };\n verified?: boolean;\n}\n\nexport interface VerifierMetadata {\n address: string;\n name: string;\n image: string;\n tag?: string;\n}\n\nexport enum FulfillResult {\n FULFILLED = 0,\n INVALID_REQUEST_ID = 1,\n INVALID_COMMITMENT = 2,\n SUBSCRIPTION_BALANCE_INVARIANT_VIOLATION = 3,\n INSUFFICIENT_SUBSCRIPTION_BALANCE = 4,\n COST_EXCEEDS_COMMITMENT = 5,\n}\n\n/**\n * Event emitted when scheduler successfully prepares next interval\n */\nexport interface CommitmentSuccessEvent {\n subscriptionId: bigint;\n interval: bigint;\n txHash: string;\n blockNumber: number;\n gasUsed: string;\n gasPrice: string;\n gasCost: string;\n requestStartedEvent?: RequestStartedEvent;\n}\n","import { ethers } from 'ethers';\n\nexport class RequestIdUtils {\n /**\n * Pack subscriptionId and interval into requestId\n * Matches Solidity: keccak256(abi.encodePacked(subscriptionId, interval))\n */\n static pack(subscriptionId: bigint, interval: number): string {\n // encodePacked for uint64 and uint32\n const subscriptionIdBytes = ethers.zeroPadValue(ethers.toBeHex(subscriptionId), 8);\n const intervalBytes = ethers.zeroPadValue(ethers.toBeHex(interval), 4);\n\n const packed = ethers.concat([subscriptionIdBytes, intervalBytes]);\n return ethers.keccak256(packed);\n }\n\n /**\n * Unpack requestId into subscriptionId and interval (if stored separately)\n * Note: This is not possible from the hash alone - only for informational purposes\n * In practice, subscriptionId and interval are stored in events\n */\n static format(requestId: string, subscriptionId: bigint, interval: number): string {\n return `Request(id=${requestId.slice(0, 10)}..., sub=${subscriptionId}, interval=${interval})`;\n }\n}\n"],"mappings":"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","names":["Docker","axios","path","fs","err","import_ethers","import_events","ethers","import_contracts","import_ethers","import_ethers","FulfillResult","import_ethers","import_crypto","import_registry"]}
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/delayed-stream/lib/delayed_stream.js","../../../node_modules/combined-stream/lib/combined_stream.js","../../../node_modules/mime-db/db.json","../../../node_modules/mime-db/index.js","../../../node_modules/mime-types/index.js","../../../node_modules/asynckit/lib/defer.js","../../../node_modules/asynckit/lib/async.js","../../../node_modules/asynckit/lib/abort.js","../../../node_modules/asynckit/lib/iterate.js","../../../node_modules/asynckit/lib/state.js","../../../node_modules/asynckit/lib/terminator.js","../../../node_modules/asynckit/parallel.js","../../../node_modules/asynckit/serialOrdered.js","../../../node_modules/asynckit/serial.js","../../../node_modules/asynckit/index.js","../../../node_modules/es-object-atoms/index.js","../../../node_modules/es-errors/index.js","../../../node_modules/es-errors/eval.js","../../../node_modules/es-errors/range.js","../../../node_modules/es-errors/ref.js","../../../node_modules/es-errors/syntax.js","../../../node_modules/es-errors/type.js","../../../node_modules/es-errors/uri.js","../../../node_modules/math-intrinsics/abs.js","../../../node_modules/math-intrinsics/floor.js","../../../node_modules/math-intrinsics/max.js","../../../node_modules/math-intrinsics/min.js","../../../node_modules/math-intrinsics/pow.js","../../../node_modules/math-intrinsics/round.js","../../../node_modules/math-intrinsics/isNaN.js","../../../node_modules/math-intrinsics/sign.js","../../../node_modules/gopd/gOPD.js","../../../node_modules/gopd/index.js","../../../node_modules/es-define-property/index.js","../../../node_modules/has-symbols/shams.js","../../../node_modules/has-symbols/index.js","../../../node_modules/get-proto/Reflect.getPrototypeOf.js","../../../node_modules/get-proto/Object.getPrototypeOf.js","../../../node_modules/function-bind/implementation.js","../../../node_modules/function-bind/index.js","../../../node_modules/call-bind-apply-helpers/functionCall.js","../../../node_modules/call-bind-apply-helpers/functionApply.js","../../../node_modules/call-bind-apply-helpers/reflectApply.js","../../../node_modules/call-bind-apply-helpers/actualApply.js","../../../node_modules/call-bind-apply-helpers/index.js","../../../node_modules/dunder-proto/get.js","../../../node_modules/get-proto/index.js","../../../node_modules/hasown/index.js","../../../node_modules/get-intrinsic/index.js","../../../node_modules/has-tostringtag/shams.js","../../../node_modules/es-set-tostringtag/index.js","../../../node_modules/form-data/lib/populate.js","../../../node_modules/form-data/lib/form_data.js","../src/index.ts","../src/EventMonitor.ts","../src/ContainerManager.ts","../src/NoosphereAgent.ts","../src/SchedulerService.ts","../src/utils/CommitmentUtils.ts","../src/PayloadResolver.ts","../src/storage/IpfsStorage.ts","../src/storage/DataUriStorage.ts","../src/storage/HttpStorage.ts","../src/storage/S3Storage.ts","../src/utils/ConfigLoader.ts","../src/types/index.ts","../src/utils/RequestIdUtils.ts"],"sourcesContent":["var Stream = require('stream').Stream;\nvar util = require('util');\n\nmodule.exports = DelayedStream;\nfunction DelayedStream() {\n this.source = null;\n this.dataSize = 0;\n this.maxDataSize = 1024 * 1024;\n this.pauseStream = true;\n\n this._maxDataSizeExceeded = false;\n this._released = false;\n this._bufferedEvents = [];\n}\nutil.inherits(DelayedStream, Stream);\n\nDelayedStream.create = function(source, options) {\n var delayedStream = new this();\n\n options = options || {};\n for (var option in options) {\n delayedStream[option] = options[option];\n }\n\n delayedStream.source = source;\n\n var realEmit = source.emit;\n source.emit = function() {\n delayedStream._handleEmit(arguments);\n return realEmit.apply(source, arguments);\n };\n\n source.on('error', function() {});\n if (delayedStream.pauseStream) {\n source.pause();\n }\n\n return delayedStream;\n};\n\nObject.defineProperty(DelayedStream.prototype, 'readable', {\n configurable: true,\n enumerable: true,\n get: function() {\n return this.source.readable;\n }\n});\n\nDelayedStream.prototype.setEncoding = function() {\n return this.source.setEncoding.apply(this.source, arguments);\n};\n\nDelayedStream.prototype.resume = function() {\n if (!this._released) {\n this.release();\n }\n\n this.source.resume();\n};\n\nDelayedStream.prototype.pause = function() {\n this.source.pause();\n};\n\nDelayedStream.prototype.release = function() {\n this._released = true;\n\n this._bufferedEvents.forEach(function(args) {\n this.emit.apply(this, args);\n }.bind(this));\n this._bufferedEvents = [];\n};\n\nDelayedStream.prototype.pipe = function() {\n var r = Stream.prototype.pipe.apply(this, arguments);\n this.resume();\n return r;\n};\n\nDelayedStream.prototype._handleEmit = function(args) {\n if (this._released) {\n this.emit.apply(this, args);\n return;\n }\n\n if (args[0] === 'data') {\n this.dataSize += args[1].length;\n this._checkIfMaxDataSizeExceeded();\n }\n\n this._bufferedEvents.push(args);\n};\n\nDelayedStream.prototype._checkIfMaxDataSizeExceeded = function() {\n if (this._maxDataSizeExceeded) {\n return;\n }\n\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n this._maxDataSizeExceeded = true;\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.'\n this.emit('error', new Error(message));\n};\n","var util = require('util');\nvar Stream = require('stream').Stream;\nvar DelayedStream = require('delayed-stream');\n\nmodule.exports = CombinedStream;\nfunction CombinedStream() {\n this.writable = false;\n this.readable = true;\n this.dataSize = 0;\n this.maxDataSize = 2 * 1024 * 1024;\n this.pauseStreams = true;\n\n this._released = false;\n this._streams = [];\n this._currentStream = null;\n this._insideLoop = false;\n this._pendingNext = false;\n}\nutil.inherits(CombinedStream, Stream);\n\nCombinedStream.create = function(options) {\n var combinedStream = new this();\n\n options = options || {};\n for (var option in options) {\n combinedStream[option] = options[option];\n }\n\n return combinedStream;\n};\n\nCombinedStream.isStreamLike = function(stream) {\n return (typeof stream !== 'function')\n && (typeof stream !== 'string')\n && (typeof stream !== 'boolean')\n && (typeof stream !== 'number')\n && (!Buffer.isBuffer(stream));\n};\n\nCombinedStream.prototype.append = function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n\n if (isStreamLike) {\n if (!(stream instanceof DelayedStream)) {\n var newStream = DelayedStream.create(stream, {\n maxDataSize: Infinity,\n pauseStream: this.pauseStreams,\n });\n stream.on('data', this._checkDataSize.bind(this));\n stream = newStream;\n }\n\n this._handleErrors(stream);\n\n if (this.pauseStreams) {\n stream.pause();\n }\n }\n\n this._streams.push(stream);\n return this;\n};\n\nCombinedStream.prototype.pipe = function(dest, options) {\n Stream.prototype.pipe.call(this, dest, options);\n this.resume();\n return dest;\n};\n\nCombinedStream.prototype._getNext = function() {\n this._currentStream = null;\n\n if (this._insideLoop) {\n this._pendingNext = true;\n return; // defer call\n }\n\n this._insideLoop = true;\n try {\n do {\n this._pendingNext = false;\n this._realGetNext();\n } while (this._pendingNext);\n } finally {\n this._insideLoop = false;\n }\n};\n\nCombinedStream.prototype._realGetNext = function() {\n var stream = this._streams.shift();\n\n\n if (typeof stream == 'undefined') {\n this.end();\n return;\n }\n\n if (typeof stream !== 'function') {\n this._pipeNext(stream);\n return;\n }\n\n var getStream = stream;\n getStream(function(stream) {\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('data', this._checkDataSize.bind(this));\n this._handleErrors(stream);\n }\n\n this._pipeNext(stream);\n }.bind(this));\n};\n\nCombinedStream.prototype._pipeNext = function(stream) {\n this._currentStream = stream;\n\n var isStreamLike = CombinedStream.isStreamLike(stream);\n if (isStreamLike) {\n stream.on('end', this._getNext.bind(this));\n stream.pipe(this, {end: false});\n return;\n }\n\n var value = stream;\n this.write(value);\n this._getNext();\n};\n\nCombinedStream.prototype._handleErrors = function(stream) {\n var self = this;\n stream.on('error', function(err) {\n self._emitError(err);\n });\n};\n\nCombinedStream.prototype.write = function(data) {\n this.emit('data', data);\n};\n\nCombinedStream.prototype.pause = function() {\n if (!this.pauseStreams) {\n return;\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.pause) == 'function') this._currentStream.pause();\n this.emit('pause');\n};\n\nCombinedStream.prototype.resume = function() {\n if (!this._released) {\n this._released = true;\n this.writable = true;\n this._getNext();\n }\n\n if(this.pauseStreams && this._currentStream && typeof(this._currentStream.resume) == 'function') this._currentStream.resume();\n this.emit('resume');\n};\n\nCombinedStream.prototype.end = function() {\n this._reset();\n this.emit('end');\n};\n\nCombinedStream.prototype.destroy = function() {\n this._reset();\n this.emit('close');\n};\n\nCombinedStream.prototype._reset = function() {\n this.writable = false;\n this._streams = [];\n this._currentStream = null;\n};\n\nCombinedStream.prototype._checkDataSize = function() {\n this._updateDataSize();\n if (this.dataSize <= this.maxDataSize) {\n return;\n }\n\n var message =\n 'DelayedStream#maxDataSize of ' + this.maxDataSize + ' bytes exceeded.';\n this._emitError(new Error(message));\n};\n\nCombinedStream.prototype._updateDataSize = function() {\n this.dataSize = 0;\n\n var self = this;\n this._streams.forEach(function(stream) {\n if (!stream.dataSize) {\n return;\n }\n\n self.dataSize += stream.dataSize;\n });\n\n if (this._currentStream && this._currentStream.dataSize) {\n this.dataSize += this._currentStream.dataSize;\n }\n};\n\nCombinedStream.prototype._emitError = function(err) {\n this._reset();\n this.emit('error', err);\n};\n","{\n \"application/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"application/3gpdash-qoe-report+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/3gpp-ims+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/3gpphalforms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/a2l\": {\n \"source\": \"iana\"\n },\n \"application/ace+cbor\": {\n \"source\": \"iana\"\n },\n \"application/activemessage\": {\n \"source\": \"iana\"\n },\n \"application/activity+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-costmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-directory+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcost+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointcostparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointprop+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-endpointpropparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-error+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-networkmapfilter+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamcontrol+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/alto-updatestreamparams+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/aml\": {\n \"source\": \"iana\"\n },\n \"application/andrew-inset\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez\"]\n },\n \"application/applefile\": {\n \"source\": \"iana\"\n },\n \"application/applixware\": {\n \"source\": \"apache\",\n \"extensions\": [\"aw\"]\n },\n \"application/at+jwt\": {\n \"source\": \"iana\"\n },\n \"application/atf\": {\n \"source\": \"iana\"\n },\n \"application/atfx\": {\n \"source\": \"iana\"\n },\n \"application/atom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atom\"]\n },\n \"application/atomcat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomcat\"]\n },\n \"application/atomdeleted+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomdeleted\"]\n },\n \"application/atomicmail\": {\n \"source\": \"iana\"\n },\n \"application/atomsvc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"atomsvc\"]\n },\n \"application/atsc-dwd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dwd\"]\n },\n \"application/atsc-dynamic-event-message\": {\n \"source\": \"iana\"\n },\n \"application/atsc-held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"held\"]\n },\n \"application/atsc-rdt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/atsc-rsat+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsat\"]\n },\n \"application/atxml\": {\n \"source\": \"iana\"\n },\n \"application/auth-policy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/bacnet-xdd+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/batch-smtp\": {\n \"source\": \"iana\"\n },\n \"application/bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/beep+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/calendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/calendar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xcs\"]\n },\n \"application/call-completion\": {\n \"source\": \"iana\"\n },\n \"application/cals-1840\": {\n \"source\": \"iana\"\n },\n \"application/captive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cbor\": {\n \"source\": \"iana\"\n },\n \"application/cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/cccex\": {\n \"source\": \"iana\"\n },\n \"application/ccmp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ccxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ccxml\"]\n },\n \"application/cdfx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdfx\"]\n },\n \"application/cdmi-capability\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmia\"]\n },\n \"application/cdmi-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmic\"]\n },\n \"application/cdmi-domain\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmid\"]\n },\n \"application/cdmi-object\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmio\"]\n },\n \"application/cdmi-queue\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdmiq\"]\n },\n \"application/cdni\": {\n \"source\": \"iana\"\n },\n \"application/cea\": {\n \"source\": \"iana\"\n },\n \"application/cea-2018+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cellml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cfw\": {\n \"source\": \"iana\"\n },\n \"application/city+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clr\": {\n \"source\": \"iana\"\n },\n \"application/clue+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/clue_info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cms\": {\n \"source\": \"iana\"\n },\n \"application/cnrp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-group+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/coap-payload\": {\n \"source\": \"iana\"\n },\n \"application/commonground\": {\n \"source\": \"iana\"\n },\n \"application/conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cose\": {\n \"source\": \"iana\"\n },\n \"application/cose-key\": {\n \"source\": \"iana\"\n },\n \"application/cose-key-set\": {\n \"source\": \"iana\"\n },\n \"application/cpl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cpl\"]\n },\n \"application/csrattrs\": {\n \"source\": \"iana\"\n },\n \"application/csta+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cstadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/csvm+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/cu-seeme\": {\n \"source\": \"apache\",\n \"extensions\": [\"cu\"]\n },\n \"application/cwt\": {\n \"source\": \"iana\"\n },\n \"application/cybercash\": {\n \"source\": \"iana\"\n },\n \"application/dart\": {\n \"compressible\": true\n },\n \"application/dash+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpd\"]\n },\n \"application/dash-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpp\"]\n },\n \"application/dashdelta\": {\n \"source\": \"iana\"\n },\n \"application/davmount+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"davmount\"]\n },\n \"application/dca-rft\": {\n \"source\": \"iana\"\n },\n \"application/dcd\": {\n \"source\": \"iana\"\n },\n \"application/dec-dx\": {\n \"source\": \"iana\"\n },\n \"application/dialog-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom\": {\n \"source\": \"iana\"\n },\n \"application/dicom+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dicom+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dii\": {\n \"source\": \"iana\"\n },\n \"application/dit\": {\n \"source\": \"iana\"\n },\n \"application/dns\": {\n \"source\": \"iana\"\n },\n \"application/dns+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dns-message\": {\n \"source\": \"iana\"\n },\n \"application/docbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dbk\"]\n },\n \"application/dots+cbor\": {\n \"source\": \"iana\"\n },\n \"application/dskpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/dssc+der\": {\n \"source\": \"iana\",\n \"extensions\": [\"dssc\"]\n },\n \"application/dssc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdssc\"]\n },\n \"application/dvcs\": {\n \"source\": \"iana\"\n },\n \"application/ecmascript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es\",\"ecma\"]\n },\n \"application/edi-consent\": {\n \"source\": \"iana\"\n },\n \"application/edi-x12\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/edifact\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/efi\": {\n \"source\": \"iana\"\n },\n \"application/elm+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/elm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.cap+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/emergencycalldata.comment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.deviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.ecall.msd\": {\n \"source\": \"iana\"\n },\n \"application/emergencycalldata.providerinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.serviceinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.subscriberinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emergencycalldata.veds+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/emma+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emma\"]\n },\n \"application/emotionml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"emotionml\"]\n },\n \"application/encaprtp\": {\n \"source\": \"iana\"\n },\n \"application/epp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/epub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"epub\"]\n },\n \"application/eshop\": {\n \"source\": \"iana\"\n },\n \"application/exi\": {\n \"source\": \"iana\",\n \"extensions\": [\"exi\"]\n },\n \"application/expect-ct-report+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/express\": {\n \"source\": \"iana\",\n \"extensions\": [\"exp\"]\n },\n \"application/fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/fastsoap\": {\n \"source\": \"iana\"\n },\n \"application/fdt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fdt\"]\n },\n \"application/fhir+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fhir+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/fido.trusted-apps+json\": {\n \"compressible\": true\n },\n \"application/fits\": {\n \"source\": \"iana\"\n },\n \"application/flexfec\": {\n \"source\": \"iana\"\n },\n \"application/font-sfnt\": {\n \"source\": \"iana\"\n },\n \"application/font-tdpfr\": {\n \"source\": \"iana\",\n \"extensions\": [\"pfr\"]\n },\n \"application/font-woff\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/framework-attributes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"geojson\"]\n },\n \"application/geo+json-seq\": {\n \"source\": \"iana\"\n },\n \"application/geopackage+sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/geoxacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/gltf-buffer\": {\n \"source\": \"iana\"\n },\n \"application/gml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gml\"]\n },\n \"application/gpx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"gpx\"]\n },\n \"application/gxf\": {\n \"source\": \"apache\",\n \"extensions\": [\"gxf\"]\n },\n \"application/gzip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gz\"]\n },\n \"application/h224\": {\n \"source\": \"iana\"\n },\n \"application/held+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/hjson\": {\n \"extensions\": [\"hjson\"]\n },\n \"application/http\": {\n \"source\": \"iana\"\n },\n \"application/hyperstudio\": {\n \"source\": \"iana\",\n \"extensions\": [\"stk\"]\n },\n \"application/ibe-key-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pkg-reply+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ibe-pp-data\": {\n \"source\": \"iana\"\n },\n \"application/iges\": {\n \"source\": \"iana\"\n },\n \"application/im-iscomposing+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/index\": {\n \"source\": \"iana\"\n },\n \"application/index.cmd\": {\n \"source\": \"iana\"\n },\n \"application/index.obj\": {\n \"source\": \"iana\"\n },\n \"application/index.response\": {\n \"source\": \"iana\"\n },\n \"application/index.vnd\": {\n \"source\": \"iana\"\n },\n \"application/inkml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ink\",\"inkml\"]\n },\n \"application/iotp\": {\n \"source\": \"iana\"\n },\n \"application/ipfix\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipfix\"]\n },\n \"application/ipp\": {\n \"source\": \"iana\"\n },\n \"application/isup\": {\n \"source\": \"iana\"\n },\n \"application/its+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"its\"]\n },\n \"application/java-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jar\",\"war\",\"ear\"]\n },\n \"application/java-serialized-object\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"ser\"]\n },\n \"application/java-vm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"class\"]\n },\n \"application/javascript\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"js\",\"mjs\"]\n },\n \"application/jf2feed+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jose\": {\n \"source\": \"iana\"\n },\n \"application/jose+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jrd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jscalendar+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"json\",\"map\"]\n },\n \"application/json-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/json-seq\": {\n \"source\": \"iana\"\n },\n \"application/json5\": {\n \"extensions\": [\"json5\"]\n },\n \"application/jsonml+json\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"jsonml\"]\n },\n \"application/jwk+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwk-set+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/jwt\": {\n \"source\": \"iana\"\n },\n \"application/kpml-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/kpml-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/ld+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"jsonld\"]\n },\n \"application/lgr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lgr\"]\n },\n \"application/link-format\": {\n \"source\": \"iana\"\n },\n \"application/load-control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lost+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lostxml\"]\n },\n \"application/lostsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/lpf+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/lxf\": {\n \"source\": \"iana\"\n },\n \"application/mac-binhex40\": {\n \"source\": \"iana\",\n \"extensions\": [\"hqx\"]\n },\n \"application/mac-compactpro\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpt\"]\n },\n \"application/macwriteii\": {\n \"source\": \"iana\"\n },\n \"application/mads+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mads\"]\n },\n \"application/manifest+json\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"webmanifest\"]\n },\n \"application/marc\": {\n \"source\": \"iana\",\n \"extensions\": [\"mrc\"]\n },\n \"application/marcxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mrcx\"]\n },\n \"application/mathematica\": {\n \"source\": \"iana\",\n \"extensions\": [\"ma\",\"nb\",\"mb\"]\n },\n \"application/mathml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mathml\"]\n },\n \"application/mathml-content+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mathml-presentation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-associated-procedure-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-deregister+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-envelope+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-msk-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-protection-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-reception-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-register-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-schedule+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbms-user-service-description+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mbox\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbox\"]\n },\n \"application/media-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpf\"]\n },\n \"application/media_control+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mediaservercontrol+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mscml\"]\n },\n \"application/merge-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/metalink+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"metalink\"]\n },\n \"application/metalink4+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"meta4\"]\n },\n \"application/mets+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mets\"]\n },\n \"application/mf4\": {\n \"source\": \"iana\"\n },\n \"application/mikey\": {\n \"source\": \"iana\"\n },\n \"application/mipc\": {\n \"source\": \"iana\"\n },\n \"application/missing-blocks+cbor-seq\": {\n \"source\": \"iana\"\n },\n \"application/mmt-aei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"maei\"]\n },\n \"application/mmt-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musd\"]\n },\n \"application/mods+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mods\"]\n },\n \"application/moss-keys\": {\n \"source\": \"iana\"\n },\n \"application/moss-signature\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-data\": {\n \"source\": \"iana\"\n },\n \"application/mosskey-request\": {\n \"source\": \"iana\"\n },\n \"application/mp21\": {\n \"source\": \"iana\",\n \"extensions\": [\"m21\",\"mp21\"]\n },\n \"application/mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"mp4s\",\"m4p\"]\n },\n \"application/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod\": {\n \"source\": \"iana\"\n },\n \"application/mpeg4-iod-xmt\": {\n \"source\": \"iana\"\n },\n \"application/mrb-consumer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/mrb-publish+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/msc-ivr+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msc-mixer+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/msword\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"doc\",\"dot\"]\n },\n \"application/mud+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/multipart-core\": {\n \"source\": \"iana\"\n },\n \"application/mxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxf\"]\n },\n \"application/n-quads\": {\n \"source\": \"iana\",\n \"extensions\": [\"nq\"]\n },\n \"application/n-triples\": {\n \"source\": \"iana\",\n \"extensions\": [\"nt\"]\n },\n \"application/nasdata\": {\n \"source\": \"iana\"\n },\n \"application/news-checkgroups\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-groupinfo\": {\n \"source\": \"iana\",\n \"charset\": \"US-ASCII\"\n },\n \"application/news-transmission\": {\n \"source\": \"iana\"\n },\n \"application/nlsml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/node\": {\n \"source\": \"iana\",\n \"extensions\": [\"cjs\"]\n },\n \"application/nss\": {\n \"source\": \"iana\"\n },\n \"application/oauth-authz-req+jwt\": {\n \"source\": \"iana\"\n },\n \"application/oblivious-dns-message\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-request\": {\n \"source\": \"iana\"\n },\n \"application/ocsp-response\": {\n \"source\": \"iana\"\n },\n \"application/octet-stream\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"bin\",\"dms\",\"lrf\",\"mar\",\"so\",\"dist\",\"distz\",\"pkg\",\"bpk\",\"dump\",\"elc\",\"deploy\",\"exe\",\"dll\",\"deb\",\"dmg\",\"iso\",\"img\",\"msi\",\"msp\",\"msm\",\"buffer\"]\n },\n \"application/oda\": {\n \"source\": \"iana\",\n \"extensions\": [\"oda\"]\n },\n \"application/odm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/odx\": {\n \"source\": \"iana\"\n },\n \"application/oebps-package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"opf\"]\n },\n \"application/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogx\"]\n },\n \"application/omdoc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"omdoc\"]\n },\n \"application/onenote\": {\n \"source\": \"apache\",\n \"extensions\": [\"onetoc\",\"onetoc2\",\"onetmp\",\"onepkg\"]\n },\n \"application/opc-nodeset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/oscore\": {\n \"source\": \"iana\"\n },\n \"application/oxps\": {\n \"source\": \"iana\",\n \"extensions\": [\"oxps\"]\n },\n \"application/p21\": {\n \"source\": \"iana\"\n },\n \"application/p21+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/p2p-overlay+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"relo\"]\n },\n \"application/parityfec\": {\n \"source\": \"iana\"\n },\n \"application/passport\": {\n \"source\": \"iana\"\n },\n \"application/patch-ops-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xer\"]\n },\n \"application/pdf\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pdf\"]\n },\n \"application/pdx\": {\n \"source\": \"iana\"\n },\n \"application/pem-certificate-chain\": {\n \"source\": \"iana\"\n },\n \"application/pgp-encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pgp\"]\n },\n \"application/pgp-keys\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\"]\n },\n \"application/pgp-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"asc\",\"sig\"]\n },\n \"application/pics-rules\": {\n \"source\": \"apache\",\n \"extensions\": [\"prf\"]\n },\n \"application/pidf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pidf-diff+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/pkcs10\": {\n \"source\": \"iana\",\n \"extensions\": [\"p10\"]\n },\n \"application/pkcs12\": {\n \"source\": \"iana\"\n },\n \"application/pkcs7-mime\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7m\",\"p7c\"]\n },\n \"application/pkcs7-signature\": {\n \"source\": \"iana\",\n \"extensions\": [\"p7s\"]\n },\n \"application/pkcs8\": {\n \"source\": \"iana\",\n \"extensions\": [\"p8\"]\n },\n \"application/pkcs8-encrypted\": {\n \"source\": \"iana\"\n },\n \"application/pkix-attr-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"ac\"]\n },\n \"application/pkix-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"cer\"]\n },\n \"application/pkix-crl\": {\n \"source\": \"iana\",\n \"extensions\": [\"crl\"]\n },\n \"application/pkix-pkipath\": {\n \"source\": \"iana\",\n \"extensions\": [\"pkipath\"]\n },\n \"application/pkixcmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"pki\"]\n },\n \"application/pls+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pls\"]\n },\n \"application/poc-settings+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/postscript\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ai\",\"eps\",\"ps\"]\n },\n \"application/ppsp-tracker+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/problem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/provenance+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"provx\"]\n },\n \"application/prs.alvestrand.titrax-sheet\": {\n \"source\": \"iana\"\n },\n \"application/prs.cww\": {\n \"source\": \"iana\",\n \"extensions\": [\"cww\"]\n },\n \"application/prs.cyn\": {\n \"source\": \"iana\",\n \"charset\": \"7-BIT\"\n },\n \"application/prs.hpub+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/prs.nprend\": {\n \"source\": \"iana\"\n },\n \"application/prs.plucker\": {\n \"source\": \"iana\"\n },\n \"application/prs.rdf-xml-crypt\": {\n \"source\": \"iana\"\n },\n \"application/prs.xsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/pskc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"pskcxml\"]\n },\n \"application/pvd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/qsig\": {\n \"source\": \"iana\"\n },\n \"application/raml+yaml\": {\n \"compressible\": true,\n \"extensions\": [\"raml\"]\n },\n \"application/raptorfec\": {\n \"source\": \"iana\"\n },\n \"application/rdap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rdf\",\"owl\"]\n },\n \"application/reginfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rif\"]\n },\n \"application/relax-ng-compact-syntax\": {\n \"source\": \"iana\",\n \"extensions\": [\"rnc\"]\n },\n \"application/remote-printing\": {\n \"source\": \"iana\"\n },\n \"application/reputon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/resource-lists+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rl\"]\n },\n \"application/resource-lists-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rld\"]\n },\n \"application/rfc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/riscos\": {\n \"source\": \"iana\"\n },\n \"application/rlmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/rls-services+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rs\"]\n },\n \"application/route-apd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rapd\"]\n },\n \"application/route-s-tsid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sls\"]\n },\n \"application/route-usd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rusd\"]\n },\n \"application/rpki-ghostbusters\": {\n \"source\": \"iana\",\n \"extensions\": [\"gbr\"]\n },\n \"application/rpki-manifest\": {\n \"source\": \"iana\",\n \"extensions\": [\"mft\"]\n },\n \"application/rpki-publication\": {\n \"source\": \"iana\"\n },\n \"application/rpki-roa\": {\n \"source\": \"iana\",\n \"extensions\": [\"roa\"]\n },\n \"application/rpki-updown\": {\n \"source\": \"iana\"\n },\n \"application/rsd+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rsd\"]\n },\n \"application/rss+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"rss\"]\n },\n \"application/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"application/rtploopback\": {\n \"source\": \"iana\"\n },\n \"application/rtx\": {\n \"source\": \"iana\"\n },\n \"application/samlassertion+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/samlmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sarif-external-properties+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sbe\": {\n \"source\": \"iana\"\n },\n \"application/sbml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sbml\"]\n },\n \"application/scaip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scim+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/scvp-cv-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"scq\"]\n },\n \"application/scvp-cv-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"scs\"]\n },\n \"application/scvp-vp-request\": {\n \"source\": \"iana\",\n \"extensions\": [\"spq\"]\n },\n \"application/scvp-vp-response\": {\n \"source\": \"iana\",\n \"extensions\": [\"spp\"]\n },\n \"application/sdp\": {\n \"source\": \"iana\",\n \"extensions\": [\"sdp\"]\n },\n \"application/secevent+jwt\": {\n \"source\": \"iana\"\n },\n \"application/senml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"senmlx\"]\n },\n \"application/senml-etch+cbor\": {\n \"source\": \"iana\"\n },\n \"application/senml-etch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/senml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sensml+cbor\": {\n \"source\": \"iana\"\n },\n \"application/sensml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sensml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sensmlx\"]\n },\n \"application/sensml-exi\": {\n \"source\": \"iana\"\n },\n \"application/sep+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sep-exi\": {\n \"source\": \"iana\"\n },\n \"application/session-info\": {\n \"source\": \"iana\"\n },\n \"application/set-payment\": {\n \"source\": \"iana\"\n },\n \"application/set-payment-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setpay\"]\n },\n \"application/set-registration\": {\n \"source\": \"iana\"\n },\n \"application/set-registration-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"setreg\"]\n },\n \"application/sgml\": {\n \"source\": \"iana\"\n },\n \"application/sgml-open-catalog\": {\n \"source\": \"iana\"\n },\n \"application/shf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"shf\"]\n },\n \"application/sieve\": {\n \"source\": \"iana\",\n \"extensions\": [\"siv\",\"sieve\"]\n },\n \"application/simple-filter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/simple-message-summary\": {\n \"source\": \"iana\"\n },\n \"application/simplesymbolcontainer\": {\n \"source\": \"iana\"\n },\n \"application/sipc\": {\n \"source\": \"iana\"\n },\n \"application/slate\": {\n \"source\": \"iana\"\n },\n \"application/smil\": {\n \"source\": \"iana\"\n },\n \"application/smil+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"smi\",\"smil\"]\n },\n \"application/smpte336m\": {\n \"source\": \"iana\"\n },\n \"application/soap+fastinfoset\": {\n \"source\": \"iana\"\n },\n \"application/soap+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sparql-query\": {\n \"source\": \"iana\",\n \"extensions\": [\"rq\"]\n },\n \"application/sparql-results+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"srx\"]\n },\n \"application/spdx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/spirits-event+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/sql\": {\n \"source\": \"iana\"\n },\n \"application/srgs\": {\n \"source\": \"iana\",\n \"extensions\": [\"gram\"]\n },\n \"application/srgs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"grxml\"]\n },\n \"application/sru+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sru\"]\n },\n \"application/ssdl+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ssdl\"]\n },\n \"application/ssml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ssml\"]\n },\n \"application/stix+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/swid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"swidtag\"]\n },\n \"application/tamp-apex-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-apex-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-community-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-error\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust\": {\n \"source\": \"iana\"\n },\n \"application/tamp-sequence-adjust-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-query\": {\n \"source\": \"iana\"\n },\n \"application/tamp-status-response\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update\": {\n \"source\": \"iana\"\n },\n \"application/tamp-update-confirm\": {\n \"source\": \"iana\"\n },\n \"application/tar\": {\n \"compressible\": true\n },\n \"application/taxii+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/td+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tei+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tei\",\"teicorpus\"]\n },\n \"application/tetra_isi\": {\n \"source\": \"iana\"\n },\n \"application/thraud+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tfi\"]\n },\n \"application/timestamp-query\": {\n \"source\": \"iana\"\n },\n \"application/timestamp-reply\": {\n \"source\": \"iana\"\n },\n \"application/timestamped-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"tsd\"]\n },\n \"application/tlsrpt+gzip\": {\n \"source\": \"iana\"\n },\n \"application/tlsrpt+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/tnauthlist\": {\n \"source\": \"iana\"\n },\n \"application/token-introspection+jwt\": {\n \"source\": \"iana\"\n },\n \"application/toml\": {\n \"compressible\": true,\n \"extensions\": [\"toml\"]\n },\n \"application/trickle-ice-sdpfrag\": {\n \"source\": \"iana\"\n },\n \"application/trig\": {\n \"source\": \"iana\",\n \"extensions\": [\"trig\"]\n },\n \"application/ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttml\"]\n },\n \"application/tve-trigger\": {\n \"source\": \"iana\"\n },\n \"application/tzif\": {\n \"source\": \"iana\"\n },\n \"application/tzif-leap\": {\n \"source\": \"iana\"\n },\n \"application/ubjson\": {\n \"compressible\": false,\n \"extensions\": [\"ubj\"]\n },\n \"application/ulpfec\": {\n \"source\": \"iana\"\n },\n \"application/urc-grpsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/urc-ressheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rsheet\"]\n },\n \"application/urc-targetdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"td\"]\n },\n \"application/urc-uisocketdesc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vcard+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vemmi\": {\n \"source\": \"iana\"\n },\n \"application/vividence.scriptfile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.1000minds.decision-model+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"1km\"]\n },\n \"application/vnd.3gpp-prose+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-prose-pc3ch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp-v2x-local-service-information\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.5gnas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.access-transfer-events+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.bsf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gmop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.gtpc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.interworking-data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.lpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mc-signalling-ear\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-payload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-signalling\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.mcdata-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcdata-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-floor-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-signed+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-ue-init-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcptt-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-command+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-affiliation-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-location-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-mbms-usage-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-service-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-transmission-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-ue-config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mcvideo-user-profile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.mid-call+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ngap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pfcp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.pic-bw-large\": {\n \"source\": \"iana\",\n \"extensions\": [\"plb\"]\n },\n \"application/vnd.3gpp.pic-bw-small\": {\n \"source\": \"iana\",\n \"extensions\": [\"psb\"]\n },\n \"application/vnd.3gpp.pic-bw-var\": {\n \"source\": \"iana\",\n \"extensions\": [\"pvb\"]\n },\n \"application/vnd.3gpp.s1ap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp.sms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-ext+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.srvcc-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.state-and-event-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp.ussd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.bcmcsinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.3gpp2.sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3gpp2.tcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tcap\"]\n },\n \"application/vnd.3lightssoftware.imagescal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.3m.post-it-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"pwn\"]\n },\n \"application/vnd.accpac.simply.aso\": {\n \"source\": \"iana\",\n \"extensions\": [\"aso\"]\n },\n \"application/vnd.accpac.simply.imp\": {\n \"source\": \"iana\",\n \"extensions\": [\"imp\"]\n },\n \"application/vnd.acucobol\": {\n \"source\": \"iana\",\n \"extensions\": [\"acu\"]\n },\n \"application/vnd.acucorp\": {\n \"source\": \"iana\",\n \"extensions\": [\"atc\",\"acutc\"]\n },\n \"application/vnd.adobe.air-application-installer-package+zip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"air\"]\n },\n \"application/vnd.adobe.flash.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.formscentral.fcdt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcdt\"]\n },\n \"application/vnd.adobe.fxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fxp\",\"fxpl\"]\n },\n \"application/vnd.adobe.partial-upload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.adobe.xdp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdp\"]\n },\n \"application/vnd.adobe.xfdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdf\"]\n },\n \"application/vnd.aether.imp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.afplinedata-pagedef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.cmoca-cmresource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-charset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codedfont\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.foca-codepage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-cmtable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-formdef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-mediummap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-objectcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-overlay\": {\n \"source\": \"iana\"\n },\n \"application/vnd.afpc.modca-pagesegment\": {\n \"source\": \"iana\"\n },\n \"application/vnd.age\": {\n \"source\": \"iana\",\n \"extensions\": [\"age\"]\n },\n \"application/vnd.ah-barcode\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ahead.space\": {\n \"source\": \"iana\",\n \"extensions\": [\"ahead\"]\n },\n \"application/vnd.airzip.filesecure.azf\": {\n \"source\": \"iana\",\n \"extensions\": [\"azf\"]\n },\n \"application/vnd.airzip.filesecure.azs\": {\n \"source\": \"iana\",\n \"extensions\": [\"azs\"]\n },\n \"application/vnd.amadeus+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.amazon.ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"azw\"]\n },\n \"application/vnd.amazon.mobi8-ebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.americandynamics.acc\": {\n \"source\": \"iana\",\n \"extensions\": [\"acc\"]\n },\n \"application/vnd.amiga.ami\": {\n \"source\": \"iana\",\n \"extensions\": [\"ami\"]\n },\n \"application/vnd.amundsen.maze+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.android.ota\": {\n \"source\": \"iana\"\n },\n \"application/vnd.android.package-archive\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"apk\"]\n },\n \"application/vnd.anki\": {\n \"source\": \"iana\"\n },\n \"application/vnd.anser-web-certificate-issue-initiation\": {\n \"source\": \"iana\",\n \"extensions\": [\"cii\"]\n },\n \"application/vnd.anser-web-funds-transfer-initiation\": {\n \"source\": \"apache\",\n \"extensions\": [\"fti\"]\n },\n \"application/vnd.antix.game-component\": {\n \"source\": \"iana\",\n \"extensions\": [\"atx\"]\n },\n \"application/vnd.apache.arrow.file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.arrow.stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.compact\": {\n \"source\": \"iana\"\n },\n \"application/vnd.apache.thrift.json\": {\n \"source\": \"iana\"\n },\n \"application/vnd.api+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.aplextor.warrp+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apothekende.reservation+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.apple.installer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mpkg\"]\n },\n \"application/vnd.apple.keynote\": {\n \"source\": \"iana\",\n \"extensions\": [\"key\"]\n },\n \"application/vnd.apple.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"m3u8\"]\n },\n \"application/vnd.apple.numbers\": {\n \"source\": \"iana\",\n \"extensions\": [\"numbers\"]\n },\n \"application/vnd.apple.pages\": {\n \"source\": \"iana\",\n \"extensions\": [\"pages\"]\n },\n \"application/vnd.apple.pkpass\": {\n \"compressible\": false,\n \"extensions\": [\"pkpass\"]\n },\n \"application/vnd.arastra.swi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.aristanetworks.swi\": {\n \"source\": \"iana\",\n \"extensions\": [\"swi\"]\n },\n \"application/vnd.artisan+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.artsquare\": {\n \"source\": \"iana\"\n },\n \"application/vnd.astraea-software.iota\": {\n \"source\": \"iana\",\n \"extensions\": [\"iota\"]\n },\n \"application/vnd.audiograph\": {\n \"source\": \"iana\",\n \"extensions\": [\"aep\"]\n },\n \"application/vnd.autopackage\": {\n \"source\": \"iana\"\n },\n \"application/vnd.avalon+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.avistar+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.balsamiq.bmml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmml\"]\n },\n \"application/vnd.balsamiq.bmpr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.banana-accounting\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.error\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bbf.usp.msg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bekitzur-stech+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.bint.med-content\": {\n \"source\": \"iana\"\n },\n \"application/vnd.biopax.rdf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.blink-idb-value-wrapper\": {\n \"source\": \"iana\"\n },\n \"application/vnd.blueice.multipass\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpm\"]\n },\n \"application/vnd.bluetooth.ep.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bluetooth.le.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bmi\": {\n \"source\": \"iana\",\n \"extensions\": [\"bmi\"]\n },\n \"application/vnd.bpf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.bpf3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.businessobjects\": {\n \"source\": \"iana\",\n \"extensions\": [\"rep\"]\n },\n \"application/vnd.byu.uapi+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cab-jscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-cpdl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.canon-lips\": {\n \"source\": \"iana\"\n },\n \"application/vnd.capasystems-pg+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cendio.thinlinc.clientconf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.century-systems.tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chemdraw+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"cdxml\"]\n },\n \"application/vnd.chess-pgn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.chipnuts.karaoke-mmd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmd\"]\n },\n \"application/vnd.ciedi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cinderella\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdy\"]\n },\n \"application/vnd.cirpack.isdn-ext\": {\n \"source\": \"iana\"\n },\n \"application/vnd.citationstyles.style+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csl\"]\n },\n \"application/vnd.claymore\": {\n \"source\": \"iana\",\n \"extensions\": [\"cla\"]\n },\n \"application/vnd.cloanto.rp9\": {\n \"source\": \"iana\",\n \"extensions\": [\"rp9\"]\n },\n \"application/vnd.clonk.c4group\": {\n \"source\": \"iana\",\n \"extensions\": [\"c4g\",\"c4d\",\"c4f\",\"c4p\",\"c4u\"]\n },\n \"application/vnd.cluetrust.cartomobile-config\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amc\"]\n },\n \"application/vnd.cluetrust.cartomobile-config-pkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"c11amz\"]\n },\n \"application/vnd.coffeescript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.document-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.presentation-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collabio.xodocuments.spreadsheet-template\": {\n \"source\": \"iana\"\n },\n \"application/vnd.collection+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.doc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.collection.next+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.comicbook+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.comicbook-rar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commerce-battelle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.commonspace\": {\n \"source\": \"iana\",\n \"extensions\": [\"csp\"]\n },\n \"application/vnd.contact.cmsg\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdbcmsg\"]\n },\n \"application/vnd.coreos.ignition+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cosmocaller\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmc\"]\n },\n \"application/vnd.crick.clicker\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkx\"]\n },\n \"application/vnd.crick.clicker.keyboard\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkk\"]\n },\n \"application/vnd.crick.clicker.palette\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkp\"]\n },\n \"application/vnd.crick.clicker.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkt\"]\n },\n \"application/vnd.crick.clicker.wordbank\": {\n \"source\": \"iana\",\n \"extensions\": [\"clkw\"]\n },\n \"application/vnd.criticaltools.wbs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wbs\"]\n },\n \"application/vnd.cryptii.pipe+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.crypto-shade-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cryptomator.vault\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ctc-posml\": {\n \"source\": \"iana\",\n \"extensions\": [\"pml\"]\n },\n \"application/vnd.ctct.ws+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cups-pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-postscript\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-ppd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppd\"]\n },\n \"application/vnd.cups-raster\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cups-raw\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.curl.car\": {\n \"source\": \"apache\",\n \"extensions\": [\"car\"]\n },\n \"application/vnd.curl.pcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcurl\"]\n },\n \"application/vnd.cyan.dean.root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cybank\": {\n \"source\": \"iana\"\n },\n \"application/vnd.cyclonedx+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.cyclonedx+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.d2l.coursepackage1p0+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.d3m-dataset\": {\n \"source\": \"iana\"\n },\n \"application/vnd.d3m-problem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dart\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dart\"]\n },\n \"application/vnd.data-vision.rdz\": {\n \"source\": \"iana\",\n \"extensions\": [\"rdz\"]\n },\n \"application/vnd.datapackage+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dataresource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dbf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dbf\"]\n },\n \"application/vnd.debian.binary-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dece.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvf\",\"uvvf\",\"uvd\",\"uvvd\"]\n },\n \"application/vnd.dece.ttml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uvt\",\"uvvt\"]\n },\n \"application/vnd.dece.unspecified\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvx\",\"uvvx\"]\n },\n \"application/vnd.dece.zip\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvz\",\"uvvz\"]\n },\n \"application/vnd.denovo.fcselayout-link\": {\n \"source\": \"iana\",\n \"extensions\": [\"fe_launch\"]\n },\n \"application/vnd.desmume.movie\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dir-bi.plate-dl-nosuffix\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dm.delegation+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dna\": {\n \"source\": \"iana\",\n \"extensions\": [\"dna\"]\n },\n \"application/vnd.document+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dolby.mlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"mlp\"]\n },\n \"application/vnd.dolby.mobile.1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dolby.mobile.2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.doremir.scorecloud-binary-document\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dpgraph\": {\n \"source\": \"iana\",\n \"extensions\": [\"dpg\"]\n },\n \"application/vnd.dreamfactory\": {\n \"source\": \"iana\",\n \"extensions\": [\"dfac\"]\n },\n \"application/vnd.drive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ds-keypoint\": {\n \"source\": \"apache\",\n \"extensions\": [\"kpxx\"]\n },\n \"application/vnd.dtg.local\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.flash\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dtg.local.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ait\": {\n \"source\": \"iana\",\n \"extensions\": [\"ait\"]\n },\n \"application/vnd.dvb.dvbisl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.dvbj\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.esgcontainer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcdftnotifaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgaccess2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcesgpdd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.ipdcroaming\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-base\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.iptv.alfec-enhancement\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.notif-aggregate-root+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-container+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-generic+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-msglist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-ia-registration-response+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.notif-init+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.dvb.pfr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dvb.service\": {\n \"source\": \"iana\",\n \"extensions\": [\"svc\"]\n },\n \"application/vnd.dxr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.dynageo\": {\n \"source\": \"iana\",\n \"extensions\": [\"geo\"]\n },\n \"application/vnd.dzr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.easykaraoke.cdgdownload\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecdis-update\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecip.rlp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eclipse.ditto+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ecowin.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"mag\"]\n },\n \"application/vnd.ecowin.filerequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.fileupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.series\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesrequest\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ecowin.seriesupdate\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.img\": {\n \"source\": \"iana\"\n },\n \"application/vnd.efi.iso\": {\n \"source\": \"iana\"\n },\n \"application/vnd.emclient.accessrequest+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.enliven\": {\n \"source\": \"iana\",\n \"extensions\": [\"nml\"]\n },\n \"application/vnd.enphase.envoy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eprints.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.epson.esf\": {\n \"source\": \"iana\",\n \"extensions\": [\"esf\"]\n },\n \"application/vnd.epson.msf\": {\n \"source\": \"iana\",\n \"extensions\": [\"msf\"]\n },\n \"application/vnd.epson.quickanime\": {\n \"source\": \"iana\",\n \"extensions\": [\"qam\"]\n },\n \"application/vnd.epson.salt\": {\n \"source\": \"iana\",\n \"extensions\": [\"slt\"]\n },\n \"application/vnd.epson.ssf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ssf\"]\n },\n \"application/vnd.ericsson.quickcall\": {\n \"source\": \"iana\"\n },\n \"application/vnd.espass-espass+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.eszigno3+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"es3\",\"et3\"]\n },\n \"application/vnd.etsi.aoc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.asic-e+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.asic-s+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.etsi.cug+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvcommand+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-bc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-cod+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsad-npvr+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvservice+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvsync+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.iptvueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mcid+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.mheg5\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.overload-control-policy-dataset+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.pstn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.sci+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.simservs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.timestamp-token\": {\n \"source\": \"iana\"\n },\n \"application/vnd.etsi.tsl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.etsi.tsl.der\": {\n \"source\": \"iana\"\n },\n \"application/vnd.eu.kasparian.car+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.eudora.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.profile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.settings\": {\n \"source\": \"iana\"\n },\n \"application/vnd.evolv.ecig.theme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.exstream-empower+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.exstream-package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ezpix-album\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez2\"]\n },\n \"application/vnd.ezpix-package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ez3\"]\n },\n \"application/vnd.f-secure.mobile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.familysearch.gedcom+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.fastcopy-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fdf\": {\n \"source\": \"iana\",\n \"extensions\": [\"fdf\"]\n },\n \"application/vnd.fdsn.mseed\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseed\"]\n },\n \"application/vnd.fdsn.seed\": {\n \"source\": \"iana\",\n \"extensions\": [\"seed\",\"dataless\"]\n },\n \"application/vnd.ffsns\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ficlab.flb+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.filmit.zfc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fints\": {\n \"source\": \"iana\"\n },\n \"application/vnd.firemonkeys.cloudcell\": {\n \"source\": \"iana\"\n },\n \"application/vnd.flographit\": {\n \"source\": \"iana\",\n \"extensions\": [\"gph\"]\n },\n \"application/vnd.fluxtime.clip\": {\n \"source\": \"iana\",\n \"extensions\": [\"ftc\"]\n },\n \"application/vnd.font-fontforge-sfd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.framemaker\": {\n \"source\": \"iana\",\n \"extensions\": [\"fm\",\"frame\",\"maker\",\"book\"]\n },\n \"application/vnd.frogans.fnc\": {\n \"source\": \"iana\",\n \"extensions\": [\"fnc\"]\n },\n \"application/vnd.frogans.ltf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ltf\"]\n },\n \"application/vnd.fsc.weblaunch\": {\n \"source\": \"iana\",\n \"extensions\": [\"fsc\"]\n },\n \"application/vnd.fujifilm.fb.docuworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.binder\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujifilm.fb.jfi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fujitsu.oasys\": {\n \"source\": \"iana\",\n \"extensions\": [\"oas\"]\n },\n \"application/vnd.fujitsu.oasys2\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa2\"]\n },\n \"application/vnd.fujitsu.oasys3\": {\n \"source\": \"iana\",\n \"extensions\": [\"oa3\"]\n },\n \"application/vnd.fujitsu.oasysgp\": {\n \"source\": \"iana\",\n \"extensions\": [\"fg5\"]\n },\n \"application/vnd.fujitsu.oasysprs\": {\n \"source\": \"iana\",\n \"extensions\": [\"bh2\"]\n },\n \"application/vnd.fujixerox.art-ex\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.art4\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.ddd\": {\n \"source\": \"iana\",\n \"extensions\": [\"ddd\"]\n },\n \"application/vnd.fujixerox.docuworks\": {\n \"source\": \"iana\",\n \"extensions\": [\"xdw\"]\n },\n \"application/vnd.fujixerox.docuworks.binder\": {\n \"source\": \"iana\",\n \"extensions\": [\"xbd\"]\n },\n \"application/vnd.fujixerox.docuworks.container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fujixerox.hbpl\": {\n \"source\": \"iana\"\n },\n \"application/vnd.fut-misnet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.futoin+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.fuzzysheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fzs\"]\n },\n \"application/vnd.genomatix.tuxedo\": {\n \"source\": \"iana\",\n \"extensions\": [\"txd\"]\n },\n \"application/vnd.gentics.grd+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geo+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geocube+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.geogebra.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggb\"]\n },\n \"application/vnd.geogebra.slides\": {\n \"source\": \"iana\"\n },\n \"application/vnd.geogebra.tool\": {\n \"source\": \"iana\",\n \"extensions\": [\"ggt\"]\n },\n \"application/vnd.geometry-explorer\": {\n \"source\": \"iana\",\n \"extensions\": [\"gex\",\"gre\"]\n },\n \"application/vnd.geonext\": {\n \"source\": \"iana\",\n \"extensions\": [\"gxt\"]\n },\n \"application/vnd.geoplan\": {\n \"source\": \"iana\",\n \"extensions\": [\"g2w\"]\n },\n \"application/vnd.geospace\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3w\"]\n },\n \"application/vnd.gerber\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.globalplatform.card-content-mgt-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.gmx\": {\n \"source\": \"iana\",\n \"extensions\": [\"gmx\"]\n },\n \"application/vnd.google-apps.document\": {\n \"compressible\": false,\n \"extensions\": [\"gdoc\"]\n },\n \"application/vnd.google-apps.presentation\": {\n \"compressible\": false,\n \"extensions\": [\"gslides\"]\n },\n \"application/vnd.google-apps.spreadsheet\": {\n \"compressible\": false,\n \"extensions\": [\"gsheet\"]\n },\n \"application/vnd.google-earth.kml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"kml\"]\n },\n \"application/vnd.google-earth.kmz\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"kmz\"]\n },\n \"application/vnd.gov.sk.e-form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.gov.sk.e-form+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.gov.sk.xmldatacontainer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.grafeq\": {\n \"source\": \"iana\",\n \"extensions\": [\"gqf\",\"gqs\"]\n },\n \"application/vnd.gridmp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.groove-account\": {\n \"source\": \"iana\",\n \"extensions\": [\"gac\"]\n },\n \"application/vnd.groove-help\": {\n \"source\": \"iana\",\n \"extensions\": [\"ghf\"]\n },\n \"application/vnd.groove-identity-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gim\"]\n },\n \"application/vnd.groove-injector\": {\n \"source\": \"iana\",\n \"extensions\": [\"grv\"]\n },\n \"application/vnd.groove-tool-message\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtm\"]\n },\n \"application/vnd.groove-tool-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpl\"]\n },\n \"application/vnd.groove-vcard\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcg\"]\n },\n \"application/vnd.hal+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"hal\"]\n },\n \"application/vnd.handheld-entertainment+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zmm\"]\n },\n \"application/vnd.hbci\": {\n \"source\": \"iana\",\n \"extensions\": [\"hbci\"]\n },\n \"application/vnd.hc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hcl-bireports\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hdt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.heroku+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hhe.lesson-player\": {\n \"source\": \"iana\",\n \"extensions\": [\"les\"]\n },\n \"application/vnd.hl7cda+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hl7v2+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.hp-hpgl\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpgl\"]\n },\n \"application/vnd.hp-hpid\": {\n \"source\": \"iana\",\n \"extensions\": [\"hpid\"]\n },\n \"application/vnd.hp-hps\": {\n \"source\": \"iana\",\n \"extensions\": [\"hps\"]\n },\n \"application/vnd.hp-jlyt\": {\n \"source\": \"iana\",\n \"extensions\": [\"jlt\"]\n },\n \"application/vnd.hp-pcl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcl\"]\n },\n \"application/vnd.hp-pclxl\": {\n \"source\": \"iana\",\n \"extensions\": [\"pclxl\"]\n },\n \"application/vnd.httphone\": {\n \"source\": \"iana\"\n },\n \"application/vnd.hydrostatix.sof-data\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfd-hdstx\"]\n },\n \"application/vnd.hyper+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyper-item+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hyperdrive+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.hzn-3d-crossword\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.afplinedata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.electronic-media\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ibm.minipay\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpy\"]\n },\n \"application/vnd.ibm.modcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"afp\",\"listafp\",\"list3820\"]\n },\n \"application/vnd.ibm.rights-management\": {\n \"source\": \"iana\",\n \"extensions\": [\"irm\"]\n },\n \"application/vnd.ibm.secure-container\": {\n \"source\": \"iana\",\n \"extensions\": [\"sc\"]\n },\n \"application/vnd.iccprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"icc\",\"icm\"]\n },\n \"application/vnd.ieee.1905\": {\n \"source\": \"iana\"\n },\n \"application/vnd.igloader\": {\n \"source\": \"iana\",\n \"extensions\": [\"igl\"]\n },\n \"application/vnd.imagemeter.folder+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.imagemeter.image+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.immervision-ivp\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivp\"]\n },\n \"application/vnd.immervision-ivu\": {\n \"source\": \"iana\",\n \"extensions\": [\"ivu\"]\n },\n \"application/vnd.ims.imsccv1p1\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.imsccv1p3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ims.lis.v2.result+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolconsumerprofile+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolproxy.id+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ims.lti.v2.toolsettings.simple+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informedcontrol.rms+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.informix-visionary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project\": {\n \"source\": \"iana\"\n },\n \"application/vnd.infotech.project+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.innopath.wamp.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.insors.igm\": {\n \"source\": \"iana\",\n \"extensions\": [\"igm\"]\n },\n \"application/vnd.intercon.formnet\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpw\",\"xpx\"]\n },\n \"application/vnd.intergeo\": {\n \"source\": \"iana\",\n \"extensions\": [\"i2g\"]\n },\n \"application/vnd.intertrust.digibox\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intertrust.nncp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.intu.qbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"qbo\"]\n },\n \"application/vnd.intu.qfx\": {\n \"source\": \"iana\",\n \"extensions\": [\"qfx\"]\n },\n \"application/vnd.iptc.g2.catalogitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.conceptitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.knowledgeitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.newsmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.packageitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.iptc.g2.planningitem+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ipunplugged.rcprofile\": {\n \"source\": \"iana\",\n \"extensions\": [\"rcprofile\"]\n },\n \"application/vnd.irepository.package+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"irp\"]\n },\n \"application/vnd.is-xpr\": {\n \"source\": \"iana\",\n \"extensions\": [\"xpr\"]\n },\n \"application/vnd.isac.fcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"fcs\"]\n },\n \"application/vnd.iso11783-10+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.jam\": {\n \"source\": \"iana\",\n \"extensions\": [\"jam\"]\n },\n \"application/vnd.japannet-directory-service\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-jpnstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-payment-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-registration-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-setstore-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.japannet-verification-wakeup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.jcp.javame.midlet-rms\": {\n \"source\": \"iana\",\n \"extensions\": [\"rms\"]\n },\n \"application/vnd.jisp\": {\n \"source\": \"iana\",\n \"extensions\": [\"jisp\"]\n },\n \"application/vnd.joost.joda-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"joda\"]\n },\n \"application/vnd.jsk.isdn-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.kahootz\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktz\",\"ktr\"]\n },\n \"application/vnd.kde.karbon\": {\n \"source\": \"iana\",\n \"extensions\": [\"karbon\"]\n },\n \"application/vnd.kde.kchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"chrt\"]\n },\n \"application/vnd.kde.kformula\": {\n \"source\": \"iana\",\n \"extensions\": [\"kfo\"]\n },\n \"application/vnd.kde.kivio\": {\n \"source\": \"iana\",\n \"extensions\": [\"flw\"]\n },\n \"application/vnd.kde.kontour\": {\n \"source\": \"iana\",\n \"extensions\": [\"kon\"]\n },\n \"application/vnd.kde.kpresenter\": {\n \"source\": \"iana\",\n \"extensions\": [\"kpr\",\"kpt\"]\n },\n \"application/vnd.kde.kspread\": {\n \"source\": \"iana\",\n \"extensions\": [\"ksp\"]\n },\n \"application/vnd.kde.kword\": {\n \"source\": \"iana\",\n \"extensions\": [\"kwd\",\"kwt\"]\n },\n \"application/vnd.kenameaapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"htke\"]\n },\n \"application/vnd.kidspiration\": {\n \"source\": \"iana\",\n \"extensions\": [\"kia\"]\n },\n \"application/vnd.kinar\": {\n \"source\": \"iana\",\n \"extensions\": [\"kne\",\"knp\"]\n },\n \"application/vnd.koan\": {\n \"source\": \"iana\",\n \"extensions\": [\"skp\",\"skd\",\"skt\",\"skm\"]\n },\n \"application/vnd.kodak-descriptor\": {\n \"source\": \"iana\",\n \"extensions\": [\"sse\"]\n },\n \"application/vnd.las\": {\n \"source\": \"iana\"\n },\n \"application/vnd.las.las+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.las.las+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lasxml\"]\n },\n \"application/vnd.laszip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.leap+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.liberty-request+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.llamagraphics.life-balance.desktop\": {\n \"source\": \"iana\",\n \"extensions\": [\"lbd\"]\n },\n \"application/vnd.llamagraphics.life-balance.exchange+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"lbe\"]\n },\n \"application/vnd.logipipe.circuit+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.loom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.lotus-1-2-3\": {\n \"source\": \"iana\",\n \"extensions\": [\"123\"]\n },\n \"application/vnd.lotus-approach\": {\n \"source\": \"iana\",\n \"extensions\": [\"apr\"]\n },\n \"application/vnd.lotus-freelance\": {\n \"source\": \"iana\",\n \"extensions\": [\"pre\"]\n },\n \"application/vnd.lotus-notes\": {\n \"source\": \"iana\",\n \"extensions\": [\"nsf\"]\n },\n \"application/vnd.lotus-organizer\": {\n \"source\": \"iana\",\n \"extensions\": [\"org\"]\n },\n \"application/vnd.lotus-screencam\": {\n \"source\": \"iana\",\n \"extensions\": [\"scm\"]\n },\n \"application/vnd.lotus-wordpro\": {\n \"source\": \"iana\",\n \"extensions\": [\"lwp\"]\n },\n \"application/vnd.macports.portpkg\": {\n \"source\": \"iana\",\n \"extensions\": [\"portpkg\"]\n },\n \"application/vnd.mapbox-vector-tile\": {\n \"source\": \"iana\",\n \"extensions\": [\"mvt\"]\n },\n \"application/vnd.marlin.drm.actiontoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.conftoken+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.license+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.marlin.drm.mdcf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mason+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.maxar.archive.3tz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"application/vnd.maxmind.maxmind-db\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mcd\": {\n \"source\": \"iana\",\n \"extensions\": [\"mcd\"]\n },\n \"application/vnd.medcalcdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"mc1\"]\n },\n \"application/vnd.mediastation.cdkey\": {\n \"source\": \"iana\",\n \"extensions\": [\"cdkey\"]\n },\n \"application/vnd.meridian-slingshot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mfer\": {\n \"source\": \"iana\",\n \"extensions\": [\"mwf\"]\n },\n \"application/vnd.mfmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"mfm\"]\n },\n \"application/vnd.micro+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.micrografx.flo\": {\n \"source\": \"iana\",\n \"extensions\": [\"flo\"]\n },\n \"application/vnd.micrografx.igx\": {\n \"source\": \"iana\",\n \"extensions\": [\"igx\"]\n },\n \"application/vnd.microsoft.portable-executable\": {\n \"source\": \"iana\"\n },\n \"application/vnd.microsoft.windows.thumbnail-cache\": {\n \"source\": \"iana\"\n },\n \"application/vnd.miele+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.mif\": {\n \"source\": \"iana\",\n \"extensions\": [\"mif\"]\n },\n \"application/vnd.minisoft-hp3000-save\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mitsubishi.misty-guard.trustweb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mobius.daf\": {\n \"source\": \"iana\",\n \"extensions\": [\"daf\"]\n },\n \"application/vnd.mobius.dis\": {\n \"source\": \"iana\",\n \"extensions\": [\"dis\"]\n },\n \"application/vnd.mobius.mbk\": {\n \"source\": \"iana\",\n \"extensions\": [\"mbk\"]\n },\n \"application/vnd.mobius.mqy\": {\n \"source\": \"iana\",\n \"extensions\": [\"mqy\"]\n },\n \"application/vnd.mobius.msl\": {\n \"source\": \"iana\",\n \"extensions\": [\"msl\"]\n },\n \"application/vnd.mobius.plc\": {\n \"source\": \"iana\",\n \"extensions\": [\"plc\"]\n },\n \"application/vnd.mobius.txf\": {\n \"source\": \"iana\",\n \"extensions\": [\"txf\"]\n },\n \"application/vnd.mophun.application\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpn\"]\n },\n \"application/vnd.mophun.certificate\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpc\"]\n },\n \"application/vnd.motorola.flexsuite\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.adsi\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.fis\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.gotap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.kmr\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.ttc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.flexsuite.wem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.motorola.iprm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mozilla.xul+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xul\"]\n },\n \"application/vnd.ms-3mfdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-artgalry\": {\n \"source\": \"iana\",\n \"extensions\": [\"cil\"]\n },\n \"application/vnd.ms-asf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-cab-compressed\": {\n \"source\": \"iana\",\n \"extensions\": [\"cab\"]\n },\n \"application/vnd.ms-color.iccprofile\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-excel\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xls\",\"xlm\",\"xla\",\"xlc\",\"xlt\",\"xlw\"]\n },\n \"application/vnd.ms-excel.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlam\"]\n },\n \"application/vnd.ms-excel.sheet.binary.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsb\"]\n },\n \"application/vnd.ms-excel.sheet.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xlsm\"]\n },\n \"application/vnd.ms-excel.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltm\"]\n },\n \"application/vnd.ms-fontobject\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eot\"]\n },\n \"application/vnd.ms-htmlhelp\": {\n \"source\": \"iana\",\n \"extensions\": [\"chm\"]\n },\n \"application/vnd.ms-ims\": {\n \"source\": \"iana\",\n \"extensions\": [\"ims\"]\n },\n \"application/vnd.ms-lrm\": {\n \"source\": \"iana\",\n \"extensions\": [\"lrm\"]\n },\n \"application/vnd.ms-office.activex+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-officetheme\": {\n \"source\": \"iana\",\n \"extensions\": [\"thmx\"]\n },\n \"application/vnd.ms-opentype\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-outlook\": {\n \"compressible\": false,\n \"extensions\": [\"msg\"]\n },\n \"application/vnd.ms-package.obfuscated-opentype\": {\n \"source\": \"apache\"\n },\n \"application/vnd.ms-pki.seccat\": {\n \"source\": \"apache\",\n \"extensions\": [\"cat\"]\n },\n \"application/vnd.ms-pki.stl\": {\n \"source\": \"apache\",\n \"extensions\": [\"stl\"]\n },\n \"application/vnd.ms-playready.initiator+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-powerpoint\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ppt\",\"pps\",\"pot\"]\n },\n \"application/vnd.ms-powerpoint.addin.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppam\"]\n },\n \"application/vnd.ms-powerpoint.presentation.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"pptm\"]\n },\n \"application/vnd.ms-powerpoint.slide.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldm\"]\n },\n \"application/vnd.ms-powerpoint.slideshow.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsm\"]\n },\n \"application/vnd.ms-powerpoint.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"potm\"]\n },\n \"application/vnd.ms-printdevicecapabilities+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-printing.printticket+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/vnd.ms-printschematicket+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ms-project\": {\n \"source\": \"iana\",\n \"extensions\": [\"mpp\",\"mpt\"]\n },\n \"application/vnd.ms-tnef\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.nwprinting.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.printerpairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-windows.wsd.oob\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.lic-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-chlg-req\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-wmdrm.meter-resp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ms-word.document.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"docm\"]\n },\n \"application/vnd.ms-word.template.macroenabled.12\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotm\"]\n },\n \"application/vnd.ms-works\": {\n \"source\": \"iana\",\n \"extensions\": [\"wps\",\"wks\",\"wcm\",\"wdb\"]\n },\n \"application/vnd.ms-wpl\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpl\"]\n },\n \"application/vnd.ms-xpsdocument\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xps\"]\n },\n \"application/vnd.msa-disk-image\": {\n \"source\": \"iana\"\n },\n \"application/vnd.mseq\": {\n \"source\": \"iana\",\n \"extensions\": [\"mseq\"]\n },\n \"application/vnd.msign\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator\": {\n \"source\": \"iana\"\n },\n \"application/vnd.multiad.creator.cif\": {\n \"source\": \"iana\"\n },\n \"application/vnd.music-niff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.musician\": {\n \"source\": \"iana\",\n \"extensions\": [\"mus\"]\n },\n \"application/vnd.muvee.style\": {\n \"source\": \"iana\",\n \"extensions\": [\"msty\"]\n },\n \"application/vnd.mynfc\": {\n \"source\": \"iana\",\n \"extensions\": [\"taglet\"]\n },\n \"application/vnd.nacamar.ybrid+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.ncd.control\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ncd.reference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nearst.inv+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nebumind.line\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nervana\": {\n \"source\": \"iana\"\n },\n \"application/vnd.netfpx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.neurolanguage.nlu\": {\n \"source\": \"iana\",\n \"extensions\": [\"nlu\"]\n },\n \"application/vnd.nimn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.nitro.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nintendo.snes.rom\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nitf\": {\n \"source\": \"iana\",\n \"extensions\": [\"ntf\",\"nitf\"]\n },\n \"application/vnd.noblenet-directory\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnd\"]\n },\n \"application/vnd.noblenet-sealer\": {\n \"source\": \"iana\",\n \"extensions\": [\"nns\"]\n },\n \"application/vnd.noblenet-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"nnw\"]\n },\n \"application/vnd.nokia.catalogs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.conml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.iptv.config+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.isds-radio-presets\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.landmark+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.landmarkcollection+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.n-gage.ac+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ac\"]\n },\n \"application/vnd.nokia.n-gage.data\": {\n \"source\": \"iana\",\n \"extensions\": [\"ngdat\"]\n },\n \"application/vnd.nokia.n-gage.symbian.install\": {\n \"source\": \"iana\",\n \"extensions\": [\"n-gage\"]\n },\n \"application/vnd.nokia.ncd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.nokia.pcd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.nokia.radio-preset\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpst\"]\n },\n \"application/vnd.nokia.radio-presets\": {\n \"source\": \"iana\",\n \"extensions\": [\"rpss\"]\n },\n \"application/vnd.novadigm.edm\": {\n \"source\": \"iana\",\n \"extensions\": [\"edm\"]\n },\n \"application/vnd.novadigm.edx\": {\n \"source\": \"iana\",\n \"extensions\": [\"edx\"]\n },\n \"application/vnd.novadigm.ext\": {\n \"source\": \"iana\",\n \"extensions\": [\"ext\"]\n },\n \"application/vnd.ntt-local.content-share\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.file-transfer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.ogw_remote-access\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_remote\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ntt-local.sip-ta_tcp_stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oasis.opendocument.chart\": {\n \"source\": \"iana\",\n \"extensions\": [\"odc\"]\n },\n \"application/vnd.oasis.opendocument.chart-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otc\"]\n },\n \"application/vnd.oasis.opendocument.database\": {\n \"source\": \"iana\",\n \"extensions\": [\"odb\"]\n },\n \"application/vnd.oasis.opendocument.formula\": {\n \"source\": \"iana\",\n \"extensions\": [\"odf\"]\n },\n \"application/vnd.oasis.opendocument.formula-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"odft\"]\n },\n \"application/vnd.oasis.opendocument.graphics\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odg\"]\n },\n \"application/vnd.oasis.opendocument.graphics-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otg\"]\n },\n \"application/vnd.oasis.opendocument.image\": {\n \"source\": \"iana\",\n \"extensions\": [\"odi\"]\n },\n \"application/vnd.oasis.opendocument.image-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"oti\"]\n },\n \"application/vnd.oasis.opendocument.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odp\"]\n },\n \"application/vnd.oasis.opendocument.presentation-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"otp\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ods\"]\n },\n \"application/vnd.oasis.opendocument.spreadsheet-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ots\"]\n },\n \"application/vnd.oasis.opendocument.text\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"odt\"]\n },\n \"application/vnd.oasis.opendocument.text-master\": {\n \"source\": \"iana\",\n \"extensions\": [\"odm\"]\n },\n \"application/vnd.oasis.opendocument.text-template\": {\n \"source\": \"iana\",\n \"extensions\": [\"ott\"]\n },\n \"application/vnd.oasis.opendocument.text-web\": {\n \"source\": \"iana\",\n \"extensions\": [\"oth\"]\n },\n \"application/vnd.obn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ocf+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oci.image.manifest.v1+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oftn.l10n+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessdownload+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.contentaccessstreaming+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.cspg-hexbinary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.dae.svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.dae.xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.mippvcontrolmessage+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.pae.gem\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oipf.spdiscovery+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.spdlist+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.ueprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oipf.userprofile+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.olpc-sugar\": {\n \"source\": \"iana\",\n \"extensions\": [\"xo\"]\n },\n \"application/vnd.oma-scws-config\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-request\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma-scws-http-response\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.associated-procedure-parameter+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.drm-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.imd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.ltkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.notification+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.provisioningtrigger\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgboot\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.sgdd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sgdu\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.simple-symbol-container\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.bcast.smartcard-trigger+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.sprov+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.bcast.stkm\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.cab-address-book+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-feature-handler+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-pcc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-subs-invite+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.cab-user-prefs+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.dcd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dcdc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.dd2+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dd2\"]\n },\n \"application/vnd.oma.drm.risd+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.group-usage-list+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+cbor\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.lwm2m+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.lwm2m+tlv\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.pal+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.detailed-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.final-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.groups+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.invocation-descriptor+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.poc.optimized-progress-report+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.push\": {\n \"source\": \"iana\"\n },\n \"application/vnd.oma.scidm.messages+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oma.xcap-directory+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.omads-email+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-file+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omads-folder+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.omaloc-supl-init\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepager\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertamx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertat\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.onepagertatx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openblox.game+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"obgx\"]\n },\n \"application/vnd.openblox.game-binary\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openeye.oeb\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openofficeorg.extension\": {\n \"source\": \"apache\",\n \"extensions\": [\"oxt\"]\n },\n \"application/vnd.openstreetmap.data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osm\"]\n },\n \"application/vnd.opentimestamps.ots\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.custom-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.customxmlproperties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawing+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chart+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.extended-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"pptx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide\": {\n \"source\": \"iana\",\n \"extensions\": [\"sldx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slide+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow\": {\n \"source\": \"iana\",\n \"extensions\": [\"ppsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.tags+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"potx\"]\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"xlsx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"xltx\"]\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.theme+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.themeoverride+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.vmldrawing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"docx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template\": {\n \"source\": \"iana\",\n \"extensions\": [\"dotx\"]\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.core-properties+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.openxmlformats-package.relationships+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oracle.resource+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.orange.indata\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osa.netdeploy\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgeo.mapguide.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgp\"]\n },\n \"application/vnd.osgi.bundle\": {\n \"source\": \"iana\"\n },\n \"application/vnd.osgi.dp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dp\"]\n },\n \"application/vnd.osgi.subsystem\": {\n \"source\": \"iana\",\n \"extensions\": [\"esa\"]\n },\n \"application/vnd.otps.ct-kip+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.oxli.countgraph\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pagerduty+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.palm\": {\n \"source\": \"iana\",\n \"extensions\": [\"pdb\",\"pqa\",\"oprc\"]\n },\n \"application/vnd.panoply\": {\n \"source\": \"iana\"\n },\n \"application/vnd.paos.xml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patentdive\": {\n \"source\": \"iana\"\n },\n \"application/vnd.patientecommsdoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pawaafile\": {\n \"source\": \"iana\",\n \"extensions\": [\"paw\"]\n },\n \"application/vnd.pcos\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pg.format\": {\n \"source\": \"iana\",\n \"extensions\": [\"str\"]\n },\n \"application/vnd.pg.osasli\": {\n \"source\": \"iana\",\n \"extensions\": [\"ei6\"]\n },\n \"application/vnd.piaccess.application-licence\": {\n \"source\": \"iana\"\n },\n \"application/vnd.picsel\": {\n \"source\": \"iana\",\n \"extensions\": [\"efif\"]\n },\n \"application/vnd.pmi.widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wg\"]\n },\n \"application/vnd.poc.group-advertisement+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.pocketlearn\": {\n \"source\": \"iana\",\n \"extensions\": [\"plf\"]\n },\n \"application/vnd.powerbuilder6\": {\n \"source\": \"iana\",\n \"extensions\": [\"pbd\"]\n },\n \"application/vnd.powerbuilder6-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder7-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75\": {\n \"source\": \"iana\"\n },\n \"application/vnd.powerbuilder75-s\": {\n \"source\": \"iana\"\n },\n \"application/vnd.preminet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.previewsystems.box\": {\n \"source\": \"iana\",\n \"extensions\": [\"box\"]\n },\n \"application/vnd.proteus.magazine\": {\n \"source\": \"iana\",\n \"extensions\": [\"mgz\"]\n },\n \"application/vnd.psfs\": {\n \"source\": \"iana\"\n },\n \"application/vnd.publishare-delta-tree\": {\n \"source\": \"iana\",\n \"extensions\": [\"qps\"]\n },\n \"application/vnd.pvi.ptid1\": {\n \"source\": \"iana\",\n \"extensions\": [\"ptid\"]\n },\n \"application/vnd.pwg-multiplexed\": {\n \"source\": \"iana\"\n },\n \"application/vnd.pwg-xhtml-print+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.qualcomm.brew-app-res\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quarantainenet\": {\n \"source\": \"iana\"\n },\n \"application/vnd.quark.quarkxpress\": {\n \"source\": \"iana\",\n \"extensions\": [\"qxd\",\"qxt\",\"qwd\",\"qwt\",\"qxl\",\"qxb\"]\n },\n \"application/vnd.quobject-quoxdocument\": {\n \"source\": \"iana\"\n },\n \"application/vnd.radisys.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-conn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-audit-stream+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-conf+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-base+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-detect+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-fax-sendrecv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-group+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-speech+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.radisys.msml-dialog-transform+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rainstor.data\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rapid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.rar\": {\n \"source\": \"iana\",\n \"extensions\": [\"rar\"]\n },\n \"application/vnd.realvnc.bed\": {\n \"source\": \"iana\",\n \"extensions\": [\"bed\"]\n },\n \"application/vnd.recordare.musicxml\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxl\"]\n },\n \"application/vnd.recordare.musicxml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"musicxml\"]\n },\n \"application/vnd.renlearn.rlprint\": {\n \"source\": \"iana\"\n },\n \"application/vnd.resilient.logic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.restful+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.rig.cryptonote\": {\n \"source\": \"iana\",\n \"extensions\": [\"cryptonote\"]\n },\n \"application/vnd.rim.cod\": {\n \"source\": \"apache\",\n \"extensions\": [\"cod\"]\n },\n \"application/vnd.rn-realmedia\": {\n \"source\": \"apache\",\n \"extensions\": [\"rm\"]\n },\n \"application/vnd.rn-realmedia-vbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmvb\"]\n },\n \"application/vnd.route66.link66+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"link66\"]\n },\n \"application/vnd.rs-274x\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ruckus.download\": {\n \"source\": \"iana\"\n },\n \"application/vnd.s3sms\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sailingtracker.track\": {\n \"source\": \"iana\",\n \"extensions\": [\"st\"]\n },\n \"application/vnd.sar\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.cid\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sbm.mid2\": {\n \"source\": \"iana\"\n },\n \"application/vnd.scribus\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.3df\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.csf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.doc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.eml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.mht\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.net\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.ppt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.tiff\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealed.xls\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.html\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sealedmedia.softseal.pdf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.seemail\": {\n \"source\": \"iana\",\n \"extensions\": [\"see\"]\n },\n \"application/vnd.seis+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.sema\": {\n \"source\": \"iana\",\n \"extensions\": [\"sema\"]\n },\n \"application/vnd.semd\": {\n \"source\": \"iana\",\n \"extensions\": [\"semd\"]\n },\n \"application/vnd.semf\": {\n \"source\": \"iana\",\n \"extensions\": [\"semf\"]\n },\n \"application/vnd.shade-save-file\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shana.informed.formdata\": {\n \"source\": \"iana\",\n \"extensions\": [\"ifm\"]\n },\n \"application/vnd.shana.informed.formtemplate\": {\n \"source\": \"iana\",\n \"extensions\": [\"itp\"]\n },\n \"application/vnd.shana.informed.interchange\": {\n \"source\": \"iana\",\n \"extensions\": [\"iif\"]\n },\n \"application/vnd.shana.informed.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"ipk\"]\n },\n \"application/vnd.shootproof+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shopkick+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.shp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.shx\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sigrok.session\": {\n \"source\": \"iana\"\n },\n \"application/vnd.simtech-mindmapper\": {\n \"source\": \"iana\",\n \"extensions\": [\"twd\",\"twds\"]\n },\n \"application/vnd.siren+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.smaf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmf\"]\n },\n \"application/vnd.smart.notebook\": {\n \"source\": \"iana\"\n },\n \"application/vnd.smart.teacher\": {\n \"source\": \"iana\",\n \"extensions\": [\"teacher\"]\n },\n \"application/vnd.snesdev-page-table\": {\n \"source\": \"iana\"\n },\n \"application/vnd.software602.filler.form+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"fo\"]\n },\n \"application/vnd.software602.filler.form-xml-zip\": {\n \"source\": \"iana\"\n },\n \"application/vnd.solent.sdkm+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"sdkm\",\"sdkd\"]\n },\n \"application/vnd.spotfire.dxp\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxp\"]\n },\n \"application/vnd.spotfire.sfs\": {\n \"source\": \"iana\",\n \"extensions\": [\"sfs\"]\n },\n \"application/vnd.sqlite3\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-cod\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-dtf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sss-ntf\": {\n \"source\": \"iana\"\n },\n \"application/vnd.stardivision.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdc\"]\n },\n \"application/vnd.stardivision.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sda\"]\n },\n \"application/vnd.stardivision.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdd\"]\n },\n \"application/vnd.stardivision.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"smf\"]\n },\n \"application/vnd.stardivision.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sdw\",\"vor\"]\n },\n \"application/vnd.stardivision.writer-global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgl\"]\n },\n \"application/vnd.stepmania.package\": {\n \"source\": \"iana\",\n \"extensions\": [\"smzip\"]\n },\n \"application/vnd.stepmania.stepchart\": {\n \"source\": \"iana\",\n \"extensions\": [\"sm\"]\n },\n \"application/vnd.street-stream\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sun.wadl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wadl\"]\n },\n \"application/vnd.sun.xml.calc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxc\"]\n },\n \"application/vnd.sun.xml.calc.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stc\"]\n },\n \"application/vnd.sun.xml.draw\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxd\"]\n },\n \"application/vnd.sun.xml.draw.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"std\"]\n },\n \"application/vnd.sun.xml.impress\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxi\"]\n },\n \"application/vnd.sun.xml.impress.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"sti\"]\n },\n \"application/vnd.sun.xml.math\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxm\"]\n },\n \"application/vnd.sun.xml.writer\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxw\"]\n },\n \"application/vnd.sun.xml.writer.global\": {\n \"source\": \"apache\",\n \"extensions\": [\"sxg\"]\n },\n \"application/vnd.sun.xml.writer.template\": {\n \"source\": \"apache\",\n \"extensions\": [\"stw\"]\n },\n \"application/vnd.sus-calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"sus\",\"susp\"]\n },\n \"application/vnd.svd\": {\n \"source\": \"iana\",\n \"extensions\": [\"svd\"]\n },\n \"application/vnd.swiftview-ics\": {\n \"source\": \"iana\"\n },\n \"application/vnd.sycle+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.syft+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.symbian.install\": {\n \"source\": \"apache\",\n \"extensions\": [\"sis\",\"sisx\"]\n },\n \"application/vnd.syncml+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xsm\"]\n },\n \"application/vnd.syncml.dm+wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"bdm\"]\n },\n \"application/vnd.syncml.dm+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"xdm\"]\n },\n \"application/vnd.syncml.dm.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmddf+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"ddf\"]\n },\n \"application/vnd.syncml.dmtnds+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.syncml.dmtnds+xml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true\n },\n \"application/vnd.syncml.ds.notification\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tableschema+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tao.intent-module-archive\": {\n \"source\": \"iana\",\n \"extensions\": [\"tao\"]\n },\n \"application/vnd.tcpdump.pcap\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcap\",\"cap\",\"dmp\"]\n },\n \"application/vnd.think-cell.ppttc+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tmd.mediaflex.api+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.tml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.tmobile-livetv\": {\n \"source\": \"iana\",\n \"extensions\": [\"tmo\"]\n },\n \"application/vnd.tri.onesource\": {\n \"source\": \"iana\"\n },\n \"application/vnd.trid.tpt\": {\n \"source\": \"iana\",\n \"extensions\": [\"tpt\"]\n },\n \"application/vnd.triscape.mxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxs\"]\n },\n \"application/vnd.trueapp\": {\n \"source\": \"iana\",\n \"extensions\": [\"tra\"]\n },\n \"application/vnd.truedoc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ubisoft.webplayer\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ufdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"ufd\",\"ufdl\"]\n },\n \"application/vnd.uiq.theme\": {\n \"source\": \"iana\",\n \"extensions\": [\"utz\"]\n },\n \"application/vnd.umajin\": {\n \"source\": \"iana\",\n \"extensions\": [\"umj\"]\n },\n \"application/vnd.unity\": {\n \"source\": \"iana\",\n \"extensions\": [\"unityweb\"]\n },\n \"application/vnd.uoml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uoml\"]\n },\n \"application/vnd.uplanet.alert\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.alert-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.bearer-choice-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.cacheop-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.channel-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.list-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.listcmd-wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uplanet.signal\": {\n \"source\": \"iana\"\n },\n \"application/vnd.uri-map\": {\n \"source\": \"iana\"\n },\n \"application/vnd.valve.source.material\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"vcx\"]\n },\n \"application/vnd.vd-study\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vectorworks\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vel+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.verimatrix.vcas\": {\n \"source\": \"iana\"\n },\n \"application/vnd.veritone.aion+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.veryant.thin\": {\n \"source\": \"iana\"\n },\n \"application/vnd.ves.encrypted\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vidsoft.vidconference\": {\n \"source\": \"iana\"\n },\n \"application/vnd.visio\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsd\",\"vst\",\"vss\",\"vsw\"]\n },\n \"application/vnd.visionary\": {\n \"source\": \"iana\",\n \"extensions\": [\"vis\"]\n },\n \"application/vnd.vividence.scriptfile\": {\n \"source\": \"iana\"\n },\n \"application/vnd.vsf\": {\n \"source\": \"iana\",\n \"extensions\": [\"vsf\"]\n },\n \"application/vnd.wap.sic\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.slc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wap.wbxml\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"wbxml\"]\n },\n \"application/vnd.wap.wmlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlc\"]\n },\n \"application/vnd.wap.wmlscriptc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmlsc\"]\n },\n \"application/vnd.webturbo\": {\n \"source\": \"iana\",\n \"extensions\": [\"wtb\"]\n },\n \"application/vnd.wfa.dpp\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.p2p\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wfa.wsc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.windows.devicepairing\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmc\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wmf.bootstrap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.mathematica.package\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wolfram.player\": {\n \"source\": \"iana\",\n \"extensions\": [\"nbp\"]\n },\n \"application/vnd.wordperfect\": {\n \"source\": \"iana\",\n \"extensions\": [\"wpd\"]\n },\n \"application/vnd.wqd\": {\n \"source\": \"iana\",\n \"extensions\": [\"wqd\"]\n },\n \"application/vnd.wrq-hp3000-labelled\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wt.stf\": {\n \"source\": \"iana\",\n \"extensions\": [\"stf\"]\n },\n \"application/vnd.wv.csp+wbxml\": {\n \"source\": \"iana\"\n },\n \"application/vnd.wv.csp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.wv.ssp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xacml+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xara\": {\n \"source\": \"iana\",\n \"extensions\": [\"xar\"]\n },\n \"application/vnd.xfdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"xfdl\"]\n },\n \"application/vnd.xfdl.webform\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmi+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vnd.xmpie.cpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.dpkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.plan\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.ppkg\": {\n \"source\": \"iana\"\n },\n \"application/vnd.xmpie.xlim\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.hv-dic\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvd\"]\n },\n \"application/vnd.yamaha.hv-script\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvs\"]\n },\n \"application/vnd.yamaha.hv-voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"hvp\"]\n },\n \"application/vnd.yamaha.openscoreformat\": {\n \"source\": \"iana\",\n \"extensions\": [\"osf\"]\n },\n \"application/vnd.yamaha.openscoreformat.osfpvg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"osfpvg\"]\n },\n \"application/vnd.yamaha.remote-setup\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.smaf-audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"saf\"]\n },\n \"application/vnd.yamaha.smaf-phrase\": {\n \"source\": \"iana\",\n \"extensions\": [\"spf\"]\n },\n \"application/vnd.yamaha.through-ngn\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yamaha.tunnel-udpencap\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yaoweme\": {\n \"source\": \"iana\"\n },\n \"application/vnd.yellowriver-custom-menu\": {\n \"source\": \"iana\",\n \"extensions\": [\"cmp\"]\n },\n \"application/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"application/vnd.zul\": {\n \"source\": \"iana\",\n \"extensions\": [\"zir\",\"zirz\"]\n },\n \"application/vnd.zzazz.deck+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"zaz\"]\n },\n \"application/voicexml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vxml\"]\n },\n \"application/voucher-cms+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/vq-rtcpxr\": {\n \"source\": \"iana\"\n },\n \"application/wasm\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wasm\"]\n },\n \"application/watcherinfo+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wif\"]\n },\n \"application/webpush-options+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/whoispp-query\": {\n \"source\": \"iana\"\n },\n \"application/whoispp-response\": {\n \"source\": \"iana\"\n },\n \"application/widget\": {\n \"source\": \"iana\",\n \"extensions\": [\"wgt\"]\n },\n \"application/winhlp\": {\n \"source\": \"apache\",\n \"extensions\": [\"hlp\"]\n },\n \"application/wita\": {\n \"source\": \"iana\"\n },\n \"application/wordperfect5.1\": {\n \"source\": \"iana\"\n },\n \"application/wsdl+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wsdl\"]\n },\n \"application/wspolicy+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"wspolicy\"]\n },\n \"application/x-7z-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"7z\"]\n },\n \"application/x-abiword\": {\n \"source\": \"apache\",\n \"extensions\": [\"abw\"]\n },\n \"application/x-ace-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"ace\"]\n },\n \"application/x-amf\": {\n \"source\": \"apache\"\n },\n \"application/x-apple-diskimage\": {\n \"source\": \"apache\",\n \"extensions\": [\"dmg\"]\n },\n \"application/x-arj\": {\n \"compressible\": false,\n \"extensions\": [\"arj\"]\n },\n \"application/x-authorware-bin\": {\n \"source\": \"apache\",\n \"extensions\": [\"aab\",\"x32\",\"u32\",\"vox\"]\n },\n \"application/x-authorware-map\": {\n \"source\": \"apache\",\n \"extensions\": [\"aam\"]\n },\n \"application/x-authorware-seg\": {\n \"source\": \"apache\",\n \"extensions\": [\"aas\"]\n },\n \"application/x-bcpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"bcpio\"]\n },\n \"application/x-bdoc\": {\n \"compressible\": false,\n \"extensions\": [\"bdoc\"]\n },\n \"application/x-bittorrent\": {\n \"source\": \"apache\",\n \"extensions\": [\"torrent\"]\n },\n \"application/x-blorb\": {\n \"source\": \"apache\",\n \"extensions\": [\"blb\",\"blorb\"]\n },\n \"application/x-bzip\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz\"]\n },\n \"application/x-bzip2\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"bz2\",\"boz\"]\n },\n \"application/x-cbr\": {\n \"source\": \"apache\",\n \"extensions\": [\"cbr\",\"cba\",\"cbt\",\"cbz\",\"cb7\"]\n },\n \"application/x-cdlink\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcd\"]\n },\n \"application/x-cfs-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"cfs\"]\n },\n \"application/x-chat\": {\n \"source\": \"apache\",\n \"extensions\": [\"chat\"]\n },\n \"application/x-chess-pgn\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgn\"]\n },\n \"application/x-chrome-extension\": {\n \"extensions\": [\"crx\"]\n },\n \"application/x-cocoa\": {\n \"source\": \"nginx\",\n \"extensions\": [\"cco\"]\n },\n \"application/x-compress\": {\n \"source\": \"apache\"\n },\n \"application/x-conference\": {\n \"source\": \"apache\",\n \"extensions\": [\"nsc\"]\n },\n \"application/x-cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"cpio\"]\n },\n \"application/x-csh\": {\n \"source\": \"apache\",\n \"extensions\": [\"csh\"]\n },\n \"application/x-deb\": {\n \"compressible\": false\n },\n \"application/x-debian-package\": {\n \"source\": \"apache\",\n \"extensions\": [\"deb\",\"udeb\"]\n },\n \"application/x-dgc-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"dgc\"]\n },\n \"application/x-director\": {\n \"source\": \"apache\",\n \"extensions\": [\"dir\",\"dcr\",\"dxr\",\"cst\",\"cct\",\"cxt\",\"w3d\",\"fgd\",\"swa\"]\n },\n \"application/x-doom\": {\n \"source\": \"apache\",\n \"extensions\": [\"wad\"]\n },\n \"application/x-dtbncx+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ncx\"]\n },\n \"application/x-dtbook+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"dtb\"]\n },\n \"application/x-dtbresource+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"res\"]\n },\n \"application/x-dvi\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"dvi\"]\n },\n \"application/x-envoy\": {\n \"source\": \"apache\",\n \"extensions\": [\"evy\"]\n },\n \"application/x-eva\": {\n \"source\": \"apache\",\n \"extensions\": [\"eva\"]\n },\n \"application/x-font-bdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"bdf\"]\n },\n \"application/x-font-dos\": {\n \"source\": \"apache\"\n },\n \"application/x-font-framemaker\": {\n \"source\": \"apache\"\n },\n \"application/x-font-ghostscript\": {\n \"source\": \"apache\",\n \"extensions\": [\"gsf\"]\n },\n \"application/x-font-libgrx\": {\n \"source\": \"apache\"\n },\n \"application/x-font-linux-psf\": {\n \"source\": \"apache\",\n \"extensions\": [\"psf\"]\n },\n \"application/x-font-pcf\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcf\"]\n },\n \"application/x-font-snf\": {\n \"source\": \"apache\",\n \"extensions\": [\"snf\"]\n },\n \"application/x-font-speedo\": {\n \"source\": \"apache\"\n },\n \"application/x-font-sunos-news\": {\n \"source\": \"apache\"\n },\n \"application/x-font-type1\": {\n \"source\": \"apache\",\n \"extensions\": [\"pfa\",\"pfb\",\"pfm\",\"afm\"]\n },\n \"application/x-font-vfont\": {\n \"source\": \"apache\"\n },\n \"application/x-freearc\": {\n \"source\": \"apache\",\n \"extensions\": [\"arc\"]\n },\n \"application/x-futuresplash\": {\n \"source\": \"apache\",\n \"extensions\": [\"spl\"]\n },\n \"application/x-gca-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"gca\"]\n },\n \"application/x-glulx\": {\n \"source\": \"apache\",\n \"extensions\": [\"ulx\"]\n },\n \"application/x-gnumeric\": {\n \"source\": \"apache\",\n \"extensions\": [\"gnumeric\"]\n },\n \"application/x-gramps-xml\": {\n \"source\": \"apache\",\n \"extensions\": [\"gramps\"]\n },\n \"application/x-gtar\": {\n \"source\": \"apache\",\n \"extensions\": [\"gtar\"]\n },\n \"application/x-gzip\": {\n \"source\": \"apache\"\n },\n \"application/x-hdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"hdf\"]\n },\n \"application/x-httpd-php\": {\n \"compressible\": true,\n \"extensions\": [\"php\"]\n },\n \"application/x-install-instructions\": {\n \"source\": \"apache\",\n \"extensions\": [\"install\"]\n },\n \"application/x-iso9660-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"iso\"]\n },\n \"application/x-iwork-keynote-sffkey\": {\n \"extensions\": [\"key\"]\n },\n \"application/x-iwork-numbers-sffnumbers\": {\n \"extensions\": [\"numbers\"]\n },\n \"application/x-iwork-pages-sffpages\": {\n \"extensions\": [\"pages\"]\n },\n \"application/x-java-archive-diff\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jardiff\"]\n },\n \"application/x-java-jnlp-file\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"jnlp\"]\n },\n \"application/x-javascript\": {\n \"compressible\": true\n },\n \"application/x-keepass2\": {\n \"extensions\": [\"kdbx\"]\n },\n \"application/x-latex\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"latex\"]\n },\n \"application/x-lua-bytecode\": {\n \"extensions\": [\"luac\"]\n },\n \"application/x-lzh-compressed\": {\n \"source\": \"apache\",\n \"extensions\": [\"lzh\",\"lha\"]\n },\n \"application/x-makeself\": {\n \"source\": \"nginx\",\n \"extensions\": [\"run\"]\n },\n \"application/x-mie\": {\n \"source\": \"apache\",\n \"extensions\": [\"mie\"]\n },\n \"application/x-mobipocket-ebook\": {\n \"source\": \"apache\",\n \"extensions\": [\"prc\",\"mobi\"]\n },\n \"application/x-mpegurl\": {\n \"compressible\": false\n },\n \"application/x-ms-application\": {\n \"source\": \"apache\",\n \"extensions\": [\"application\"]\n },\n \"application/x-ms-shortcut\": {\n \"source\": \"apache\",\n \"extensions\": [\"lnk\"]\n },\n \"application/x-ms-wmd\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmd\"]\n },\n \"application/x-ms-wmz\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmz\"]\n },\n \"application/x-ms-xbap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbap\"]\n },\n \"application/x-msaccess\": {\n \"source\": \"apache\",\n \"extensions\": [\"mdb\"]\n },\n \"application/x-msbinder\": {\n \"source\": \"apache\",\n \"extensions\": [\"obd\"]\n },\n \"application/x-mscardfile\": {\n \"source\": \"apache\",\n \"extensions\": [\"crd\"]\n },\n \"application/x-msclip\": {\n \"source\": \"apache\",\n \"extensions\": [\"clp\"]\n },\n \"application/x-msdos-program\": {\n \"extensions\": [\"exe\"]\n },\n \"application/x-msdownload\": {\n \"source\": \"apache\",\n \"extensions\": [\"exe\",\"dll\",\"com\",\"bat\",\"msi\"]\n },\n \"application/x-msmediaview\": {\n \"source\": \"apache\",\n \"extensions\": [\"mvb\",\"m13\",\"m14\"]\n },\n \"application/x-msmetafile\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmf\",\"wmz\",\"emf\",\"emz\"]\n },\n \"application/x-msmoney\": {\n \"source\": \"apache\",\n \"extensions\": [\"mny\"]\n },\n \"application/x-mspublisher\": {\n \"source\": \"apache\",\n \"extensions\": [\"pub\"]\n },\n \"application/x-msschedule\": {\n \"source\": \"apache\",\n \"extensions\": [\"scd\"]\n },\n \"application/x-msterminal\": {\n \"source\": \"apache\",\n \"extensions\": [\"trm\"]\n },\n \"application/x-mswrite\": {\n \"source\": \"apache\",\n \"extensions\": [\"wri\"]\n },\n \"application/x-netcdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"nc\",\"cdf\"]\n },\n \"application/x-ns-proxy-autoconfig\": {\n \"compressible\": true,\n \"extensions\": [\"pac\"]\n },\n \"application/x-nzb\": {\n \"source\": \"apache\",\n \"extensions\": [\"nzb\"]\n },\n \"application/x-perl\": {\n \"source\": \"nginx\",\n \"extensions\": [\"pl\",\"pm\"]\n },\n \"application/x-pilot\": {\n \"source\": \"nginx\",\n \"extensions\": [\"prc\",\"pdb\"]\n },\n \"application/x-pkcs12\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"p12\",\"pfx\"]\n },\n \"application/x-pkcs7-certificates\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7b\",\"spc\"]\n },\n \"application/x-pkcs7-certreqresp\": {\n \"source\": \"apache\",\n \"extensions\": [\"p7r\"]\n },\n \"application/x-pki-message\": {\n \"source\": \"iana\"\n },\n \"application/x-rar-compressed\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"rar\"]\n },\n \"application/x-redhat-package-manager\": {\n \"source\": \"nginx\",\n \"extensions\": [\"rpm\"]\n },\n \"application/x-research-info-systems\": {\n \"source\": \"apache\",\n \"extensions\": [\"ris\"]\n },\n \"application/x-sea\": {\n \"source\": \"nginx\",\n \"extensions\": [\"sea\"]\n },\n \"application/x-sh\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"sh\"]\n },\n \"application/x-shar\": {\n \"source\": \"apache\",\n \"extensions\": [\"shar\"]\n },\n \"application/x-shockwave-flash\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"swf\"]\n },\n \"application/x-silverlight-app\": {\n \"source\": \"apache\",\n \"extensions\": [\"xap\"]\n },\n \"application/x-sql\": {\n \"source\": \"apache\",\n \"extensions\": [\"sql\"]\n },\n \"application/x-stuffit\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"sit\"]\n },\n \"application/x-stuffitx\": {\n \"source\": \"apache\",\n \"extensions\": [\"sitx\"]\n },\n \"application/x-subrip\": {\n \"source\": \"apache\",\n \"extensions\": [\"srt\"]\n },\n \"application/x-sv4cpio\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4cpio\"]\n },\n \"application/x-sv4crc\": {\n \"source\": \"apache\",\n \"extensions\": [\"sv4crc\"]\n },\n \"application/x-t3vm-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"t3\"]\n },\n \"application/x-tads\": {\n \"source\": \"apache\",\n \"extensions\": [\"gam\"]\n },\n \"application/x-tar\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"tar\"]\n },\n \"application/x-tcl\": {\n \"source\": \"apache\",\n \"extensions\": [\"tcl\",\"tk\"]\n },\n \"application/x-tex\": {\n \"source\": \"apache\",\n \"extensions\": [\"tex\"]\n },\n \"application/x-tex-tfm\": {\n \"source\": \"apache\",\n \"extensions\": [\"tfm\"]\n },\n \"application/x-texinfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"texinfo\",\"texi\"]\n },\n \"application/x-tgif\": {\n \"source\": \"apache\",\n \"extensions\": [\"obj\"]\n },\n \"application/x-ustar\": {\n \"source\": \"apache\",\n \"extensions\": [\"ustar\"]\n },\n \"application/x-virtualbox-hdd\": {\n \"compressible\": true,\n \"extensions\": [\"hdd\"]\n },\n \"application/x-virtualbox-ova\": {\n \"compressible\": true,\n \"extensions\": [\"ova\"]\n },\n \"application/x-virtualbox-ovf\": {\n \"compressible\": true,\n \"extensions\": [\"ovf\"]\n },\n \"application/x-virtualbox-vbox\": {\n \"compressible\": true,\n \"extensions\": [\"vbox\"]\n },\n \"application/x-virtualbox-vbox-extpack\": {\n \"compressible\": false,\n \"extensions\": [\"vbox-extpack\"]\n },\n \"application/x-virtualbox-vdi\": {\n \"compressible\": true,\n \"extensions\": [\"vdi\"]\n },\n \"application/x-virtualbox-vhd\": {\n \"compressible\": true,\n \"extensions\": [\"vhd\"]\n },\n \"application/x-virtualbox-vmdk\": {\n \"compressible\": true,\n \"extensions\": [\"vmdk\"]\n },\n \"application/x-wais-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"src\"]\n },\n \"application/x-web-app-manifest+json\": {\n \"compressible\": true,\n \"extensions\": [\"webapp\"]\n },\n \"application/x-www-form-urlencoded\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/x-x509-ca-cert\": {\n \"source\": \"iana\",\n \"extensions\": [\"der\",\"crt\",\"pem\"]\n },\n \"application/x-x509-ca-ra-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-x509-next-ca-cert\": {\n \"source\": \"iana\"\n },\n \"application/x-xfig\": {\n \"source\": \"apache\",\n \"extensions\": [\"fig\"]\n },\n \"application/x-xliff+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/x-xpinstall\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"xpi\"]\n },\n \"application/x-xz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xz\"]\n },\n \"application/x-zmachine\": {\n \"source\": \"apache\",\n \"extensions\": [\"z1\",\"z2\",\"z3\",\"z4\",\"z5\",\"z6\",\"z7\",\"z8\"]\n },\n \"application/x400-bp\": {\n \"source\": \"iana\"\n },\n \"application/xacml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xaml+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xaml\"]\n },\n \"application/xcap-att+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xav\"]\n },\n \"application/xcap-caps+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xca\"]\n },\n \"application/xcap-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xdf\"]\n },\n \"application/xcap-el+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xel\"]\n },\n \"application/xcap-error+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcap-ns+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xns\"]\n },\n \"application/xcon-conference-info+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xcon-conference-info-diff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xenc+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xenc\"]\n },\n \"application/xhtml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xhtml\",\"xht\"]\n },\n \"application/xhtml-voice+xml\": {\n \"source\": \"apache\",\n \"compressible\": true\n },\n \"application/xliff+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xlf\"]\n },\n \"application/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\",\"xsl\",\"xsd\",\"rng\"]\n },\n \"application/xml-dtd\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dtd\"]\n },\n \"application/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"application/xml-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xmpp+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/xop+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xop\"]\n },\n \"application/xproc+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xpl\"]\n },\n \"application/xslt+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xsl\",\"xslt\"]\n },\n \"application/xspf+xml\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"xspf\"]\n },\n \"application/xv+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"mxml\",\"xhvml\",\"xvml\",\"xvm\"]\n },\n \"application/yang\": {\n \"source\": \"iana\",\n \"extensions\": [\"yang\"]\n },\n \"application/yang-data+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-data+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+json\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yang-patch+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"application/yin+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"yin\"]\n },\n \"application/zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"zip\"]\n },\n \"application/zlib\": {\n \"source\": \"iana\"\n },\n \"application/zstd\": {\n \"source\": \"iana\"\n },\n \"audio/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/3gpp\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"3gpp\"]\n },\n \"audio/3gpp2\": {\n \"source\": \"iana\"\n },\n \"audio/aac\": {\n \"source\": \"iana\"\n },\n \"audio/ac3\": {\n \"source\": \"iana\"\n },\n \"audio/adpcm\": {\n \"source\": \"apache\",\n \"extensions\": [\"adp\"]\n },\n \"audio/amr\": {\n \"source\": \"iana\",\n \"extensions\": [\"amr\"]\n },\n \"audio/amr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/amr-wb+\": {\n \"source\": \"iana\"\n },\n \"audio/aptx\": {\n \"source\": \"iana\"\n },\n \"audio/asc\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-advanced-lossless\": {\n \"source\": \"iana\"\n },\n \"audio/atrac-x\": {\n \"source\": \"iana\"\n },\n \"audio/atrac3\": {\n \"source\": \"iana\"\n },\n \"audio/basic\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"au\",\"snd\"]\n },\n \"audio/bv16\": {\n \"source\": \"iana\"\n },\n \"audio/bv32\": {\n \"source\": \"iana\"\n },\n \"audio/clearmode\": {\n \"source\": \"iana\"\n },\n \"audio/cn\": {\n \"source\": \"iana\"\n },\n \"audio/dat12\": {\n \"source\": \"iana\"\n },\n \"audio/dls\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es201108\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202050\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202211\": {\n \"source\": \"iana\"\n },\n \"audio/dsr-es202212\": {\n \"source\": \"iana\"\n },\n \"audio/dv\": {\n \"source\": \"iana\"\n },\n \"audio/dvi4\": {\n \"source\": \"iana\"\n },\n \"audio/eac3\": {\n \"source\": \"iana\"\n },\n \"audio/encaprtp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc\": {\n \"source\": \"iana\"\n },\n \"audio/evrc-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/evrc0\": {\n \"source\": \"iana\"\n },\n \"audio/evrc1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcb1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcnw1\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb0\": {\n \"source\": \"iana\"\n },\n \"audio/evrcwb1\": {\n \"source\": \"iana\"\n },\n \"audio/evs\": {\n \"source\": \"iana\"\n },\n \"audio/flexfec\": {\n \"source\": \"iana\"\n },\n \"audio/fwdred\": {\n \"source\": \"iana\"\n },\n \"audio/g711-0\": {\n \"source\": \"iana\"\n },\n \"audio/g719\": {\n \"source\": \"iana\"\n },\n \"audio/g722\": {\n \"source\": \"iana\"\n },\n \"audio/g7221\": {\n \"source\": \"iana\"\n },\n \"audio/g723\": {\n \"source\": \"iana\"\n },\n \"audio/g726-16\": {\n \"source\": \"iana\"\n },\n \"audio/g726-24\": {\n \"source\": \"iana\"\n },\n \"audio/g726-32\": {\n \"source\": \"iana\"\n },\n \"audio/g726-40\": {\n \"source\": \"iana\"\n },\n \"audio/g728\": {\n \"source\": \"iana\"\n },\n \"audio/g729\": {\n \"source\": \"iana\"\n },\n \"audio/g7291\": {\n \"source\": \"iana\"\n },\n \"audio/g729d\": {\n \"source\": \"iana\"\n },\n \"audio/g729e\": {\n \"source\": \"iana\"\n },\n \"audio/gsm\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-efr\": {\n \"source\": \"iana\"\n },\n \"audio/gsm-hr-08\": {\n \"source\": \"iana\"\n },\n \"audio/ilbc\": {\n \"source\": \"iana\"\n },\n \"audio/ip-mr_v2.5\": {\n \"source\": \"iana\"\n },\n \"audio/isac\": {\n \"source\": \"apache\"\n },\n \"audio/l16\": {\n \"source\": \"iana\"\n },\n \"audio/l20\": {\n \"source\": \"iana\"\n },\n \"audio/l24\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/l8\": {\n \"source\": \"iana\"\n },\n \"audio/lpc\": {\n \"source\": \"iana\"\n },\n \"audio/melp\": {\n \"source\": \"iana\"\n },\n \"audio/melp1200\": {\n \"source\": \"iana\"\n },\n \"audio/melp2400\": {\n \"source\": \"iana\"\n },\n \"audio/melp600\": {\n \"source\": \"iana\"\n },\n \"audio/mhas\": {\n \"source\": \"iana\"\n },\n \"audio/midi\": {\n \"source\": \"apache\",\n \"extensions\": [\"mid\",\"midi\",\"kar\",\"rmi\"]\n },\n \"audio/mobile-xmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxmf\"]\n },\n \"audio/mp3\": {\n \"compressible\": false,\n \"extensions\": [\"mp3\"]\n },\n \"audio/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"m4a\",\"mp4a\"]\n },\n \"audio/mp4a-latm\": {\n \"source\": \"iana\"\n },\n \"audio/mpa\": {\n \"source\": \"iana\"\n },\n \"audio/mpa-robust\": {\n \"source\": \"iana\"\n },\n \"audio/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpga\",\"mp2\",\"mp2a\",\"mp3\",\"m2a\",\"m3a\"]\n },\n \"audio/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"audio/musepack\": {\n \"source\": \"apache\"\n },\n \"audio/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"oga\",\"ogg\",\"spx\",\"opus\"]\n },\n \"audio/opus\": {\n \"source\": \"iana\"\n },\n \"audio/parityfec\": {\n \"source\": \"iana\"\n },\n \"audio/pcma\": {\n \"source\": \"iana\"\n },\n \"audio/pcma-wb\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu\": {\n \"source\": \"iana\"\n },\n \"audio/pcmu-wb\": {\n \"source\": \"iana\"\n },\n \"audio/prs.sid\": {\n \"source\": \"iana\"\n },\n \"audio/qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/raptorfec\": {\n \"source\": \"iana\"\n },\n \"audio/red\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"audio/rtp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/rtploopback\": {\n \"source\": \"iana\"\n },\n \"audio/rtx\": {\n \"source\": \"iana\"\n },\n \"audio/s3m\": {\n \"source\": \"apache\",\n \"extensions\": [\"s3m\"]\n },\n \"audio/scip\": {\n \"source\": \"iana\"\n },\n \"audio/silk\": {\n \"source\": \"apache\",\n \"extensions\": [\"sil\"]\n },\n \"audio/smv\": {\n \"source\": \"iana\"\n },\n \"audio/smv-qcp\": {\n \"source\": \"iana\"\n },\n \"audio/smv0\": {\n \"source\": \"iana\"\n },\n \"audio/sofa\": {\n \"source\": \"iana\"\n },\n \"audio/sp-midi\": {\n \"source\": \"iana\"\n },\n \"audio/speex\": {\n \"source\": \"iana\"\n },\n \"audio/t140c\": {\n \"source\": \"iana\"\n },\n \"audio/t38\": {\n \"source\": \"iana\"\n },\n \"audio/telephone-event\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp\": {\n \"source\": \"iana\"\n },\n \"audio/tetra_acelp_bb\": {\n \"source\": \"iana\"\n },\n \"audio/tone\": {\n \"source\": \"iana\"\n },\n \"audio/tsvcis\": {\n \"source\": \"iana\"\n },\n \"audio/uemclip\": {\n \"source\": \"iana\"\n },\n \"audio/ulpfec\": {\n \"source\": \"iana\"\n },\n \"audio/usac\": {\n \"source\": \"iana\"\n },\n \"audio/vdvi\": {\n \"source\": \"iana\"\n },\n \"audio/vmr-wb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.3gpp.iufp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.4sb\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.audiokoz\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.celp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cisco.nse\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cmles.radio-events\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.anp1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.cns.inf1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dece.audio\": {\n \"source\": \"iana\",\n \"extensions\": [\"uva\",\"uvva\"]\n },\n \"audio/vnd.digital-winds\": {\n \"source\": \"iana\",\n \"extensions\": [\"eol\"]\n },\n \"audio/vnd.dlna.adts\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.heaac.2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mlp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.mps\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2x\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pl2z\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dolby.pulse.1\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dra\": {\n \"source\": \"iana\",\n \"extensions\": [\"dra\"]\n },\n \"audio/vnd.dts\": {\n \"source\": \"iana\",\n \"extensions\": [\"dts\"]\n },\n \"audio/vnd.dts.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"dtshd\"]\n },\n \"audio/vnd.dts.uhd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.dvb.file\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.everad.plj\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.hns.audio\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.lucent.voice\": {\n \"source\": \"iana\",\n \"extensions\": [\"lvp\"]\n },\n \"audio/vnd.ms-playready.media.pya\": {\n \"source\": \"iana\",\n \"extensions\": [\"pya\"]\n },\n \"audio/vnd.nokia.mobile-xmf\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nortel.vbk\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.nuera.ecelp4800\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp4800\"]\n },\n \"audio/vnd.nuera.ecelp7470\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp7470\"]\n },\n \"audio/vnd.nuera.ecelp9600\": {\n \"source\": \"iana\",\n \"extensions\": [\"ecelp9600\"]\n },\n \"audio/vnd.octel.sbc\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.presonus.multitrack\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.qcelp\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rhetorex.32kadpcm\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.rip\": {\n \"source\": \"iana\",\n \"extensions\": [\"rip\"]\n },\n \"audio/vnd.rn-realaudio\": {\n \"compressible\": false\n },\n \"audio/vnd.sealedmedia.softseal.mpeg\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.vmx.cvsd\": {\n \"source\": \"iana\"\n },\n \"audio/vnd.wave\": {\n \"compressible\": false\n },\n \"audio/vorbis\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"audio/vorbis-config\": {\n \"source\": \"iana\"\n },\n \"audio/wav\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/wave\": {\n \"compressible\": false,\n \"extensions\": [\"wav\"]\n },\n \"audio/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"weba\"]\n },\n \"audio/x-aac\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"aac\"]\n },\n \"audio/x-aiff\": {\n \"source\": \"apache\",\n \"extensions\": [\"aif\",\"aiff\",\"aifc\"]\n },\n \"audio/x-caf\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"caf\"]\n },\n \"audio/x-flac\": {\n \"source\": \"apache\",\n \"extensions\": [\"flac\"]\n },\n \"audio/x-m4a\": {\n \"source\": \"nginx\",\n \"extensions\": [\"m4a\"]\n },\n \"audio/x-matroska\": {\n \"source\": \"apache\",\n \"extensions\": [\"mka\"]\n },\n \"audio/x-mpegurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"m3u\"]\n },\n \"audio/x-ms-wax\": {\n \"source\": \"apache\",\n \"extensions\": [\"wax\"]\n },\n \"audio/x-ms-wma\": {\n \"source\": \"apache\",\n \"extensions\": [\"wma\"]\n },\n \"audio/x-pn-realaudio\": {\n \"source\": \"apache\",\n \"extensions\": [\"ram\",\"ra\"]\n },\n \"audio/x-pn-realaudio-plugin\": {\n \"source\": \"apache\",\n \"extensions\": [\"rmp\"]\n },\n \"audio/x-realaudio\": {\n \"source\": \"nginx\",\n \"extensions\": [\"ra\"]\n },\n \"audio/x-tta\": {\n \"source\": \"apache\"\n },\n \"audio/x-wav\": {\n \"source\": \"apache\",\n \"extensions\": [\"wav\"]\n },\n \"audio/xm\": {\n \"source\": \"apache\",\n \"extensions\": [\"xm\"]\n },\n \"chemical/x-cdx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cdx\"]\n },\n \"chemical/x-cif\": {\n \"source\": \"apache\",\n \"extensions\": [\"cif\"]\n },\n \"chemical/x-cmdf\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmdf\"]\n },\n \"chemical/x-cml\": {\n \"source\": \"apache\",\n \"extensions\": [\"cml\"]\n },\n \"chemical/x-csml\": {\n \"source\": \"apache\",\n \"extensions\": [\"csml\"]\n },\n \"chemical/x-pdb\": {\n \"source\": \"apache\"\n },\n \"chemical/x-xyz\": {\n \"source\": \"apache\",\n \"extensions\": [\"xyz\"]\n },\n \"font/collection\": {\n \"source\": \"iana\",\n \"extensions\": [\"ttc\"]\n },\n \"font/otf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"otf\"]\n },\n \"font/sfnt\": {\n \"source\": \"iana\"\n },\n \"font/ttf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ttf\"]\n },\n \"font/woff\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff\"]\n },\n \"font/woff2\": {\n \"source\": \"iana\",\n \"extensions\": [\"woff2\"]\n },\n \"image/aces\": {\n \"source\": \"iana\",\n \"extensions\": [\"exr\"]\n },\n \"image/apng\": {\n \"compressible\": false,\n \"extensions\": [\"apng\"]\n },\n \"image/avci\": {\n \"source\": \"iana\",\n \"extensions\": [\"avci\"]\n },\n \"image/avcs\": {\n \"source\": \"iana\",\n \"extensions\": [\"avcs\"]\n },\n \"image/avif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"avif\"]\n },\n \"image/bmp\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/cgm\": {\n \"source\": \"iana\",\n \"extensions\": [\"cgm\"]\n },\n \"image/dicom-rle\": {\n \"source\": \"iana\",\n \"extensions\": [\"drle\"]\n },\n \"image/emf\": {\n \"source\": \"iana\",\n \"extensions\": [\"emf\"]\n },\n \"image/fits\": {\n \"source\": \"iana\",\n \"extensions\": [\"fits\"]\n },\n \"image/g3fax\": {\n \"source\": \"iana\",\n \"extensions\": [\"g3\"]\n },\n \"image/gif\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"gif\"]\n },\n \"image/heic\": {\n \"source\": \"iana\",\n \"extensions\": [\"heic\"]\n },\n \"image/heic-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heics\"]\n },\n \"image/heif\": {\n \"source\": \"iana\",\n \"extensions\": [\"heif\"]\n },\n \"image/heif-sequence\": {\n \"source\": \"iana\",\n \"extensions\": [\"heifs\"]\n },\n \"image/hej2k\": {\n \"source\": \"iana\",\n \"extensions\": [\"hej2\"]\n },\n \"image/hsj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"hsj2\"]\n },\n \"image/ief\": {\n \"source\": \"iana\",\n \"extensions\": [\"ief\"]\n },\n \"image/jls\": {\n \"source\": \"iana\",\n \"extensions\": [\"jls\"]\n },\n \"image/jp2\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jp2\",\"jpg2\"]\n },\n \"image/jpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpeg\",\"jpg\",\"jpe\"]\n },\n \"image/jph\": {\n \"source\": \"iana\",\n \"extensions\": [\"jph\"]\n },\n \"image/jphc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jhc\"]\n },\n \"image/jpm\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpm\"]\n },\n \"image/jpx\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"jpx\",\"jpf\"]\n },\n \"image/jxr\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxr\"]\n },\n \"image/jxra\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxra\"]\n },\n \"image/jxrs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxrs\"]\n },\n \"image/jxs\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxs\"]\n },\n \"image/jxsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsc\"]\n },\n \"image/jxsi\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxsi\"]\n },\n \"image/jxss\": {\n \"source\": \"iana\",\n \"extensions\": [\"jxss\"]\n },\n \"image/ktx\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx\"]\n },\n \"image/ktx2\": {\n \"source\": \"iana\",\n \"extensions\": [\"ktx2\"]\n },\n \"image/naplps\": {\n \"source\": \"iana\"\n },\n \"image/pjpeg\": {\n \"compressible\": false\n },\n \"image/png\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"png\"]\n },\n \"image/prs.btif\": {\n \"source\": \"iana\",\n \"extensions\": [\"btif\"]\n },\n \"image/prs.pti\": {\n \"source\": \"iana\",\n \"extensions\": [\"pti\"]\n },\n \"image/pwg-raster\": {\n \"source\": \"iana\"\n },\n \"image/sgi\": {\n \"source\": \"apache\",\n \"extensions\": [\"sgi\"]\n },\n \"image/svg+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"svg\",\"svgz\"]\n },\n \"image/t38\": {\n \"source\": \"iana\",\n \"extensions\": [\"t38\"]\n },\n \"image/tiff\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"tif\",\"tiff\"]\n },\n \"image/tiff-fx\": {\n \"source\": \"iana\",\n \"extensions\": [\"tfx\"]\n },\n \"image/vnd.adobe.photoshop\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"psd\"]\n },\n \"image/vnd.airzip.accelerator.azv\": {\n \"source\": \"iana\",\n \"extensions\": [\"azv\"]\n },\n \"image/vnd.cns.inf2\": {\n \"source\": \"iana\"\n },\n \"image/vnd.dece.graphic\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvi\",\"uvvi\",\"uvg\",\"uvvg\"]\n },\n \"image/vnd.djvu\": {\n \"source\": \"iana\",\n \"extensions\": [\"djvu\",\"djv\"]\n },\n \"image/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"image/vnd.dwg\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwg\"]\n },\n \"image/vnd.dxf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dxf\"]\n },\n \"image/vnd.fastbidsheet\": {\n \"source\": \"iana\",\n \"extensions\": [\"fbs\"]\n },\n \"image/vnd.fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"fpx\"]\n },\n \"image/vnd.fst\": {\n \"source\": \"iana\",\n \"extensions\": [\"fst\"]\n },\n \"image/vnd.fujixerox.edmics-mmr\": {\n \"source\": \"iana\",\n \"extensions\": [\"mmr\"]\n },\n \"image/vnd.fujixerox.edmics-rlc\": {\n \"source\": \"iana\",\n \"extensions\": [\"rlc\"]\n },\n \"image/vnd.globalgraphics.pgb\": {\n \"source\": \"iana\"\n },\n \"image/vnd.microsoft.icon\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/vnd.mix\": {\n \"source\": \"iana\"\n },\n \"image/vnd.mozilla.apng\": {\n \"source\": \"iana\"\n },\n \"image/vnd.ms-dds\": {\n \"compressible\": true,\n \"extensions\": [\"dds\"]\n },\n \"image/vnd.ms-modi\": {\n \"source\": \"iana\",\n \"extensions\": [\"mdi\"]\n },\n \"image/vnd.ms-photo\": {\n \"source\": \"apache\",\n \"extensions\": [\"wdp\"]\n },\n \"image/vnd.net-fpx\": {\n \"source\": \"iana\",\n \"extensions\": [\"npx\"]\n },\n \"image/vnd.pco.b16\": {\n \"source\": \"iana\",\n \"extensions\": [\"b16\"]\n },\n \"image/vnd.radiance\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealed.png\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.gif\": {\n \"source\": \"iana\"\n },\n \"image/vnd.sealedmedia.softseal.jpg\": {\n \"source\": \"iana\"\n },\n \"image/vnd.svf\": {\n \"source\": \"iana\"\n },\n \"image/vnd.tencent.tap\": {\n \"source\": \"iana\",\n \"extensions\": [\"tap\"]\n },\n \"image/vnd.valve.source.texture\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtf\"]\n },\n \"image/vnd.wap.wbmp\": {\n \"source\": \"iana\",\n \"extensions\": [\"wbmp\"]\n },\n \"image/vnd.xiff\": {\n \"source\": \"iana\",\n \"extensions\": [\"xif\"]\n },\n \"image/vnd.zbrush.pcx\": {\n \"source\": \"iana\",\n \"extensions\": [\"pcx\"]\n },\n \"image/webp\": {\n \"source\": \"apache\",\n \"extensions\": [\"webp\"]\n },\n \"image/wmf\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmf\"]\n },\n \"image/x-3ds\": {\n \"source\": \"apache\",\n \"extensions\": [\"3ds\"]\n },\n \"image/x-cmu-raster\": {\n \"source\": \"apache\",\n \"extensions\": [\"ras\"]\n },\n \"image/x-cmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"cmx\"]\n },\n \"image/x-freehand\": {\n \"source\": \"apache\",\n \"extensions\": [\"fh\",\"fhc\",\"fh4\",\"fh5\",\"fh7\"]\n },\n \"image/x-icon\": {\n \"source\": \"apache\",\n \"compressible\": true,\n \"extensions\": [\"ico\"]\n },\n \"image/x-jng\": {\n \"source\": \"nginx\",\n \"extensions\": [\"jng\"]\n },\n \"image/x-mrsid-image\": {\n \"source\": \"apache\",\n \"extensions\": [\"sid\"]\n },\n \"image/x-ms-bmp\": {\n \"source\": \"nginx\",\n \"compressible\": true,\n \"extensions\": [\"bmp\"]\n },\n \"image/x-pcx\": {\n \"source\": \"apache\",\n \"extensions\": [\"pcx\"]\n },\n \"image/x-pict\": {\n \"source\": \"apache\",\n \"extensions\": [\"pic\",\"pct\"]\n },\n \"image/x-portable-anymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pnm\"]\n },\n \"image/x-portable-bitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pbm\"]\n },\n \"image/x-portable-graymap\": {\n \"source\": \"apache\",\n \"extensions\": [\"pgm\"]\n },\n \"image/x-portable-pixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"ppm\"]\n },\n \"image/x-rgb\": {\n \"source\": \"apache\",\n \"extensions\": [\"rgb\"]\n },\n \"image/x-tga\": {\n \"source\": \"apache\",\n \"extensions\": [\"tga\"]\n },\n \"image/x-xbitmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xbm\"]\n },\n \"image/x-xcf\": {\n \"compressible\": false\n },\n \"image/x-xpixmap\": {\n \"source\": \"apache\",\n \"extensions\": [\"xpm\"]\n },\n \"image/x-xwindowdump\": {\n \"source\": \"apache\",\n \"extensions\": [\"xwd\"]\n },\n \"message/cpim\": {\n \"source\": \"iana\"\n },\n \"message/delivery-status\": {\n \"source\": \"iana\"\n },\n \"message/disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\n \"disposition-notification\"\n ]\n },\n \"message/external-body\": {\n \"source\": \"iana\"\n },\n \"message/feedback-report\": {\n \"source\": \"iana\"\n },\n \"message/global\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8msg\"]\n },\n \"message/global-delivery-status\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8dsn\"]\n },\n \"message/global-disposition-notification\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8mdn\"]\n },\n \"message/global-headers\": {\n \"source\": \"iana\",\n \"extensions\": [\"u8hdr\"]\n },\n \"message/http\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/imdn+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"message/news\": {\n \"source\": \"iana\"\n },\n \"message/partial\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"message/rfc822\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"eml\",\"mime\"]\n },\n \"message/s-http\": {\n \"source\": \"iana\"\n },\n \"message/sip\": {\n \"source\": \"iana\"\n },\n \"message/sipfrag\": {\n \"source\": \"iana\"\n },\n \"message/tracking-status\": {\n \"source\": \"iana\"\n },\n \"message/vnd.si.simp\": {\n \"source\": \"iana\"\n },\n \"message/vnd.wfa.wsc\": {\n \"source\": \"iana\",\n \"extensions\": [\"wsc\"]\n },\n \"model/3mf\": {\n \"source\": \"iana\",\n \"extensions\": [\"3mf\"]\n },\n \"model/e57\": {\n \"source\": \"iana\"\n },\n \"model/gltf+json\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"gltf\"]\n },\n \"model/gltf-binary\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"glb\"]\n },\n \"model/iges\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"igs\",\"iges\"]\n },\n \"model/mesh\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"msh\",\"mesh\",\"silo\"]\n },\n \"model/mtl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mtl\"]\n },\n \"model/obj\": {\n \"source\": \"iana\",\n \"extensions\": [\"obj\"]\n },\n \"model/step\": {\n \"source\": \"iana\"\n },\n \"model/step+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"stpx\"]\n },\n \"model/step+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpz\"]\n },\n \"model/step-xml+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"stpxz\"]\n },\n \"model/stl\": {\n \"source\": \"iana\",\n \"extensions\": [\"stl\"]\n },\n \"model/vnd.collada+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"dae\"]\n },\n \"model/vnd.dwf\": {\n \"source\": \"iana\",\n \"extensions\": [\"dwf\"]\n },\n \"model/vnd.flatland.3dml\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gdl\": {\n \"source\": \"iana\",\n \"extensions\": [\"gdl\"]\n },\n \"model/vnd.gs-gdl\": {\n \"source\": \"apache\"\n },\n \"model/vnd.gs.gdl\": {\n \"source\": \"iana\"\n },\n \"model/vnd.gtw\": {\n \"source\": \"iana\",\n \"extensions\": [\"gtw\"]\n },\n \"model/vnd.moml+xml\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"model/vnd.mts\": {\n \"source\": \"iana\",\n \"extensions\": [\"mts\"]\n },\n \"model/vnd.opengex\": {\n \"source\": \"iana\",\n \"extensions\": [\"ogex\"]\n },\n \"model/vnd.parasolid.transmit.binary\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_b\"]\n },\n \"model/vnd.parasolid.transmit.text\": {\n \"source\": \"iana\",\n \"extensions\": [\"x_t\"]\n },\n \"model/vnd.pytha.pyox\": {\n \"source\": \"iana\"\n },\n \"model/vnd.rosette.annotated-data-model\": {\n \"source\": \"iana\"\n },\n \"model/vnd.sap.vds\": {\n \"source\": \"iana\",\n \"extensions\": [\"vds\"]\n },\n \"model/vnd.usdz+zip\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"usdz\"]\n },\n \"model/vnd.valve.source.compiled-map\": {\n \"source\": \"iana\",\n \"extensions\": [\"bsp\"]\n },\n \"model/vnd.vtu\": {\n \"source\": \"iana\",\n \"extensions\": [\"vtu\"]\n },\n \"model/vrml\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"wrl\",\"vrml\"]\n },\n \"model/x3d+binary\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3db\",\"x3dbz\"]\n },\n \"model/x3d+fastinfoset\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3db\"]\n },\n \"model/x3d+vrml\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"x3dv\",\"x3dvz\"]\n },\n \"model/x3d+xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"x3d\",\"x3dz\"]\n },\n \"model/x3d-vrml\": {\n \"source\": \"iana\",\n \"extensions\": [\"x3dv\"]\n },\n \"multipart/alternative\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/appledouble\": {\n \"source\": \"iana\"\n },\n \"multipart/byteranges\": {\n \"source\": \"iana\"\n },\n \"multipart/digest\": {\n \"source\": \"iana\"\n },\n \"multipart/encrypted\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/form-data\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/header-set\": {\n \"source\": \"iana\"\n },\n \"multipart/mixed\": {\n \"source\": \"iana\"\n },\n \"multipart/multilingual\": {\n \"source\": \"iana\"\n },\n \"multipart/parallel\": {\n \"source\": \"iana\"\n },\n \"multipart/related\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/report\": {\n \"source\": \"iana\"\n },\n \"multipart/signed\": {\n \"source\": \"iana\",\n \"compressible\": false\n },\n \"multipart/vnd.bint.med-plus\": {\n \"source\": \"iana\"\n },\n \"multipart/voice-message\": {\n \"source\": \"iana\"\n },\n \"multipart/x-mixed-replace\": {\n \"source\": \"iana\"\n },\n \"text/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"text/cache-manifest\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"appcache\",\"manifest\"]\n },\n \"text/calendar\": {\n \"source\": \"iana\",\n \"extensions\": [\"ics\",\"ifb\"]\n },\n \"text/calender\": {\n \"compressible\": true\n },\n \"text/cmd\": {\n \"compressible\": true\n },\n \"text/coffeescript\": {\n \"extensions\": [\"coffee\",\"litcoffee\"]\n },\n \"text/cql\": {\n \"source\": \"iana\"\n },\n \"text/cql-expression\": {\n \"source\": \"iana\"\n },\n \"text/cql-identifier\": {\n \"source\": \"iana\"\n },\n \"text/css\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"css\"]\n },\n \"text/csv\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"csv\"]\n },\n \"text/csv-schema\": {\n \"source\": \"iana\"\n },\n \"text/directory\": {\n \"source\": \"iana\"\n },\n \"text/dns\": {\n \"source\": \"iana\"\n },\n \"text/ecmascript\": {\n \"source\": \"iana\"\n },\n \"text/encaprtp\": {\n \"source\": \"iana\"\n },\n \"text/enriched\": {\n \"source\": \"iana\"\n },\n \"text/fhirpath\": {\n \"source\": \"iana\"\n },\n \"text/flexfec\": {\n \"source\": \"iana\"\n },\n \"text/fwdred\": {\n \"source\": \"iana\"\n },\n \"text/gff3\": {\n \"source\": \"iana\"\n },\n \"text/grammar-ref-list\": {\n \"source\": \"iana\"\n },\n \"text/html\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"html\",\"htm\",\"shtml\"]\n },\n \"text/jade\": {\n \"extensions\": [\"jade\"]\n },\n \"text/javascript\": {\n \"source\": \"iana\",\n \"compressible\": true\n },\n \"text/jcr-cnd\": {\n \"source\": \"iana\"\n },\n \"text/jsx\": {\n \"compressible\": true,\n \"extensions\": [\"jsx\"]\n },\n \"text/less\": {\n \"compressible\": true,\n \"extensions\": [\"less\"]\n },\n \"text/markdown\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"markdown\",\"md\"]\n },\n \"text/mathml\": {\n \"source\": \"nginx\",\n \"extensions\": [\"mml\"]\n },\n \"text/mdx\": {\n \"compressible\": true,\n \"extensions\": [\"mdx\"]\n },\n \"text/mizar\": {\n \"source\": \"iana\"\n },\n \"text/n3\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"n3\"]\n },\n \"text/parameters\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/parityfec\": {\n \"source\": \"iana\"\n },\n \"text/plain\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"txt\",\"text\",\"conf\",\"def\",\"list\",\"log\",\"in\",\"ini\"]\n },\n \"text/provenance-notation\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/prs.fallenstein.rst\": {\n \"source\": \"iana\"\n },\n \"text/prs.lines.tag\": {\n \"source\": \"iana\",\n \"extensions\": [\"dsc\"]\n },\n \"text/prs.prop.logic\": {\n \"source\": \"iana\"\n },\n \"text/raptorfec\": {\n \"source\": \"iana\"\n },\n \"text/red\": {\n \"source\": \"iana\"\n },\n \"text/rfc822-headers\": {\n \"source\": \"iana\"\n },\n \"text/richtext\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtx\"]\n },\n \"text/rtf\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"rtf\"]\n },\n \"text/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"text/rtploopback\": {\n \"source\": \"iana\"\n },\n \"text/rtx\": {\n \"source\": \"iana\"\n },\n \"text/sgml\": {\n \"source\": \"iana\",\n \"extensions\": [\"sgml\",\"sgm\"]\n },\n \"text/shaclc\": {\n \"source\": \"iana\"\n },\n \"text/shex\": {\n \"source\": \"iana\",\n \"extensions\": [\"shex\"]\n },\n \"text/slim\": {\n \"extensions\": [\"slim\",\"slm\"]\n },\n \"text/spdx\": {\n \"source\": \"iana\",\n \"extensions\": [\"spdx\"]\n },\n \"text/strings\": {\n \"source\": \"iana\"\n },\n \"text/stylus\": {\n \"extensions\": [\"stylus\",\"styl\"]\n },\n \"text/t140\": {\n \"source\": \"iana\"\n },\n \"text/tab-separated-values\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"tsv\"]\n },\n \"text/troff\": {\n \"source\": \"iana\",\n \"extensions\": [\"t\",\"tr\",\"roff\",\"man\",\"me\",\"ms\"]\n },\n \"text/turtle\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"ttl\"]\n },\n \"text/ulpfec\": {\n \"source\": \"iana\"\n },\n \"text/uri-list\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"uri\",\"uris\",\"urls\"]\n },\n \"text/vcard\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"vcard\"]\n },\n \"text/vnd.a\": {\n \"source\": \"iana\"\n },\n \"text/vnd.abc\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ascii-art\": {\n \"source\": \"iana\"\n },\n \"text/vnd.curl\": {\n \"source\": \"iana\",\n \"extensions\": [\"curl\"]\n },\n \"text/vnd.curl.dcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"dcurl\"]\n },\n \"text/vnd.curl.mcurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"mcurl\"]\n },\n \"text/vnd.curl.scurl\": {\n \"source\": \"apache\",\n \"extensions\": [\"scurl\"]\n },\n \"text/vnd.debian.copyright\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.dmclientscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.dvb.subtitle\": {\n \"source\": \"iana\",\n \"extensions\": [\"sub\"]\n },\n \"text/vnd.esmertec.theme-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.familysearch.gedcom\": {\n \"source\": \"iana\",\n \"extensions\": [\"ged\"]\n },\n \"text/vnd.ficlab.flt\": {\n \"source\": \"iana\"\n },\n \"text/vnd.fly\": {\n \"source\": \"iana\",\n \"extensions\": [\"fly\"]\n },\n \"text/vnd.fmi.flexstor\": {\n \"source\": \"iana\",\n \"extensions\": [\"flx\"]\n },\n \"text/vnd.gml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.graphviz\": {\n \"source\": \"iana\",\n \"extensions\": [\"gv\"]\n },\n \"text/vnd.hans\": {\n \"source\": \"iana\"\n },\n \"text/vnd.hgl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.in3d.3dml\": {\n \"source\": \"iana\",\n \"extensions\": [\"3dml\"]\n },\n \"text/vnd.in3d.spot\": {\n \"source\": \"iana\",\n \"extensions\": [\"spot\"]\n },\n \"text/vnd.iptc.newsml\": {\n \"source\": \"iana\"\n },\n \"text/vnd.iptc.nitf\": {\n \"source\": \"iana\"\n },\n \"text/vnd.latex-z\": {\n \"source\": \"iana\"\n },\n \"text/vnd.motorola.reflex\": {\n \"source\": \"iana\"\n },\n \"text/vnd.ms-mediapackage\": {\n \"source\": \"iana\"\n },\n \"text/vnd.net2phone.commcenter.command\": {\n \"source\": \"iana\"\n },\n \"text/vnd.radisys.msml-basic-layout\": {\n \"source\": \"iana\"\n },\n \"text/vnd.senx.warpscript\": {\n \"source\": \"iana\"\n },\n \"text/vnd.si.uricatalogue\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sosi\": {\n \"source\": \"iana\"\n },\n \"text/vnd.sun.j2me.app-descriptor\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"extensions\": [\"jad\"]\n },\n \"text/vnd.trolltech.linguist\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\"\n },\n \"text/vnd.wap.si\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.sl\": {\n \"source\": \"iana\"\n },\n \"text/vnd.wap.wml\": {\n \"source\": \"iana\",\n \"extensions\": [\"wml\"]\n },\n \"text/vnd.wap.wmlscript\": {\n \"source\": \"iana\",\n \"extensions\": [\"wmls\"]\n },\n \"text/vtt\": {\n \"source\": \"iana\",\n \"charset\": \"UTF-8\",\n \"compressible\": true,\n \"extensions\": [\"vtt\"]\n },\n \"text/x-asm\": {\n \"source\": \"apache\",\n \"extensions\": [\"s\",\"asm\"]\n },\n \"text/x-c\": {\n \"source\": \"apache\",\n \"extensions\": [\"c\",\"cc\",\"cxx\",\"cpp\",\"h\",\"hh\",\"dic\"]\n },\n \"text/x-component\": {\n \"source\": \"nginx\",\n \"extensions\": [\"htc\"]\n },\n \"text/x-fortran\": {\n \"source\": \"apache\",\n \"extensions\": [\"f\",\"for\",\"f77\",\"f90\"]\n },\n \"text/x-gwt-rpc\": {\n \"compressible\": true\n },\n \"text/x-handlebars-template\": {\n \"extensions\": [\"hbs\"]\n },\n \"text/x-java-source\": {\n \"source\": \"apache\",\n \"extensions\": [\"java\"]\n },\n \"text/x-jquery-tmpl\": {\n \"compressible\": true\n },\n \"text/x-lua\": {\n \"extensions\": [\"lua\"]\n },\n \"text/x-markdown\": {\n \"compressible\": true,\n \"extensions\": [\"mkd\"]\n },\n \"text/x-nfo\": {\n \"source\": \"apache\",\n \"extensions\": [\"nfo\"]\n },\n \"text/x-opml\": {\n \"source\": \"apache\",\n \"extensions\": [\"opml\"]\n },\n \"text/x-org\": {\n \"compressible\": true,\n \"extensions\": [\"org\"]\n },\n \"text/x-pascal\": {\n \"source\": \"apache\",\n \"extensions\": [\"p\",\"pas\"]\n },\n \"text/x-processing\": {\n \"compressible\": true,\n \"extensions\": [\"pde\"]\n },\n \"text/x-sass\": {\n \"extensions\": [\"sass\"]\n },\n \"text/x-scss\": {\n \"extensions\": [\"scss\"]\n },\n \"text/x-setext\": {\n \"source\": \"apache\",\n \"extensions\": [\"etx\"]\n },\n \"text/x-sfv\": {\n \"source\": \"apache\",\n \"extensions\": [\"sfv\"]\n },\n \"text/x-suse-ymp\": {\n \"compressible\": true,\n \"extensions\": [\"ymp\"]\n },\n \"text/x-uuencode\": {\n \"source\": \"apache\",\n \"extensions\": [\"uu\"]\n },\n \"text/x-vcalendar\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcs\"]\n },\n \"text/x-vcard\": {\n \"source\": \"apache\",\n \"extensions\": [\"vcf\"]\n },\n \"text/xml\": {\n \"source\": \"iana\",\n \"compressible\": true,\n \"extensions\": [\"xml\"]\n },\n \"text/xml-external-parsed-entity\": {\n \"source\": \"iana\"\n },\n \"text/yaml\": {\n \"compressible\": true,\n \"extensions\": [\"yaml\",\"yml\"]\n },\n \"video/1d-interleaved-parityfec\": {\n \"source\": \"iana\"\n },\n \"video/3gpp\": {\n \"source\": \"iana\",\n \"extensions\": [\"3gp\",\"3gpp\"]\n },\n \"video/3gpp-tt\": {\n \"source\": \"iana\"\n },\n \"video/3gpp2\": {\n \"source\": \"iana\",\n \"extensions\": [\"3g2\"]\n },\n \"video/av1\": {\n \"source\": \"iana\"\n },\n \"video/bmpeg\": {\n \"source\": \"iana\"\n },\n \"video/bt656\": {\n \"source\": \"iana\"\n },\n \"video/celb\": {\n \"source\": \"iana\"\n },\n \"video/dv\": {\n \"source\": \"iana\"\n },\n \"video/encaprtp\": {\n \"source\": \"iana\"\n },\n \"video/ffv1\": {\n \"source\": \"iana\"\n },\n \"video/flexfec\": {\n \"source\": \"iana\"\n },\n \"video/h261\": {\n \"source\": \"iana\",\n \"extensions\": [\"h261\"]\n },\n \"video/h263\": {\n \"source\": \"iana\",\n \"extensions\": [\"h263\"]\n },\n \"video/h263-1998\": {\n \"source\": \"iana\"\n },\n \"video/h263-2000\": {\n \"source\": \"iana\"\n },\n \"video/h264\": {\n \"source\": \"iana\",\n \"extensions\": [\"h264\"]\n },\n \"video/h264-rcdo\": {\n \"source\": \"iana\"\n },\n \"video/h264-svc\": {\n \"source\": \"iana\"\n },\n \"video/h265\": {\n \"source\": \"iana\"\n },\n \"video/iso.segment\": {\n \"source\": \"iana\",\n \"extensions\": [\"m4s\"]\n },\n \"video/jpeg\": {\n \"source\": \"iana\",\n \"extensions\": [\"jpgv\"]\n },\n \"video/jpeg2000\": {\n \"source\": \"iana\"\n },\n \"video/jpm\": {\n \"source\": \"apache\",\n \"extensions\": [\"jpm\",\"jpgm\"]\n },\n \"video/jxsv\": {\n \"source\": \"iana\"\n },\n \"video/mj2\": {\n \"source\": \"iana\",\n \"extensions\": [\"mj2\",\"mjp2\"]\n },\n \"video/mp1s\": {\n \"source\": \"iana\"\n },\n \"video/mp2p\": {\n \"source\": \"iana\"\n },\n \"video/mp2t\": {\n \"source\": \"iana\",\n \"extensions\": [\"ts\"]\n },\n \"video/mp4\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mp4\",\"mp4v\",\"mpg4\"]\n },\n \"video/mp4v-es\": {\n \"source\": \"iana\"\n },\n \"video/mpeg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"mpeg\",\"mpg\",\"mpe\",\"m1v\",\"m2v\"]\n },\n \"video/mpeg4-generic\": {\n \"source\": \"iana\"\n },\n \"video/mpv\": {\n \"source\": \"iana\"\n },\n \"video/nv\": {\n \"source\": \"iana\"\n },\n \"video/ogg\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"ogv\"]\n },\n \"video/parityfec\": {\n \"source\": \"iana\"\n },\n \"video/pointer\": {\n \"source\": \"iana\"\n },\n \"video/quicktime\": {\n \"source\": \"iana\",\n \"compressible\": false,\n \"extensions\": [\"qt\",\"mov\"]\n },\n \"video/raptorfec\": {\n \"source\": \"iana\"\n },\n \"video/raw\": {\n \"source\": \"iana\"\n },\n \"video/rtp-enc-aescm128\": {\n \"source\": \"iana\"\n },\n \"video/rtploopback\": {\n \"source\": \"iana\"\n },\n \"video/rtx\": {\n \"source\": \"iana\"\n },\n \"video/scip\": {\n \"source\": \"iana\"\n },\n \"video/smpte291\": {\n \"source\": \"iana\"\n },\n \"video/smpte292m\": {\n \"source\": \"iana\"\n },\n \"video/ulpfec\": {\n \"source\": \"iana\"\n },\n \"video/vc1\": {\n \"source\": \"iana\"\n },\n \"video/vc2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.cctv\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.hd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvh\",\"uvvh\"]\n },\n \"video/vnd.dece.mobile\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvm\",\"uvvm\"]\n },\n \"video/vnd.dece.mp4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dece.pd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvp\",\"uvvp\"]\n },\n \"video/vnd.dece.sd\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvs\",\"uvvs\"]\n },\n \"video/vnd.dece.video\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvv\",\"uvvv\"]\n },\n \"video/vnd.directv.mpeg\": {\n \"source\": \"iana\"\n },\n \"video/vnd.directv.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dlna.mpeg-tts\": {\n \"source\": \"iana\"\n },\n \"video/vnd.dvb.file\": {\n \"source\": \"iana\",\n \"extensions\": [\"dvb\"]\n },\n \"video/vnd.fvt\": {\n \"source\": \"iana\",\n \"extensions\": [\"fvt\"]\n },\n \"video/vnd.hns.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.1dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-1010\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.2dparityfec-2005\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsavc\": {\n \"source\": \"iana\"\n },\n \"video/vnd.iptvforum.ttsmpeg2\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.video\": {\n \"source\": \"iana\"\n },\n \"video/vnd.motorola.videop\": {\n \"source\": \"iana\"\n },\n \"video/vnd.mpegurl\": {\n \"source\": \"iana\",\n \"extensions\": [\"mxu\",\"m4u\"]\n },\n \"video/vnd.ms-playready.media.pyv\": {\n \"source\": \"iana\",\n \"extensions\": [\"pyv\"]\n },\n \"video/vnd.nokia.interleaved-multimedia\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.mp4vr\": {\n \"source\": \"iana\"\n },\n \"video/vnd.nokia.videovoip\": {\n \"source\": \"iana\"\n },\n \"video/vnd.objectvideo\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.bink\": {\n \"source\": \"iana\"\n },\n \"video/vnd.radgamettools.smacker\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg1\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.mpeg4\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealed.swf\": {\n \"source\": \"iana\"\n },\n \"video/vnd.sealedmedia.softseal.mov\": {\n \"source\": \"iana\"\n },\n \"video/vnd.uvvu.mp4\": {\n \"source\": \"iana\",\n \"extensions\": [\"uvu\",\"uvvu\"]\n },\n \"video/vnd.vivo\": {\n \"source\": \"iana\",\n \"extensions\": [\"viv\"]\n },\n \"video/vnd.youtube.yt\": {\n \"source\": \"iana\"\n },\n \"video/vp8\": {\n \"source\": \"iana\"\n },\n \"video/vp9\": {\n \"source\": \"iana\"\n },\n \"video/webm\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"webm\"]\n },\n \"video/x-f4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"f4v\"]\n },\n \"video/x-fli\": {\n \"source\": \"apache\",\n \"extensions\": [\"fli\"]\n },\n \"video/x-flv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"flv\"]\n },\n \"video/x-m4v\": {\n \"source\": \"apache\",\n \"extensions\": [\"m4v\"]\n },\n \"video/x-matroska\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"mkv\",\"mk3d\",\"mks\"]\n },\n \"video/x-mng\": {\n \"source\": \"apache\",\n \"extensions\": [\"mng\"]\n },\n \"video/x-ms-asf\": {\n \"source\": \"apache\",\n \"extensions\": [\"asf\",\"asx\"]\n },\n \"video/x-ms-vob\": {\n \"source\": \"apache\",\n \"extensions\": [\"vob\"]\n },\n \"video/x-ms-wm\": {\n \"source\": \"apache\",\n \"extensions\": [\"wm\"]\n },\n \"video/x-ms-wmv\": {\n \"source\": \"apache\",\n \"compressible\": false,\n \"extensions\": [\"wmv\"]\n },\n \"video/x-ms-wmx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wmx\"]\n },\n \"video/x-ms-wvx\": {\n \"source\": \"apache\",\n \"extensions\": [\"wvx\"]\n },\n \"video/x-msvideo\": {\n \"source\": \"apache\",\n \"extensions\": [\"avi\"]\n },\n \"video/x-sgi-movie\": {\n \"source\": \"apache\",\n \"extensions\": [\"movie\"]\n },\n \"video/x-smv\": {\n \"source\": \"apache\",\n \"extensions\": [\"smv\"]\n },\n \"x-conference/x-cooltalk\": {\n \"source\": \"apache\",\n \"extensions\": [\"ice\"]\n },\n \"x-shader/x-fragment\": {\n \"compressible\": true\n },\n \"x-shader/x-vertex\": {\n \"compressible\": true\n }\n}\n","/*!\n * mime-db\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015-2022 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n/**\n * Module exports.\n */\n\nmodule.exports = require('./db.json')\n","/*!\n * mime-types\n * Copyright(c) 2014 Jonathan Ong\n * Copyright(c) 2015 Douglas Christopher Wilson\n * MIT Licensed\n */\n\n'use strict'\n\n/**\n * Module dependencies.\n * @private\n */\n\nvar db = require('mime-db')\nvar extname = require('path').extname\n\n/**\n * Module variables.\n * @private\n */\n\nvar EXTRACT_TYPE_REGEXP = /^\\s*([^;\\s]*)(?:;|\\s|$)/\nvar TEXT_TYPE_REGEXP = /^text\\//i\n\n/**\n * Module exports.\n * @public\n */\n\nexports.charset = charset\nexports.charsets = { lookup: charset }\nexports.contentType = contentType\nexports.extension = extension\nexports.extensions = Object.create(null)\nexports.lookup = lookup\nexports.types = Object.create(null)\n\n// Populate the extensions/types maps\npopulateMaps(exports.extensions, exports.types)\n\n/**\n * Get the default charset for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction charset (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n var mime = match && db[match[1].toLowerCase()]\n\n if (mime && mime.charset) {\n return mime.charset\n }\n\n // default text/* to utf-8\n if (match && TEXT_TYPE_REGEXP.test(match[1])) {\n return 'UTF-8'\n }\n\n return false\n}\n\n/**\n * Create a full Content-Type header given a MIME type or extension.\n *\n * @param {string} str\n * @return {boolean|string}\n */\n\nfunction contentType (str) {\n // TODO: should this even be in this module?\n if (!str || typeof str !== 'string') {\n return false\n }\n\n var mime = str.indexOf('/') === -1\n ? exports.lookup(str)\n : str\n\n if (!mime) {\n return false\n }\n\n // TODO: use content-type or other module\n if (mime.indexOf('charset') === -1) {\n var charset = exports.charset(mime)\n if (charset) mime += '; charset=' + charset.toLowerCase()\n }\n\n return mime\n}\n\n/**\n * Get the default extension for a MIME type.\n *\n * @param {string} type\n * @return {boolean|string}\n */\n\nfunction extension (type) {\n if (!type || typeof type !== 'string') {\n return false\n }\n\n // TODO: use media-typer\n var match = EXTRACT_TYPE_REGEXP.exec(type)\n\n // get extensions\n var exts = match && exports.extensions[match[1].toLowerCase()]\n\n if (!exts || !exts.length) {\n return false\n }\n\n return exts[0]\n}\n\n/**\n * Lookup the MIME type for a file path/extension.\n *\n * @param {string} path\n * @return {boolean|string}\n */\n\nfunction lookup (path) {\n if (!path || typeof path !== 'string') {\n return false\n }\n\n // get the extension (\"ext\" or \".ext\" or full path)\n var extension = extname('x.' + path)\n .toLowerCase()\n .substr(1)\n\n if (!extension) {\n return false\n }\n\n return exports.types[extension] || false\n}\n\n/**\n * Populate the extensions and types maps.\n * @private\n */\n\nfunction populateMaps (extensions, types) {\n // source preference (least -> most)\n var preference = ['nginx', 'apache', undefined, 'iana']\n\n Object.keys(db).forEach(function forEachMimeType (type) {\n var mime = db[type]\n var exts = mime.extensions\n\n if (!exts || !exts.length) {\n return\n }\n\n // mime -> extensions\n extensions[type] = exts\n\n // extension -> mime\n for (var i = 0; i < exts.length; i++) {\n var extension = exts[i]\n\n if (types[extension]) {\n var from = preference.indexOf(db[types[extension]].source)\n var to = preference.indexOf(mime.source)\n\n if (types[extension] !== 'application/octet-stream' &&\n (from > to || (from === to && types[extension].substr(0, 12) === 'application/'))) {\n // skip the remapping\n continue\n }\n }\n\n // set the extension -> mime\n types[extension] = type\n }\n })\n}\n","module.exports = defer;\n\n/**\n * Runs provided function on next iteration of the event loop\n *\n * @param {function} fn - function to run\n */\nfunction defer(fn)\n{\n var nextTick = typeof setImmediate == 'function'\n ? setImmediate\n : (\n typeof process == 'object' && typeof process.nextTick == 'function'\n ? process.nextTick\n : null\n );\n\n if (nextTick)\n {\n nextTick(fn);\n }\n else\n {\n setTimeout(fn, 0);\n }\n}\n","var defer = require('./defer.js');\n\n// API\nmodule.exports = async;\n\n/**\n * Runs provided callback asynchronously\n * even if callback itself is not\n *\n * @param {function} callback - callback to invoke\n * @returns {function} - augmented callback\n */\nfunction async(callback)\n{\n var isAsync = false;\n\n // check if async happened\n defer(function() { isAsync = true; });\n\n return function async_callback(err, result)\n {\n if (isAsync)\n {\n callback(err, result);\n }\n else\n {\n defer(function nextTick_callback()\n {\n callback(err, result);\n });\n }\n };\n}\n","// API\nmodule.exports = abort;\n\n/**\n * Aborts leftover active jobs\n *\n * @param {object} state - current state object\n */\nfunction abort(state)\n{\n Object.keys(state.jobs).forEach(clean.bind(state));\n\n // reset leftover jobs\n state.jobs = {};\n}\n\n/**\n * Cleans up leftover job by invoking abort function for the provided job id\n *\n * @this state\n * @param {string|number} key - job id to abort\n */\nfunction clean(key)\n{\n if (typeof this.jobs[key] == 'function')\n {\n this.jobs[key]();\n }\n}\n","var async = require('./async.js')\n , abort = require('./abort.js')\n ;\n\n// API\nmodule.exports = iterate;\n\n/**\n * Iterates over each job object\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {object} state - current job status\n * @param {function} callback - invoked when all elements processed\n */\nfunction iterate(list, iterator, state, callback)\n{\n // store current index\n var key = state['keyedList'] ? state['keyedList'][state.index] : state.index;\n\n state.jobs[key] = runJob(iterator, key, list[key], function(error, output)\n {\n // don't repeat yourself\n // skip secondary callbacks\n if (!(key in state.jobs))\n {\n return;\n }\n\n // clean up jobs\n delete state.jobs[key];\n\n if (error)\n {\n // don't process rest of the results\n // stop still active jobs\n // and reset the list\n abort(state);\n }\n else\n {\n state.results[key] = output;\n }\n\n // return salvaged results\n callback(error, state.results);\n });\n}\n\n/**\n * Runs iterator over provided job element\n *\n * @param {function} iterator - iterator to invoke\n * @param {string|number} key - key/index of the element in the list of jobs\n * @param {mixed} item - job description\n * @param {function} callback - invoked after iterator is done with the job\n * @returns {function|mixed} - job abort function or something else\n */\nfunction runJob(iterator, key, item, callback)\n{\n var aborter;\n\n // allow shortcut if iterator expects only two arguments\n if (iterator.length == 2)\n {\n aborter = iterator(item, async(callback));\n }\n // otherwise go with full three arguments\n else\n {\n aborter = iterator(item, key, async(callback));\n }\n\n return aborter;\n}\n","// API\nmodule.exports = state;\n\n/**\n * Creates initial state object\n * for iteration over list\n *\n * @param {array|object} list - list to iterate over\n * @param {function|null} sortMethod - function to use for keys sort,\n * or `null` to keep them as is\n * @returns {object} - initial state object\n */\nfunction state(list, sortMethod)\n{\n var isNamedList = !Array.isArray(list)\n , initState =\n {\n index : 0,\n keyedList: isNamedList || sortMethod ? Object.keys(list) : null,\n jobs : {},\n results : isNamedList ? {} : [],\n size : isNamedList ? Object.keys(list).length : list.length\n }\n ;\n\n if (sortMethod)\n {\n // sort array keys based on it's values\n // sort object's keys just on own merit\n initState.keyedList.sort(isNamedList ? sortMethod : function(a, b)\n {\n return sortMethod(list[a], list[b]);\n });\n }\n\n return initState;\n}\n","var abort = require('./abort.js')\n , async = require('./async.js')\n ;\n\n// API\nmodule.exports = terminator;\n\n/**\n * Terminates jobs in the attached state context\n *\n * @this AsyncKitState#\n * @param {function} callback - final callback to invoke after termination\n */\nfunction terminator(callback)\n{\n if (!Object.keys(this.jobs).length)\n {\n return;\n }\n\n // fast forward iteration index\n this.index = this.size;\n\n // abort jobs\n abort(this);\n\n // send back results we have so far\n async(callback)(null, this.results);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = parallel;\n\n/**\n * Runs iterator over provided array elements in parallel\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction parallel(list, iterator, callback)\n{\n var state = initState(list);\n\n while (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, function(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n // looks like it's the last one\n if (Object.keys(state.jobs).length === 0)\n {\n callback(null, state.results);\n return;\n }\n });\n\n state.index++;\n }\n\n return terminator.bind(state, callback);\n}\n","var iterate = require('./lib/iterate.js')\n , initState = require('./lib/state.js')\n , terminator = require('./lib/terminator.js')\n ;\n\n// Public API\nmodule.exports = serialOrdered;\n// sorting helpers\nmodule.exports.ascending = ascending;\nmodule.exports.descending = descending;\n\n/**\n * Runs iterator over provided sorted array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} sortMethod - custom sort function\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serialOrdered(list, iterator, sortMethod, callback)\n{\n var state = initState(list, sortMethod);\n\n iterate(list, iterator, state, function iteratorHandler(error, result)\n {\n if (error)\n {\n callback(error, result);\n return;\n }\n\n state.index++;\n\n // are we there yet?\n if (state.index < (state['keyedList'] || list).length)\n {\n iterate(list, iterator, state, iteratorHandler);\n return;\n }\n\n // done here\n callback(null, state.results);\n });\n\n return terminator.bind(state, callback);\n}\n\n/*\n * -- Sort methods\n */\n\n/**\n * sort helper to sort array elements in ascending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction ascending(a, b)\n{\n return a < b ? -1 : a > b ? 1 : 0;\n}\n\n/**\n * sort helper to sort array elements in descending order\n *\n * @param {mixed} a - an item to compare\n * @param {mixed} b - an item to compare\n * @returns {number} - comparison result\n */\nfunction descending(a, b)\n{\n return -1 * ascending(a, b);\n}\n","var serialOrdered = require('./serialOrdered.js');\n\n// Public API\nmodule.exports = serial;\n\n/**\n * Runs iterator over provided array elements in series\n *\n * @param {array|object} list - array or object (named list) to iterate over\n * @param {function} iterator - iterator to run\n * @param {function} callback - invoked when all elements processed\n * @returns {function} - jobs terminator\n */\nfunction serial(list, iterator, callback)\n{\n return serialOrdered(list, iterator, null, callback);\n}\n","module.exports =\n{\n parallel : require('./parallel.js'),\n serial : require('./serial.js'),\n serialOrdered : require('./serialOrdered.js')\n};\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Object;\n","'use strict';\n\n/** @type {import('.')} */\nmodule.exports = Error;\n","'use strict';\n\n/** @type {import('./eval')} */\nmodule.exports = EvalError;\n","'use strict';\n\n/** @type {import('./range')} */\nmodule.exports = RangeError;\n","'use strict';\n\n/** @type {import('./ref')} */\nmodule.exports = ReferenceError;\n","'use strict';\n\n/** @type {import('./syntax')} */\nmodule.exports = SyntaxError;\n","'use strict';\n\n/** @type {import('./type')} */\nmodule.exports = TypeError;\n","'use strict';\n\n/** @type {import('./uri')} */\nmodule.exports = URIError;\n","'use strict';\n\n/** @type {import('./abs')} */\nmodule.exports = Math.abs;\n","'use strict';\n\n/** @type {import('./floor')} */\nmodule.exports = Math.floor;\n","'use strict';\n\n/** @type {import('./max')} */\nmodule.exports = Math.max;\n","'use strict';\n\n/** @type {import('./min')} */\nmodule.exports = Math.min;\n","'use strict';\n\n/** @type {import('./pow')} */\nmodule.exports = Math.pow;\n","'use strict';\n\n/** @type {import('./round')} */\nmodule.exports = Math.round;\n","'use strict';\n\n/** @type {import('./isNaN')} */\nmodule.exports = Number.isNaN || function isNaN(a) {\n\treturn a !== a;\n};\n","'use strict';\n\nvar $isNaN = require('./isNaN');\n\n/** @type {import('./sign')} */\nmodule.exports = function sign(number) {\n\tif ($isNaN(number) || number === 0) {\n\t\treturn number;\n\t}\n\treturn number < 0 ? -1 : +1;\n};\n","'use strict';\n\n/** @type {import('./gOPD')} */\nmodule.exports = Object.getOwnPropertyDescriptor;\n","'use strict';\n\n/** @type {import('.')} */\nvar $gOPD = require('./gOPD');\n\nif ($gOPD) {\n\ttry {\n\t\t$gOPD([], 'length');\n\t} catch (e) {\n\t\t// IE 8 has a broken gOPD\n\t\t$gOPD = null;\n\t}\n}\n\nmodule.exports = $gOPD;\n","'use strict';\n\n/** @type {import('.')} */\nvar $defineProperty = Object.defineProperty || false;\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = false;\n\t}\n}\n\nmodule.exports = $defineProperty;\n","'use strict';\n\n/** @type {import('./shams')} */\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\t/** @type {{ [k in symbol]?: unknown }} */\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (var _ in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\t// eslint-disable-next-line no-extra-parens\n\t\tvar descriptor = /** @type {PropertyDescriptor} */ (Object.getOwnPropertyDescriptor(obj, sym));\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/** @type {import('./Reflect.getPrototypeOf')} */\nmodule.exports = (typeof Reflect !== 'undefined' && Reflect.getPrototypeOf) || null;\n","'use strict';\n\nvar $Object = require('es-object-atoms');\n\n/** @type {import('./Object.getPrototypeOf')} */\nmodule.exports = $Object.getPrototypeOf || null;\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar toStr = Object.prototype.toString;\nvar max = Math.max;\nvar funcType = '[object Function]';\n\nvar concatty = function concatty(a, b) {\n var arr = [];\n\n for (var i = 0; i < a.length; i += 1) {\n arr[i] = a[i];\n }\n for (var j = 0; j < b.length; j += 1) {\n arr[j + a.length] = b[j];\n }\n\n return arr;\n};\n\nvar slicy = function slicy(arrLike, offset) {\n var arr = [];\n for (var i = offset || 0, j = 0; i < arrLike.length; i += 1, j += 1) {\n arr[j] = arrLike[i];\n }\n return arr;\n};\n\nvar joiny = function (arr, joiner) {\n var str = '';\n for (var i = 0; i < arr.length; i += 1) {\n str += arr[i];\n if (i + 1 < arr.length) {\n str += joiner;\n }\n }\n return str;\n};\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.apply(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slicy(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n concatty(args, arguments)\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n }\n return target.apply(\n that,\n concatty(args, arguments)\n );\n\n };\n\n var boundLength = max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs[i] = '$' + i;\n }\n\n bound = Function('binder', 'return function (' + joiny(boundArgs, ',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\n/** @type {import('./functionCall')} */\nmodule.exports = Function.prototype.call;\n","'use strict';\n\n/** @type {import('./functionApply')} */\nmodule.exports = Function.prototype.apply;\n","'use strict';\n\n/** @type {import('./reflectApply')} */\nmodule.exports = typeof Reflect !== 'undefined' && Reflect && Reflect.apply;\n","'use strict';\n\nvar bind = require('function-bind');\n\nvar $apply = require('./functionApply');\nvar $call = require('./functionCall');\nvar $reflectApply = require('./reflectApply');\n\n/** @type {import('./actualApply')} */\nmodule.exports = $reflectApply || bind.call($call, $apply);\n","'use strict';\n\nvar bind = require('function-bind');\nvar $TypeError = require('es-errors/type');\n\nvar $call = require('./functionCall');\nvar $actualApply = require('./actualApply');\n\n/** @type {(args: [Function, thisArg?: unknown, ...args: unknown[]]) => Function} TODO FIXME, find a way to use import('.') */\nmodule.exports = function callBindBasic(args) {\n\tif (args.length < 1 || typeof args[0] !== 'function') {\n\t\tthrow new $TypeError('a function is required');\n\t}\n\treturn $actualApply(bind, $call, args);\n};\n","'use strict';\n\nvar callBind = require('call-bind-apply-helpers');\nvar gOPD = require('gopd');\n\nvar hasProtoAccessor;\ntry {\n\t// eslint-disable-next-line no-extra-parens, no-proto\n\thasProtoAccessor = /** @type {{ __proto__?: typeof Array.prototype }} */ ([]).__proto__ === Array.prototype;\n} catch (e) {\n\tif (!e || typeof e !== 'object' || !('code' in e) || e.code !== 'ERR_PROTO_ACCESS') {\n\t\tthrow e;\n\t}\n}\n\n// eslint-disable-next-line no-extra-parens\nvar desc = !!hasProtoAccessor && gOPD && gOPD(Object.prototype, /** @type {keyof typeof Object.prototype} */ ('__proto__'));\n\nvar $Object = Object;\nvar $getPrototypeOf = $Object.getPrototypeOf;\n\n/** @type {import('./get')} */\nmodule.exports = desc && typeof desc.get === 'function'\n\t? callBind([desc.get])\n\t: typeof $getPrototypeOf === 'function'\n\t\t? /** @type {import('./get')} */ function getDunder(value) {\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\treturn $getPrototypeOf(value == null ? value : $Object(value));\n\t\t}\n\t\t: false;\n","'use strict';\n\nvar reflectGetProto = require('./Reflect.getPrototypeOf');\nvar originalGetProto = require('./Object.getPrototypeOf');\n\nvar getDunderProto = require('dunder-proto/get');\n\n/** @type {import('.')} */\nmodule.exports = reflectGetProto\n\t? function getProto(O) {\n\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\treturn reflectGetProto(O);\n\t}\n\t: originalGetProto\n\t\t? function getProto(O) {\n\t\t\tif (!O || (typeof O !== 'object' && typeof O !== 'function')) {\n\t\t\t\tthrow new TypeError('getProto: not an object');\n\t\t\t}\n\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\treturn originalGetProto(O);\n\t\t}\n\t\t: getDunderProto\n\t\t\t? function getProto(O) {\n\t\t\t\t// @ts-expect-error TS can't narrow inside a closure, for some reason\n\t\t\t\treturn getDunderProto(O);\n\t\t\t}\n\t\t\t: null;\n","'use strict';\n\nvar call = Function.prototype.call;\nvar $hasOwn = Object.prototype.hasOwnProperty;\nvar bind = require('function-bind');\n\n/** @type {import('.')} */\nmodule.exports = bind.call(call, $hasOwn);\n","'use strict';\n\nvar undefined;\n\nvar $Object = require('es-object-atoms');\n\nvar $Error = require('es-errors');\nvar $EvalError = require('es-errors/eval');\nvar $RangeError = require('es-errors/range');\nvar $ReferenceError = require('es-errors/ref');\nvar $SyntaxError = require('es-errors/syntax');\nvar $TypeError = require('es-errors/type');\nvar $URIError = require('es-errors/uri');\n\nvar abs = require('math-intrinsics/abs');\nvar floor = require('math-intrinsics/floor');\nvar max = require('math-intrinsics/max');\nvar min = require('math-intrinsics/min');\nvar pow = require('math-intrinsics/pow');\nvar round = require('math-intrinsics/round');\nvar sign = require('math-intrinsics/sign');\n\nvar $Function = Function;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = require('gopd');\nvar $defineProperty = require('es-define-property');\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = require('get-proto');\nvar $ObjectGPO = require('get-proto/Object.getPrototypeOf');\nvar $ReflectGPO = require('get-proto/Reflect.getPrototypeOf');\n\nvar $apply = require('call-bind-apply-helpers/functionApply');\nvar $call = require('call-bind-apply-helpers/functionCall');\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' || !getProto ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t__proto__: null,\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols && getProto ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%BigInt64Array%': typeof BigInt64Array === 'undefined' ? undefined : BigInt64Array,\n\t'%BigUint64Array%': typeof BigUint64Array === 'undefined' ? undefined : BigUint64Array,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': $Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': $EvalError,\n\t'%Float16Array%': typeof Float16Array === 'undefined' ? undefined : Float16Array,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols && getProto ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': $Object,\n\t'%Object.getOwnPropertyDescriptor%': $gOPD,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': $RangeError,\n\t'%ReferenceError%': $ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols || !getProto ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols && getProto ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': $URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet,\n\n\t'%Function.prototype.call%': $call,\n\t'%Function.prototype.apply%': $apply,\n\t'%Object.defineProperty%': $defineProperty,\n\t'%Object.getPrototypeOf%': $ObjectGPO,\n\t'%Math.abs%': abs,\n\t'%Math.floor%': floor,\n\t'%Math.max%': max,\n\t'%Math.min%': min,\n\t'%Math.pow%': pow,\n\t'%Math.round%': round,\n\t'%Math.sign%': sign,\n\t'%Reflect.getPrototypeOf%': $ReflectGPO\n};\n\nif (getProto) {\n\ttry {\n\t\tnull.error; // eslint-disable-line no-unused-expressions\n\t} catch (e) {\n\t\t// https://github.com/tc39/proposal-shadowrealm/pull/384#issuecomment-1364264229\n\t\tvar errorProto = getProto(getProto(e));\n\t\tINTRINSICS['%Error.prototype%'] = errorProto;\n\t}\n}\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen && getProto) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t__proto__: null,\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('hasown');\nvar $concat = bind.call($call, Array.prototype.concat);\nvar $spliceApply = bind.call($apply, Array.prototype.splice);\nvar $replace = bind.call($call, String.prototype.replace);\nvar $strSlice = bind.call($call, String.prototype.slice);\nvar $exec = bind.call($call, RegExp.prototype.exec);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tif ($exec(/^%?[^%]*%?$/, name) === null) {\n\t\tthrow new $SyntaxError('`%` may not be present anywhere but at the beginning and end of the intrinsic name');\n\t}\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\n/** @type {import('.')} */\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar hasOwn = require('hasown');\nvar $TypeError = require('es-errors/type');\n\nvar toStringTag = hasToStringTag ? Symbol.toStringTag : null;\n\n/** @type {import('.')} */\nmodule.exports = function setToStringTag(object, value) {\n\tvar overrideIfSet = arguments.length > 2 && !!arguments[2] && arguments[2].force;\n\tvar nonConfigurable = arguments.length > 2 && !!arguments[2] && arguments[2].nonConfigurable;\n\tif (\n\t\t(typeof overrideIfSet !== 'undefined' && typeof overrideIfSet !== 'boolean')\n\t\t|| (typeof nonConfigurable !== 'undefined' && typeof nonConfigurable !== 'boolean')\n\t) {\n\t\tthrow new $TypeError('if provided, the `overrideIfSet` and `nonConfigurable` options must be booleans');\n\t}\n\tif (toStringTag && (overrideIfSet || !hasOwn(object, toStringTag))) {\n\t\tif ($defineProperty) {\n\t\t\t$defineProperty(object, toStringTag, {\n\t\t\t\tconfigurable: !nonConfigurable,\n\t\t\t\tenumerable: false,\n\t\t\t\tvalue: value,\n\t\t\t\twritable: false\n\t\t\t});\n\t\t} else {\n\t\t\tobject[toStringTag] = value; // eslint-disable-line no-param-reassign\n\t\t}\n\t}\n};\n","'use strict';\n\n// populates missing values\nmodule.exports = function (dst, src) {\n Object.keys(src).forEach(function (prop) {\n dst[prop] = dst[prop] || src[prop]; // eslint-disable-line no-param-reassign\n });\n\n return dst;\n};\n","'use strict';\n\nvar CombinedStream = require('combined-stream');\nvar util = require('util');\nvar path = require('path');\nvar http = require('http');\nvar https = require('https');\nvar parseUrl = require('url').parse;\nvar fs = require('fs');\nvar Stream = require('stream').Stream;\nvar crypto = require('crypto');\nvar mime = require('mime-types');\nvar asynckit = require('asynckit');\nvar setToStringTag = require('es-set-tostringtag');\nvar hasOwn = require('hasown');\nvar populate = require('./populate.js');\n\n/**\n * Create readable \"multipart/form-data\" streams.\n * Can be used to submit forms\n * and file uploads to other web applications.\n *\n * @constructor\n * @param {object} options - Properties to be added/overriden for FormData and CombinedStream\n */\nfunction FormData(options) {\n if (!(this instanceof FormData)) {\n return new FormData(options);\n }\n\n this._overheadLength = 0;\n this._valueLength = 0;\n this._valuesToMeasure = [];\n\n CombinedStream.call(this);\n\n options = options || {}; // eslint-disable-line no-param-reassign\n for (var option in options) { // eslint-disable-line no-restricted-syntax\n this[option] = options[option];\n }\n}\n\n// make it a Stream\nutil.inherits(FormData, CombinedStream);\n\nFormData.LINE_BREAK = '\\r\\n';\nFormData.DEFAULT_CONTENT_TYPE = 'application/octet-stream';\n\nFormData.prototype.append = function (field, value, options) {\n options = options || {}; // eslint-disable-line no-param-reassign\n\n // allow filename as single option\n if (typeof options === 'string') {\n options = { filename: options }; // eslint-disable-line no-param-reassign\n }\n\n var append = CombinedStream.prototype.append.bind(this);\n\n // all that streamy business can't handle numbers\n if (typeof value === 'number' || value == null) {\n value = String(value); // eslint-disable-line no-param-reassign\n }\n\n // https://github.com/felixge/node-form-data/issues/38\n if (Array.isArray(value)) {\n /*\n * Please convert your array into string\n * the way web server expects it\n */\n this._error(new Error('Arrays are not supported.'));\n return;\n }\n\n var header = this._multiPartHeader(field, value, options);\n var footer = this._multiPartFooter();\n\n append(header);\n append(value);\n append(footer);\n\n // pass along options.knownLength\n this._trackLength(header, value, options);\n};\n\nFormData.prototype._trackLength = function (header, value, options) {\n var valueLength = 0;\n\n /*\n * used w/ getLengthSync(), when length is known.\n * e.g. for streaming directly from a remote server,\n * w/ a known file a size, and not wanting to wait for\n * incoming file to finish to get its size.\n */\n if (options.knownLength != null) {\n valueLength += Number(options.knownLength);\n } else if (Buffer.isBuffer(value)) {\n valueLength = value.length;\n } else if (typeof value === 'string') {\n valueLength = Buffer.byteLength(value);\n }\n\n this._valueLength += valueLength;\n\n // @check why add CRLF? does this account for custom/multiple CRLFs?\n this._overheadLength += Buffer.byteLength(header) + FormData.LINE_BREAK.length;\n\n // empty or either doesn't have path or not an http response or not a stream\n if (!value || (!value.path && !(value.readable && hasOwn(value, 'httpVersion')) && !(value instanceof Stream))) {\n return;\n }\n\n // no need to bother with the length\n if (!options.knownLength) {\n this._valuesToMeasure.push(value);\n }\n};\n\nFormData.prototype._lengthRetriever = function (value, callback) {\n if (hasOwn(value, 'fd')) {\n // take read range into a account\n // `end` = Infinity –> read file till the end\n //\n // TODO: Looks like there is bug in Node fs.createReadStream\n // it doesn't respect `end` options without `start` options\n // Fix it when node fixes it.\n // https://github.com/joyent/node/issues/7819\n if (value.end != undefined && value.end != Infinity && value.start != undefined) {\n // when end specified\n // no need to calculate range\n // inclusive, starts with 0\n callback(null, value.end + 1 - (value.start ? value.start : 0)); // eslint-disable-line callback-return\n\n // not that fast snoopy\n } else {\n // still need to fetch file size from fs\n fs.stat(value.path, function (err, stat) {\n if (err) {\n callback(err);\n return;\n }\n\n // update final size based on the range options\n var fileSize = stat.size - (value.start ? value.start : 0);\n callback(null, fileSize);\n });\n }\n\n // or http response\n } else if (hasOwn(value, 'httpVersion')) {\n callback(null, Number(value.headers['content-length'])); // eslint-disable-line callback-return\n\n // or request stream http://github.com/mikeal/request\n } else if (hasOwn(value, 'httpModule')) {\n // wait till response come back\n value.on('response', function (response) {\n value.pause();\n callback(null, Number(response.headers['content-length']));\n });\n value.resume();\n\n // something else\n } else {\n callback('Unknown stream'); // eslint-disable-line callback-return\n }\n};\n\nFormData.prototype._multiPartHeader = function (field, value, options) {\n /*\n * custom header specified (as string)?\n * it becomes responsible for boundary\n * (e.g. to handle extra CRLFs on .NET servers)\n */\n if (typeof options.header === 'string') {\n return options.header;\n }\n\n var contentDisposition = this._getContentDisposition(value, options);\n var contentType = this._getContentType(value, options);\n\n var contents = '';\n var headers = {\n // add custom disposition as third element or keep it two elements if not\n 'Content-Disposition': ['form-data', 'name=\"' + field + '\"'].concat(contentDisposition || []),\n // if no content type. allow it to be empty array\n 'Content-Type': [].concat(contentType || [])\n };\n\n // allow custom headers.\n if (typeof options.header === 'object') {\n populate(headers, options.header);\n }\n\n var header;\n for (var prop in headers) { // eslint-disable-line no-restricted-syntax\n if (hasOwn(headers, prop)) {\n header = headers[prop];\n\n // skip nullish headers.\n if (header == null) {\n continue; // eslint-disable-line no-restricted-syntax, no-continue\n }\n\n // convert all headers to arrays.\n if (!Array.isArray(header)) {\n header = [header];\n }\n\n // add non-empty headers.\n if (header.length) {\n contents += prop + ': ' + header.join('; ') + FormData.LINE_BREAK;\n }\n }\n }\n\n return '--' + this.getBoundary() + FormData.LINE_BREAK + contents + FormData.LINE_BREAK;\n};\n\nFormData.prototype._getContentDisposition = function (value, options) { // eslint-disable-line consistent-return\n var filename;\n\n if (typeof options.filepath === 'string') {\n // custom filepath for relative paths\n filename = path.normalize(options.filepath).replace(/\\\\/g, '/');\n } else if (options.filename || (value && (value.name || value.path))) {\n /*\n * custom filename take precedence\n * formidable and the browser add a name property\n * fs- and request- streams have path property\n */\n filename = path.basename(options.filename || (value && (value.name || value.path)));\n } else if (value && value.readable && hasOwn(value, 'httpVersion')) {\n // or try http response\n filename = path.basename(value.client._httpMessage.path || '');\n }\n\n if (filename) {\n return 'filename=\"' + filename + '\"';\n }\n};\n\nFormData.prototype._getContentType = function (value, options) {\n // use custom content-type above all\n var contentType = options.contentType;\n\n // or try `name` from formidable, browser\n if (!contentType && value && value.name) {\n contentType = mime.lookup(value.name);\n }\n\n // or try `path` from fs-, request- streams\n if (!contentType && value && value.path) {\n contentType = mime.lookup(value.path);\n }\n\n // or if it's http-reponse\n if (!contentType && value && value.readable && hasOwn(value, 'httpVersion')) {\n contentType = value.headers['content-type'];\n }\n\n // or guess it from the filepath or filename\n if (!contentType && (options.filepath || options.filename)) {\n contentType = mime.lookup(options.filepath || options.filename);\n }\n\n // fallback to the default content type if `value` is not simple value\n if (!contentType && value && typeof value === 'object') {\n contentType = FormData.DEFAULT_CONTENT_TYPE;\n }\n\n return contentType;\n};\n\nFormData.prototype._multiPartFooter = function () {\n return function (next) {\n var footer = FormData.LINE_BREAK;\n\n var lastPart = this._streams.length === 0;\n if (lastPart) {\n footer += this._lastBoundary();\n }\n\n next(footer);\n }.bind(this);\n};\n\nFormData.prototype._lastBoundary = function () {\n return '--' + this.getBoundary() + '--' + FormData.LINE_BREAK;\n};\n\nFormData.prototype.getHeaders = function (userHeaders) {\n var header;\n var formHeaders = {\n 'content-type': 'multipart/form-data; boundary=' + this.getBoundary()\n };\n\n for (header in userHeaders) { // eslint-disable-line no-restricted-syntax\n if (hasOwn(userHeaders, header)) {\n formHeaders[header.toLowerCase()] = userHeaders[header];\n }\n }\n\n return formHeaders;\n};\n\nFormData.prototype.setBoundary = function (boundary) {\n if (typeof boundary !== 'string') {\n throw new TypeError('FormData boundary must be a string');\n }\n this._boundary = boundary;\n};\n\nFormData.prototype.getBoundary = function () {\n if (!this._boundary) {\n this._generateBoundary();\n }\n\n return this._boundary;\n};\n\nFormData.prototype.getBuffer = function () {\n var dataBuffer = new Buffer.alloc(0); // eslint-disable-line new-cap\n var boundary = this.getBoundary();\n\n // Create the form content. Add Line breaks to the end of data.\n for (var i = 0, len = this._streams.length; i < len; i++) {\n if (typeof this._streams[i] !== 'function') {\n // Add content to the buffer.\n if (Buffer.isBuffer(this._streams[i])) {\n dataBuffer = Buffer.concat([dataBuffer, this._streams[i]]);\n } else {\n dataBuffer = Buffer.concat([dataBuffer, Buffer.from(this._streams[i])]);\n }\n\n // Add break after content.\n if (typeof this._streams[i] !== 'string' || this._streams[i].substring(2, boundary.length + 2) !== boundary) {\n dataBuffer = Buffer.concat([dataBuffer, Buffer.from(FormData.LINE_BREAK)]);\n }\n }\n }\n\n // Add the footer and return the Buffer object.\n return Buffer.concat([dataBuffer, Buffer.from(this._lastBoundary())]);\n};\n\nFormData.prototype._generateBoundary = function () {\n // This generates a 50 character boundary similar to those used by Firefox.\n\n // They are optimized for boyer-moore parsing.\n this._boundary = '--------------------------' + crypto.randomBytes(12).toString('hex');\n};\n\n// Note: getLengthSync DOESN'T calculate streams length\n// As workaround one can calculate file size manually and add it as knownLength option\nFormData.prototype.getLengthSync = function () {\n var knownLength = this._overheadLength + this._valueLength;\n\n // Don't get confused, there are 3 \"internal\" streams for each keyval pair so it basically checks if there is any value added to the form\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n // https://github.com/form-data/form-data/issues/40\n if (!this.hasKnownLength()) {\n /*\n * Some async length retrievers are present\n * therefore synchronous length calculation is false.\n * Please use getLength(callback) to get proper length\n */\n this._error(new Error('Cannot calculate proper length in synchronous way.'));\n }\n\n return knownLength;\n};\n\n// Public API to check if length of added values is known\n// https://github.com/form-data/form-data/issues/196\n// https://github.com/form-data/form-data/issues/262\nFormData.prototype.hasKnownLength = function () {\n var hasKnownLength = true;\n\n if (this._valuesToMeasure.length) {\n hasKnownLength = false;\n }\n\n return hasKnownLength;\n};\n\nFormData.prototype.getLength = function (cb) {\n var knownLength = this._overheadLength + this._valueLength;\n\n if (this._streams.length) {\n knownLength += this._lastBoundary().length;\n }\n\n if (!this._valuesToMeasure.length) {\n process.nextTick(cb.bind(this, null, knownLength));\n return;\n }\n\n asynckit.parallel(this._valuesToMeasure, this._lengthRetriever, function (err, values) {\n if (err) {\n cb(err);\n return;\n }\n\n values.forEach(function (length) {\n knownLength += length;\n });\n\n cb(null, knownLength);\n });\n};\n\nFormData.prototype.submit = function (params, cb) {\n var request;\n var options;\n var defaults = { method: 'post' };\n\n // parse provided url if it's string or treat it as options object\n if (typeof params === 'string') {\n params = parseUrl(params); // eslint-disable-line no-param-reassign\n /* eslint sort-keys: 0 */\n options = populate({\n port: params.port,\n path: params.pathname,\n host: params.hostname,\n protocol: params.protocol\n }, defaults);\n } else { // use custom params\n options = populate(params, defaults);\n // if no port provided use default one\n if (!options.port) {\n options.port = options.protocol === 'https:' ? 443 : 80;\n }\n }\n\n // put that good code in getHeaders to some use\n options.headers = this.getHeaders(params.headers);\n\n // https if specified, fallback to http in any other case\n if (options.protocol === 'https:') {\n request = https.request(options);\n } else {\n request = http.request(options);\n }\n\n // get content length and fire away\n this.getLength(function (err, length) {\n if (err && err !== 'Unknown stream') {\n this._error(err);\n return;\n }\n\n // add content length\n if (length) {\n request.setHeader('Content-Length', length);\n }\n\n this.pipe(request);\n if (cb) {\n var onResponse;\n\n var callback = function (error, responce) {\n request.removeListener('error', callback);\n request.removeListener('response', onResponse);\n\n return cb.call(this, error, responce);\n };\n\n onResponse = callback.bind(this, null);\n\n request.on('error', callback);\n request.on('response', onResponse);\n }\n }.bind(this));\n\n return request;\n};\n\nFormData.prototype._error = function (err) {\n if (!this.error) {\n this.error = err;\n this.pause();\n this.emit('error', err);\n }\n};\n\nFormData.prototype.toString = function () {\n return '[object FormData]';\n};\nsetToStringTag(FormData.prototype, 'FormData');\n\n// Public API\nmodule.exports = FormData;\n","export { EventMonitor } from './EventMonitor';\nexport type { CheckpointData } from './EventMonitor';\nexport { ContainerManager } from './ContainerManager';\nexport { NoosphereAgent } from './NoosphereAgent';\nexport type { ComputeDeliveredEvent, RequestStartedCallbackEvent, CommitmentSuccessCallbackEvent, RetryableEvent, ContainerExecutionConfig } from './NoosphereAgent';\nexport { SchedulerService } from './SchedulerService';\n\nexport * from './types';\nexport * from './utils';\nexport * from './storage';\nexport { PayloadResolver, PayloadScheme } from './PayloadResolver';\nexport type { PayloadResolverConfig, ResolvedPayload } from './PayloadResolver';\n\n// Re-export crypto utilities for convenience\nexport { WalletManager, KeystoreManager } from '@noosphere/crypto';\nexport type { NoosphereKeystore, PaymentWalletInfo, KeystoreInfo } from '@noosphere/crypto';\n\n// Re-export registry utilities for convenience\nexport { RegistryManager } from '@noosphere/registry';\nexport type {\n ContainerMetadata as RegistryContainerMetadata,\n VerifierMetadata as RegistryVerifierMetadata,\n RegistryConfig,\n} from '@noosphere/registry';\n\n// Export config types\nexport type { NoosphereAgentConfig, ContainerConfig } from './types';\n","import { EventEmitter } from 'events';\nimport { ethers } from 'ethers';\nimport type { AgentConfig, RequestStartedEvent } from './types';\n\nexport interface CheckpointData {\n blockNumber: number;\n blockHash?: string;\n blockTimestamp?: number;\n}\n\nexport interface EventMonitorOptions {\n loadCheckpoint?: () => CheckpointData | undefined;\n saveCheckpoint?: (checkpoint: CheckpointData) => void;\n}\n\nexport class EventMonitor extends EventEmitter {\n private provider!: ethers.WebSocketProvider | ethers.JsonRpcProvider;\n private router!: ethers.Contract;\n private coordinator!: ethers.Contract;\n private lastProcessedBlock: number;\n private useWebSocket: boolean;\n private reconnectAttempts = 0;\n private maxReconnectAttempts = 10;\n private isReconnecting = false;\n private heartbeatInterval: NodeJS.Timeout | null = null;\n private lastEventTime = Date.now();\n private checkpointCallbacks?: EventMonitorOptions;\n\n constructor(\n private config: AgentConfig,\n private routerAbi: any[],\n private coordinatorAbi: any[],\n options?: EventMonitorOptions\n ) {\n super();\n this.lastProcessedBlock = config.deploymentBlock || 0;\n this.useWebSocket = false;\n this.checkpointCallbacks = options;\n }\n\n async connect(): Promise<void> {\n try {\n // Try WebSocket first for push-based events\n if (this.config.wsRpcUrl) {\n this.provider = new ethers.WebSocketProvider(this.config.wsRpcUrl);\n // Note: Do NOT call _start() - it causes race condition with auto-initialization\n // The provider will initialize automatically on first request\n this.useWebSocket = true;\n console.log('✓ Connected via WebSocket (push-based events)');\n } else {\n throw new Error('WebSocket URL not provided');\n }\n } catch (error) {\n // Fallback to HTTP with polling\n console.warn('WebSocket unavailable, falling back to HTTP polling');\n this.provider = new ethers.JsonRpcProvider(this.config.rpcUrl);\n this.useWebSocket = false;\n }\n\n // Initialize contract instances\n this.router = new ethers.Contract(this.config.routerAddress, this.routerAbi, this.provider);\n\n this.coordinator = new ethers.Contract(\n this.config.coordinatorAddress,\n this.coordinatorAbi,\n this.provider\n );\n }\n\n async start(): Promise<void> {\n // Load checkpoint from callback or use deployment block\n if (this.checkpointCallbacks?.loadCheckpoint) {\n const checkpoint = this.checkpointCallbacks.loadCheckpoint();\n if (checkpoint) {\n this.lastProcessedBlock = checkpoint.blockNumber;\n }\n }\n\n console.log(`Starting from block ${this.lastProcessedBlock}`);\n\n // Replay missed events\n await this.replayEvents(this.lastProcessedBlock, 'latest');\n\n // Start real-time listening\n if (this.useWebSocket) {\n await this.startWebSocketListening();\n } else {\n await this.startPolling();\n }\n }\n\n private async replayEvents(fromBlock: number, toBlock: string | number): Promise<void> {\n console.log(`Replaying events from block ${fromBlock} to ${toBlock}`);\n\n const currentBlock = await this.provider.getBlockNumber();\n const toBlockNumber = toBlock === 'latest' ? currentBlock : Number(toBlock);\n\n // Query historical events in chunks to avoid RPC limits\n const chunkSize = 10000;\n for (let start = fromBlock; start <= toBlockNumber; start += chunkSize) {\n const end = Math.min(start + chunkSize - 1, toBlockNumber);\n\n const events = await this.coordinator.queryFilter(\n this.coordinator.filters.RequestStarted(),\n start,\n end\n );\n\n for (const event of events) {\n await this.processEvent(event);\n }\n\n if (events.length > 0) {\n this.saveCheckpoint(end);\n }\n }\n\n console.log(`Replayed events up to block ${toBlockNumber}`);\n }\n\n private async startWebSocketListening(): Promise<void> {\n console.log('Starting WebSocket event listening...');\n\n // Listen for RequestStarted events\n this.coordinator.on('RequestStarted', async (...args) => {\n const event = args[args.length - 1]; // Last argument is the event object\n this.lastEventTime = Date.now();\n await this.processEvent(event);\n\n const blockNumber = event.blockNumber;\n if (blockNumber - this.lastProcessedBlock >= 10) {\n this.saveCheckpoint(blockNumber);\n }\n });\n\n // Setup WebSocket error/close handlers for reconnection\n if (this.provider instanceof ethers.WebSocketProvider) {\n const wsProvider = this.provider as ethers.WebSocketProvider;\n\n // Access the underlying WebSocket to detect connection issues\n // ethers v6 exposes websocket through _websocket property (internal)\n const ws = (wsProvider as any)._websocket;\n if (ws) {\n ws.on('close', () => {\n console.warn('⚠️ WebSocket connection closed');\n this.handleDisconnect();\n });\n ws.on('error', (error: Error) => {\n console.error('⚠️ WebSocket error:', error.message);\n this.handleDisconnect();\n });\n }\n }\n\n // Start heartbeat to detect silent disconnections\n this.startHeartbeat();\n\n console.log('✓ WebSocket event listener started');\n }\n\n private startHeartbeat(): void {\n // Check connection health every 2 minutes (reduced from 30s to avoid rate limits)\n this.heartbeatInterval = setInterval(async () => {\n try {\n if (this.provider instanceof ethers.WebSocketProvider) {\n // Try to get block number as heartbeat\n const blockNumber = await this.provider.getBlockNumber();\n\n // If we haven't received events for 3+ minutes but blocks are advancing,\n // we might have a stale subscription - replay missed events\n const timeSinceLastEvent = Date.now() - this.lastEventTime;\n if (timeSinceLastEvent > 180000 && blockNumber > this.lastProcessedBlock + 5) {\n console.log(`⚠️ No events for ${Math.round(timeSinceLastEvent / 1000)}s, checking for missed events...`);\n await this.replayMissedEvents();\n }\n }\n } catch (error) {\n console.error('⚠️ Heartbeat failed, WebSocket may be disconnected');\n this.handleDisconnect();\n }\n }, 120000); // 2 minutes\n }\n\n private async replayMissedEvents(): Promise<void> {\n try {\n const currentBlock = await this.provider.getBlockNumber();\n if (currentBlock > this.lastProcessedBlock) {\n console.log(`📥 Replaying events from block ${this.lastProcessedBlock + 1} to ${currentBlock}`);\n await this.replayEvents(this.lastProcessedBlock + 1, currentBlock);\n this.lastEventTime = Date.now();\n }\n } catch (error) {\n console.error('Failed to replay missed events:', error);\n }\n }\n\n private handleDisconnect(): void {\n if (this.isReconnecting) return;\n this.isReconnecting = true;\n\n // Clear heartbeat during reconnection\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = null;\n }\n\n // Attempt reconnection\n this.reconnect().finally(() => {\n this.isReconnecting = false;\n });\n }\n\n private async startPolling(): Promise<void> {\n console.log('Starting HTTP polling (fallback mode)...');\n\n const pollingInterval = this.config.pollingInterval || 12000; // 12 seconds default\n let lastBlock = await this.provider.getBlockNumber();\n\n setInterval(async () => {\n try {\n const currentBlock = await this.provider.getBlockNumber();\n if (currentBlock > lastBlock) {\n const events = await this.coordinator.queryFilter(\n this.coordinator.filters.RequestStarted(),\n lastBlock + 1,\n currentBlock\n );\n\n for (const event of events) {\n await this.processEvent(event);\n }\n\n if (events.length > 0) {\n this.saveCheckpoint(currentBlock);\n }\n\n lastBlock = currentBlock;\n }\n } catch (error) {\n console.error('Polling error:', error);\n }\n }, pollingInterval);\n }\n\n private async processEvent(event: any): Promise<void> {\n // Parse event data\n // The RequestStarted event has: (requestId, subscriptionId, containerId, commitment)\n // Most fields are in the commitment struct\n const commitment = event.args.commitment;\n\n const requestStartedEvent: RequestStartedEvent = {\n requestId: event.args.requestId,\n subscriptionId: event.args.subscriptionId,\n containerId: event.args.containerId,\n interval: commitment.interval,\n redundancy: commitment.redundancy,\n useDeliveryInbox: commitment.useDeliveryInbox,\n feeAmount: commitment.feeAmount,\n feeToken: commitment.feeToken,\n verifier: commitment.verifier,\n coordinator: commitment.coordinator,\n walletAddress: commitment.walletAddress,\n blockNumber: event.blockNumber,\n };\n\n // Emit event for NoosphereAgent to handle\n this.emit('RequestStarted', requestStartedEvent);\n }\n\n private async reconnect(): Promise<void> {\n if (this.reconnectAttempts >= this.maxReconnectAttempts) {\n console.error('Max reconnection attempts reached. Falling back to HTTP polling.');\n this.useWebSocket = false;\n await this.connect();\n await this.startPolling();\n return;\n }\n\n const backoff = Math.min(1000 * Math.pow(2, this.reconnectAttempts), 60000);\n console.log(\n `🔄 Reconnecting in ${backoff}ms (attempt ${this.reconnectAttempts + 1}/${this.maxReconnectAttempts})`\n );\n\n await new Promise((resolve) => setTimeout(resolve, backoff));\n\n try {\n // Clean up old listeners before reconnecting\n if (this.coordinator) {\n this.coordinator.removeAllListeners();\n }\n if (this.provider instanceof ethers.WebSocketProvider) {\n try {\n await this.provider.destroy();\n } catch {\n // Ignore destroy errors\n }\n }\n\n await this.connect();\n\n // Replay any missed events since last checkpoint\n await this.replayMissedEvents();\n\n await this.startWebSocketListening();\n console.log('✓ Reconnected successfully');\n this.reconnectAttempts = 0;\n this.lastEventTime = Date.now();\n } catch (error) {\n console.error('Reconnection failed:', error);\n this.reconnectAttempts++;\n await this.reconnect();\n }\n }\n\n private saveCheckpoint(blockNumber: number): void {\n this.lastProcessedBlock = blockNumber;\n\n // Use callback if provided\n if (this.checkpointCallbacks?.saveCheckpoint) {\n this.checkpointCallbacks.saveCheckpoint({\n blockNumber,\n blockTimestamp: Date.now(),\n });\n }\n }\n\n async stop(): Promise<void> {\n // Clear heartbeat interval\n if (this.heartbeatInterval) {\n clearInterval(this.heartbeatInterval);\n this.heartbeatInterval = null;\n }\n\n if (this.router) {\n this.router.removeAllListeners();\n }\n if (this.coordinator) {\n this.coordinator.removeAllListeners();\n }\n if (this.provider instanceof ethers.WebSocketProvider) {\n await this.provider.destroy();\n }\n }\n}\n","import Docker from 'dockerode';\nimport fs from 'fs/promises';\nimport path from 'path';\nimport axios from 'axios';\nimport type { ContainerMetadata } from './types';\n\nexport interface ContainerExecutionResult {\n output: string;\n exitCode: number;\n executionTime: number;\n}\n\nexport class ContainerManager {\n private docker: Docker;\n private runningContainers: Set<Docker.Container> = new Set();\n private persistentContainers: Map<string, Docker.Container> = new Map();\n private containerPorts: Map<string, number> = new Map();\n\n constructor() {\n this.docker = new Docker();\n }\n\n async runContainer(\n container: ContainerMetadata,\n input: string,\n timeout: number = 180000, // 3 minutes default\n connectionRetries: number = 5, // Retry up to 5 times for connection issues\n connectionRetryDelayMs: number = 3000 // Wait 3 seconds between retries\n ): Promise<ContainerExecutionResult> {\n const startTime = Date.now();\n\n // Get the port for this container\n const port = container.port ? parseInt(container.port) : 8081; // Default to 8081\n\n // Make HTTP POST request to the persistent container\n // Use container name as host when DOCKER_NETWORK is set (DinD), otherwise localhost\n const containerHost = process.env.DOCKER_NETWORK\n ? `noosphere-${container.name}`\n : 'localhost';\n const url = `http://${containerHost}:${port}/computation`;\n\n // Prepare request body\n let requestBody: any;\n try {\n const parsedInput = JSON.parse(input);\n requestBody = { input: input, ...parsedInput };\n } catch {\n requestBody = { input: input };\n }\n\n let lastError: any;\n\n for (let attempt = 1; attempt <= connectionRetries; attempt++) {\n try {\n const response = await axios.post(url, requestBody, {\n timeout,\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n\n const executionTime = Date.now() - startTime;\n\n // Extract output from response\n let output: string;\n if (typeof response.data === 'string') {\n output = response.data;\n } else if (response.data.output !== undefined) {\n output =\n typeof response.data.output === 'string'\n ? response.data.output\n : JSON.stringify(response.data.output);\n } else {\n output = JSON.stringify(response.data);\n }\n\n return {\n output,\n exitCode: 0,\n executionTime,\n };\n } catch (error: any) {\n lastError = error;\n\n // Only retry on connection refused (container not ready yet)\n if (error.code === 'ECONNREFUSED') {\n if (attempt < connectionRetries) {\n console.log(` ⏳ Container not ready (attempt ${attempt}/${connectionRetries}), retrying in ${connectionRetryDelayMs / 1000}s...`);\n await this.sleep(connectionRetryDelayMs);\n continue;\n }\n }\n\n // Don't retry on other errors, break immediately\n break;\n }\n }\n\n // All retries exhausted or non-retryable error\n const executionTime = Date.now() - startTime;\n\n if (lastError.response) {\n throw new Error(\n `Container HTTP error ${lastError.response.status}: ${JSON.stringify(lastError.response.data)}`\n );\n } else if (lastError.code === 'ECONNREFUSED') {\n throw new Error(\n `Cannot connect to container (port ${container.port || 8081}) after ${connectionRetries} attempts. Is it running?`\n );\n } else if (lastError.code === 'ETIMEDOUT' || lastError.code === 'ECONNABORTED') {\n throw new Error(`Container execution timeout after ${timeout}ms`);\n }\n\n throw lastError;\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise(resolve => setTimeout(resolve, ms));\n }\n\n private async collectContainerResult(\n dockerContainer: Docker.Container,\n workDir: string,\n startTime: number\n ): Promise<ContainerExecutionResult> {\n try {\n // Get exit status\n const inspectData = await dockerContainer.inspect();\n const exitCode = inspectData.State.ExitCode || 0;\n\n // Read output\n const outputPath = path.join(workDir, 'output.json');\n let output = '';\n try {\n output = await fs.readFile(outputPath, 'utf-8');\n } catch (error) {\n // If no output file, try to get container logs\n const logs = await dockerContainer.logs({\n stdout: true,\n stderr: true,\n });\n output = logs.toString();\n }\n\n const executionTime = Date.now() - startTime;\n\n // Remove the container now that we've collected results\n try {\n await dockerContainer.remove({ force: true });\n } catch (error) {\n // Container might already be removed, ignore\n }\n\n // Cleanup work directory\n await fs.rm(workDir, { recursive: true, force: true });\n\n return {\n output,\n exitCode,\n executionTime,\n };\n } catch (error) {\n // Cleanup container and work directory on error\n try {\n await dockerContainer.remove({ force: true });\n } catch {\n // Ignore removal errors\n }\n await fs.rm(workDir, { recursive: true, force: true }).catch(() => {});\n throw error;\n }\n }\n\n private async pullImage(image: string, tag: string): Promise<void> {\n const imageTag = `${image}:${tag}`;\n\n try {\n // Check if image exists\n await this.docker.getImage(imageTag).inspect();\n console.log(`Image ${imageTag} already exists`);\n } catch {\n // Image doesn't exist, pull it\n console.log(`Pulling image ${imageTag}...`);\n\n return new Promise((resolve, reject) => {\n this.docker.pull(imageTag, (err: any, stream: NodeJS.ReadableStream) => {\n if (err) return reject(err);\n\n this.docker.modem.followProgress(\n stream,\n (err: any) => {\n if (err) return reject(err);\n console.log(`✓ Pulled image ${imageTag}`);\n resolve();\n },\n (event: any) => {\n // Progress update\n if (event.status) {\n console.log(`${event.status} ${event.progress || ''}`);\n }\n }\n );\n });\n });\n }\n }\n\n private async waitForContainer(container: Docker.Container): Promise<any> {\n return new Promise((resolve, reject) => {\n container.wait((err, data) => {\n if (err) return reject(err);\n resolve(data);\n });\n });\n }\n\n private timeout(ms: number): Promise<null> {\n return new Promise((resolve) => setTimeout(() => resolve(null), ms));\n }\n\n private parseMemory(memory: string): number {\n const units: { [key: string]: number } = {\n b: 1,\n kb: 1024,\n mb: 1024 * 1024,\n gb: 1024 * 1024 * 1024,\n };\n\n const match = memory.toLowerCase().match(/^(\\d+)\\s*(b|kb|mb|gb)$/);\n if (!match) {\n throw new Error(`Invalid memory format: ${memory}`);\n }\n\n const [, value, unit] = match;\n return parseInt(value, 10) * units[unit];\n }\n\n async checkDockerAvailable(): Promise<boolean> {\n try {\n await this.docker.ping();\n return true;\n } catch {\n return false;\n }\n }\n\n async getDockerInfo(): Promise<any> {\n return this.docker.info();\n }\n\n /**\n * Cleanup all running containers\n * Called when agent is shutting down\n */\n async cleanup(): Promise<void> {\n if (this.runningContainers.size === 0) {\n return;\n }\n\n console.log(`🧹 Cleaning up ${this.runningContainers.size} running containers...`);\n\n const cleanupPromises = Array.from(this.runningContainers).map(async (container) => {\n try {\n const inspect = await container.inspect();\n if (inspect.State.Running) {\n console.log(` Stopping container ${inspect.Id.slice(0, 12)}...`);\n await container.stop({ t: 10 }); // 10 second grace period\n await container.remove({ force: true });\n }\n } catch (error) {\n // Container might already be stopped/removed\n console.warn(` Warning: Failed to cleanup container:`, (error as Error).message);\n }\n });\n\n await Promise.all(cleanupPromises);\n this.runningContainers.clear();\n console.log('✓ Container cleanup completed');\n }\n\n /**\n * Get number of running containers\n */\n getRunningContainerCount(): number {\n return this.runningContainers.size;\n }\n\n /**\n * Pre-pull container images and start persistent containers on startup\n * This speeds up request handling by having containers ready\n */\n async prepareContainers(containers: Map<string, ContainerMetadata>): Promise<void> {\n if (containers.size === 0) {\n console.log('No containers to prepare');\n return;\n }\n\n console.log(`\\n🚀 Preparing ${containers.size} containers...`);\n\n const pullAndStartPromises = Array.from(containers.entries()).map(async ([id, container]) => {\n const imageTag = `${container.image}:${container.tag || 'latest'}`;\n\n try {\n console.log(` Pulling ${imageTag}...`);\n await this.pullImage(container.image, container.tag || 'latest');\n console.log(` ✓ ${imageTag} ready`);\n } catch (error) {\n console.error(` ❌ Failed to pull ${imageTag}:`, (error as Error).message);\n // Skip container start if pull failed\n return;\n }\n\n try {\n // Start persistent container\n await this.startPersistentContainer(id, container);\n } catch (error) {\n console.error(` ❌ Failed to start ${container.name || container.image}:`, (error as Error).message);\n }\n });\n\n await Promise.all(pullAndStartPromises);\n console.log('✓ All containers prepared\\n');\n }\n\n /**\n * Start a persistent container that stays running\n */\n private async startPersistentContainer(\n containerId: string,\n metadata: ContainerMetadata\n ): Promise<void> {\n // Use metadata.name for Docker container name (human-readable)\n // This matches the hostname used in runContainer()\n const containerName = `noosphere-${metadata.name}`;\n const imageTag = `${metadata.image}:${metadata.tag || 'latest'}`;\n\n // Check if container already exists\n const existingContainer = this.docker.getContainer(containerName);\n try {\n const inspect = await existingContainer.inspect();\n if (inspect.State.Running) {\n console.log(` ✓ Container ${containerName} already running`);\n this.persistentContainers.set(containerId, existingContainer);\n return;\n } else {\n // Container exists but stopped - try to start it\n try {\n await existingContainer.start();\n console.log(` ✓ Started existing container ${containerName}`);\n this.persistentContainers.set(containerId, existingContainer);\n return;\n } catch (startErr) {\n // Failed to start, remove and recreate\n console.log(` Removing stopped container ${containerName} to recreate...`);\n await existingContainer.remove({ force: true });\n }\n }\n } catch (err) {\n // Container doesn't exist, will create new one\n }\n\n // Create new persistent container\n const dockerNetwork = process.env.DOCKER_NETWORK;\n const createOptions: Docker.ContainerCreateOptions = {\n name: containerName,\n Image: imageTag,\n Tty: false,\n AttachStdout: false,\n AttachStderr: false,\n ExposedPorts: metadata.port ? { [`${metadata.port}/tcp`]: {} } : undefined,\n HostConfig: {\n AutoRemove: false, // Keep container for reuse\n // Only bind ports to host when not using Docker network (local dev)\n PortBindings:\n metadata.port && !dockerNetwork\n ? {\n [`${metadata.port}/tcp`]: [{ HostPort: metadata.port }],\n }\n : undefined,\n // Join the specified Docker network for DinD communication\n NetworkMode: dockerNetwork || undefined,\n },\n Env: metadata.env ? Object.entries(metadata.env).map(([k, v]) => `${k}=${v}`) : undefined,\n };\n\n // Add resource limits\n if (metadata.requirements) {\n const resources: any = {};\n\n if (metadata.requirements.memory) {\n resources.Memory = this.parseMemory(metadata.requirements.memory);\n }\n\n if (metadata.requirements.cpu) {\n resources.NanoCpus = metadata.requirements.cpu * 1e9;\n }\n\n if (metadata.requirements.gpu) {\n createOptions.HostConfig!.DeviceRequests = [\n {\n Driver: 'nvidia',\n Count: -1,\n Capabilities: [['gpu']],\n },\n ];\n }\n\n if (Object.keys(resources).length > 0) {\n createOptions.HostConfig = {\n ...createOptions.HostConfig,\n ...resources,\n };\n }\n }\n\n const dockerContainer = await this.docker.createContainer(createOptions);\n await dockerContainer.start();\n\n this.persistentContainers.set(containerId, dockerContainer);\n if (metadata.port) {\n this.containerPorts.set(containerId, parseInt(metadata.port));\n }\n\n console.log(` ✓ Started persistent container ${containerName}`);\n }\n\n /**\n * Stop and remove all persistent containers\n */\n async stopPersistentContainers(): Promise<void> {\n if (this.persistentContainers.size === 0) {\n return;\n }\n\n console.log(`\\n🛑 Stopping ${this.persistentContainers.size} persistent containers...`);\n\n const stopPromises = Array.from(this.persistentContainers.entries()).map(\n async ([id, container]) => {\n try {\n const inspect = await container.inspect();\n if (inspect.State.Running) {\n console.log(` Stopping ${inspect.Name}...`);\n await container.stop({ t: 10 });\n }\n await container.remove({ force: true });\n console.log(` ✓ Stopped ${inspect.Name}`);\n } catch (error) {\n console.warn(` Warning: Failed to stop container ${id}:`, (error as Error).message);\n }\n }\n );\n\n await Promise.all(stopPromises);\n this.persistentContainers.clear();\n this.containerPorts.clear();\n console.log('✓ All persistent containers stopped\\n');\n }\n}\n","import { ethers } from 'ethers';\nimport { EventMonitor } from './EventMonitor';\nimport { ContainerManager } from './ContainerManager';\nimport { SchedulerService, SchedulerConfig } from './SchedulerService';\nimport { WalletManager, KeystoreManager } from '@noosphere/crypto';\nimport { RegistryManager } from '@noosphere/registry';\nimport { ABIs } from '@noosphere/contracts';\nimport { CommitmentUtils, PayloadUtils } from './utils/CommitmentUtils';\nimport { PayloadResolver } from './PayloadResolver';\nimport { ConfigLoader } from './utils/ConfigLoader';\nimport type {\n AgentConfig,\n RequestStartedEvent,\n ContainerMetadata,\n Commitment,\n NoosphereAgentConfig,\n PayloadData,\n} from './types';\n\nexport interface ComputeDeliveredEvent {\n requestId: string;\n subscriptionId: number;\n interval: number;\n containerId: string;\n redundancy: number;\n feeAmount: string;\n feeToken: string;\n input: string | PayloadData;\n output: string | PayloadData;\n txHash: string;\n blockNumber: number;\n gasUsed: bigint;\n gasPrice: bigint;\n}\n\nexport interface RequestStartedCallbackEvent {\n requestId: string;\n subscriptionId: number;\n interval: number;\n containerId: string;\n redundancy: number;\n feeAmount: string;\n feeToken: string;\n verifier: string;\n walletAddress: string;\n blockNumber: number;\n}\n\n/**\n * Event data for commitment success (scheduler prepareNextInterval)\n */\nexport interface CommitmentSuccessCallbackEvent {\n subscriptionId: bigint;\n interval: bigint;\n txHash: string;\n blockNumber: number;\n gasUsed: string;\n gasPrice: string;\n gasCost: string;\n}\n\nexport interface CheckpointData {\n blockNumber: number;\n blockHash?: string;\n blockTimestamp?: number;\n}\n\nexport interface RetryableEvent {\n requestId: string;\n subscriptionId: number;\n interval: number;\n containerId: string;\n retryCount: number;\n}\n\nexport interface ContainerExecutionConfig {\n timeout?: number; // Container execution timeout in ms (default: 300000 = 5 min)\n connectionRetries?: number; // Number of connection retry attempts (default: 5)\n connectionRetryDelayMs?: number; // Delay between retries in ms (default: 3000)\n}\n\nexport interface NoosphereAgentOptions {\n config: AgentConfig;\n routerAbi?: any[]; // Optional - defaults to ABIs.Router from @noosphere/contracts\n coordinatorAbi?: any[]; // Optional - defaults to ABIs.Coordinator from @noosphere/contracts\n getContainer?: (containerId: string) => ContainerMetadata | undefined;\n containers?: Map<string, ContainerMetadata>; // Container map from config\n registryManager?: RegistryManager; // Optional - provide pre-initialized RegistryManager to avoid duplicate loading\n walletManager?: WalletManager; // Optional - provide pre-initialized WalletManager\n paymentWallet?: string; // Optional - WalletFactory wallet address for the agent\n schedulerConfig?: Partial<SchedulerConfig>; // Optional - scheduler configuration from config.json\n containerConfig?: ContainerExecutionConfig; // Optional - container execution configuration\n onRequestStarted?: (event: RequestStartedCallbackEvent) => void; // Callback when request is received\n onRequestProcessing?: (requestId: string) => void; // Callback when request processing starts\n onRequestSkipped?: (requestId: string, reason: string) => void; // Callback when request is skipped\n onRequestFailed?: (requestId: string, error: string, txHash?: string) => void; // Callback when request fails (txHash included if tx was sent)\n onComputeDelivered?: (event: ComputeDeliveredEvent) => void; // Callback when compute is delivered\n onCommitmentSuccess?: (event: CommitmentSuccessCallbackEvent) => void; // Callback when scheduler prepares interval\n isRequestProcessed?: (requestId: string) => boolean; // Check if request is already processed (completed/failed)\n loadCheckpoint?: () => CheckpointData | undefined; // Load checkpoint from storage\n saveCheckpoint?: (checkpoint: CheckpointData) => void; // Save checkpoint to storage\n // Retry configuration\n maxRetries?: number; // Maximum retry attempts for failed requests (default: 3)\n retryIntervalMs?: number; // Interval to check for retryable events (default: 30000ms)\n getRetryableEvents?: (maxRetries: number) => RetryableEvent[]; // Get events that can be retried\n resetEventForRetry?: (requestId: string) => void; // Reset event status to pending for retry\n // Health check configuration\n healthCheckIntervalMs?: number; // Interval to check registry health (default: 300000ms = 5 min)\n // Payload encoder for outputs (allows IPFS upload for large payloads)\n payloadEncoder?: (content: string) => Promise<PayloadData>;\n}\n\nexport class NoosphereAgent {\n private eventMonitor: EventMonitor;\n private containerManager: ContainerManager;\n private scheduler: SchedulerService;\n private walletManager: WalletManager;\n private registryManager: RegistryManager;\n private router: ethers.Contract;\n private coordinator: ethers.Contract;\n private provider: ethers.JsonRpcProvider;\n private config: AgentConfig;\n private getContainer?: (containerId: string) => ContainerMetadata | undefined;\n private containers?: Map<string, ContainerMetadata>;\n private paymentWallet?: string;\n private isRunning = false;\n private processingRequests = new Set<string>(); // Deduplication: track requests being processed\n private retryTimer?: NodeJS.Timeout; // Timer for retry mechanism\n private healthCheckTimer?: NodeJS.Timeout; // Timer for registry health check\n private maxRetries: number;\n private retryIntervalMs: number;\n private healthCheckIntervalMs: number;\n // Container execution config\n private containerTimeout: number;\n private containerConnectionRetries: number;\n private containerConnectionRetryDelayMs: number;\n // Payload encoder (for IPFS upload)\n private payloadEncoder?: (content: string) => Promise<PayloadData>;\n\n constructor(private options: NoosphereAgentOptions) {\n this.config = options.config;\n this.provider = new ethers.JsonRpcProvider(options.config.rpcUrl);\n const provider = this.provider;\n\n // Use default ABIs from @noosphere/contracts if not provided\n const routerAbi = options.routerAbi || ABIs.Router;\n const coordinatorAbi = options.coordinatorAbi || ABIs.Coordinator;\n\n // Use provided WalletManager or create from private key\n if (options.walletManager) {\n this.walletManager = options.walletManager;\n } else if (options.config.privateKey) {\n this.walletManager = new WalletManager(options.config.privateKey, provider);\n } else {\n throw new Error(\n 'Either walletManager or config.privateKey must be provided. ' +\n 'Recommended: Use NoosphereAgent.fromKeystore() for production.'\n );\n }\n\n this.containerManager = new ContainerManager();\n // Use provided registryManager or create a new one\n this.registryManager = options.registryManager || new RegistryManager({\n autoSync: true, // Enable automatic sync with remote registry\n cacheTTL: 3600000, // 1 hour cache\n });\n this.eventMonitor = new EventMonitor(options.config, routerAbi, coordinatorAbi, {\n loadCheckpoint: options.loadCheckpoint,\n saveCheckpoint: options.saveCheckpoint,\n });\n\n // Initialize router contract\n this.router = new ethers.Contract(\n options.config.routerAddress,\n routerAbi,\n this.provider\n );\n\n this.coordinator = new ethers.Contract(\n options.config.coordinatorAddress,\n coordinatorAbi,\n this.walletManager.getWallet()\n );\n\n // Store container sources\n this.getContainer = options.getContainer;\n this.containers = options.containers;\n\n // Initialize scheduler service (with container filter)\n this.scheduler = new SchedulerService(\n provider,\n this.router,\n this.coordinator,\n this.walletManager.getAddress(),\n undefined, // batchReaderAddress (set later)\n undefined, // config (set later)\n this.getContainer // Pass container filter\n );\n\n // Store payment wallet (WalletFactory wallet for the agent)\n this.paymentWallet = options.paymentWallet;\n\n // Validate we have at least one container source\n if (!this.getContainer && (!this.containers || this.containers.size === 0)) {\n console.warn('⚠️ No container source provided. Agent will not be able to execute requests.');\n }\n\n // Initialize retry configuration\n this.maxRetries = options.maxRetries ?? 3;\n this.retryIntervalMs = options.retryIntervalMs ?? 30000; // 30 seconds\n\n // Initialize container execution configuration\n this.containerTimeout = options.containerConfig?.timeout ?? 180000; // 3 minutes default\n this.containerConnectionRetries = options.containerConfig?.connectionRetries ?? 5;\n this.containerConnectionRetryDelayMs = options.containerConfig?.connectionRetryDelayMs ?? 3000; // 3 seconds default\n\n // Initialize health check configuration\n this.healthCheckIntervalMs = options.healthCheckIntervalMs ?? 300000; // 5 minutes default\n\n // Initialize payload encoder (for IPFS upload)\n this.payloadEncoder = options.payloadEncoder;\n }\n\n /**\n * Initialize NoosphereAgent from config.json (RECOMMENDED)\n * This loads all configuration including containers from a config file\n *\n * @param configPath - Path to config.json file\n * @param routerAbi - Router contract ABI (optional - defaults to ABIs.Router)\n * @param coordinatorAbi - Coordinator contract ABI (optional - defaults to ABIs.Coordinator)\n * @returns Initialized NoosphereAgent\n */\n static async fromConfig(\n configPath: string,\n routerAbi?: any[],\n coordinatorAbi?: any[]\n ): Promise<NoosphereAgent> {\n // Load config from file\n const fullConfig = ConfigLoader.loadFromFile(configPath);\n\n // Extract keystore path and password\n const keystorePath = fullConfig.chain.wallet.keystore?.path;\n const password = fullConfig.chain.wallet.keystore?.password;\n\n if (!keystorePath || !password) {\n throw new Error('Keystore path and password are required in config.chain.wallet.keystore');\n }\n\n // Load containers from config\n const containers = ConfigLoader.getContainersFromConfig(fullConfig);\n\n console.log(`📦 Loaded ${containers.size} containers from config:`);\n for (const [id, container] of containers.entries()) {\n console.log(` - ${id}: ${container.image}:${container.tag || 'latest'}`);\n }\n\n // Create provider\n const provider = new ethers.JsonRpcProvider(fullConfig.chain.rpcUrl);\n\n // Load keystore\n const keystoreManager = new KeystoreManager(keystorePath, password);\n await keystoreManager.load();\n\n // Initialize WalletManager from keystore\n const walletManager = await WalletManager.fromKeystoreManager(keystoreManager, provider);\n\n // Create AgentConfig from NoosphereAgentConfig\n const agentConfig: AgentConfig = {\n rpcUrl: fullConfig.chain.rpcUrl,\n wsRpcUrl: fullConfig.chain.wsRpcUrl,\n routerAddress: fullConfig.chain.routerAddress,\n coordinatorAddress: fullConfig.chain.coordinatorAddress || fullConfig.chain.routerAddress,\n deploymentBlock: fullConfig.chain.deploymentBlock,\n pollingInterval: fullConfig.chain.processingInterval,\n };\n\n // Extract payment wallet (WalletFactory wallet for the agent)\n const paymentWallet = fullConfig.chain.wallet.paymentAddress;\n\n // Create agent with pre-initialized WalletManager and containers\n return new NoosphereAgent({\n config: agentConfig,\n routerAbi,\n coordinatorAbi,\n walletManager,\n containers,\n paymentWallet,\n });\n }\n\n /**\n * Initialize NoosphereAgent from keystore (RECOMMENDED)\n * This is the secure way to initialize an agent in production\n *\n * @param keystorePath - Path to keystore file\n * @param password - Keystore password\n * @param options - Agent configuration options\n * @returns Initialized NoosphereAgent\n */\n static async fromKeystore(\n keystorePath: string,\n password: string,\n options: Omit<NoosphereAgentOptions, 'walletManager'>\n ): Promise<NoosphereAgent> {\n const provider = new ethers.JsonRpcProvider(options.config.rpcUrl);\n\n // Load keystore\n const keystoreManager = new KeystoreManager(keystorePath, password);\n await keystoreManager.load();\n\n // Initialize WalletManager from keystore\n const walletManager = await WalletManager.fromKeystoreManager(keystoreManager, provider);\n\n // Create agent with pre-initialized WalletManager\n return new NoosphereAgent({\n ...options,\n walletManager,\n });\n }\n\n async start(): Promise<void> {\n console.log('Starting Noosphere Agent...');\n\n // Load registry (local + remote sync) - skip if already loaded\n console.log('📋 Loading container registry...');\n const existingStats = this.registryManager.getStats();\n if (existingStats.totalContainers === 0) {\n await this.registryManager.load();\n }\n const stats = this.registryManager.getStats();\n console.log(\n `✓ Registry loaded: ${stats.totalContainers} containers, ${stats.totalVerifiers} verifiers`\n );\n\n // Check Docker availability\n const dockerAvailable = await this.containerManager.checkDockerAvailable();\n if (!dockerAvailable) {\n throw new Error('Docker is not available. Please ensure Docker daemon is running.');\n }\n\n // Get wallet info\n const address = this.walletManager.getAddress();\n const balance = await this.walletManager.getBalance();\n console.log(`Agent wallet: ${address}`);\n console.log(`Balance: ${ethers.formatEther(balance)} ETH`);\n\n if (balance === 0n) {\n console.warn('⚠️ Warning: Wallet has zero balance. Agent needs ETH for gas fees.');\n }\n\n // Pre-pull container images if containers are provided\n if (this.containers && this.containers.size > 0) {\n console.log(`\\n🚀 Preparing ${this.containers.size} containers...`);\n await this.containerManager.prepareContainers(this.containers);\n }\n\n // Connect event monitor\n await this.eventMonitor.connect();\n\n // Set up event handler\n this.eventMonitor.on('RequestStarted', async (event: RequestStartedEvent) => {\n await this.handleRequest(event);\n });\n\n // Start listening\n await this.eventMonitor.start();\n\n // Try to get SubscriptionBatchReader address from coordinator\n try {\n const batchReaderAddress = await this.coordinator.getSubscriptionBatchReader();\n if (\n batchReaderAddress &&\n batchReaderAddress !== '0x0000000000000000000000000000000000000000'\n ) {\n console.log(`✓ SubscriptionBatchReader found: ${batchReaderAddress}`);\n\n // Reinitialize scheduler with BatchReader and config from options\n this.scheduler.stop();\n this.scheduler = new SchedulerService(\n this.provider,\n this.router,\n this.coordinator,\n this.walletManager.getAddress(),\n batchReaderAddress,\n this.options.schedulerConfig || {\n cronIntervalMs: 60000, // 1 minute (default)\n syncPeriodMs: 3000, // 3 seconds (default)\n maxRetryAttempts: 3, // 3 retries (default)\n },\n this.getContainer // Pass container filter\n );\n } else {\n console.warn('⚠️ SubscriptionBatchReader not available - subscription sync disabled');\n }\n } catch (error) {\n console.warn('⚠️ Failed to get SubscriptionBatchReader address:', (error as Error).message);\n }\n\n // Start scheduler service\n this.scheduler.start();\n\n // Listen for commitment:success events to handle cases where WebSocket misses events\n this.scheduler.on('commitment:success', async (data: {\n subscriptionId: bigint;\n interval: bigint;\n txHash: string;\n blockNumber: number;\n gasUsed?: string;\n gasPrice?: string;\n gasCost?: string;\n requestStartedEvent?: RequestStartedEvent;\n }) => {\n // Call callback if provided (for DB persistence)\n if (this.options.onCommitmentSuccess) {\n this.options.onCommitmentSuccess({\n subscriptionId: data.subscriptionId,\n interval: data.interval,\n txHash: data.txHash,\n blockNumber: data.blockNumber,\n gasUsed: data.gasUsed || '0',\n gasPrice: data.gasPrice || '0',\n gasCost: data.gasCost || '0',\n });\n }\n\n if (data.requestStartedEvent) {\n console.log(` 📥 Processing RequestStarted from prepare receipt (fallback for missed WebSocket)`);\n await this.handleRequest(data.requestStartedEvent);\n }\n });\n\n // Start retry timer if retry callbacks are provided\n if (this.options.getRetryableEvents && this.options.resetEventForRetry) {\n this.startRetryTimer();\n }\n\n // Start health check timer\n this.startHealthCheck();\n\n this.isRunning = true;\n console.log('✓ Noosphere Agent is running');\n console.log('Listening for requests...');\n }\n\n /**\n * Start the retry timer for failed requests\n */\n private startRetryTimer(): void {\n if (this.retryTimer) {\n clearInterval(this.retryTimer);\n }\n\n console.log(`🔄 Retry mechanism enabled: max ${this.maxRetries} retries, check every ${this.retryIntervalMs / 1000}s`);\n\n this.retryTimer = setInterval(async () => {\n await this.processRetries();\n }, this.retryIntervalMs);\n }\n\n /**\n * Start the health check timer for registry validation\n */\n private startHealthCheck(): void {\n if (this.healthCheckTimer) {\n clearInterval(this.healthCheckTimer);\n }\n\n console.log(`🏥 Health check enabled: check every ${this.healthCheckIntervalMs / 1000}s`);\n\n this.healthCheckTimer = setInterval(async () => {\n await this.performHealthCheck();\n }, this.healthCheckIntervalMs);\n }\n\n /**\n * Perform health check - verify registry has containers and reload if necessary\n */\n private async performHealthCheck(): Promise<void> {\n const stats = this.registryManager.getStats();\n\n if (stats.totalContainers === 0) {\n console.warn('⚠️ Health check: 0 containers detected, attempting registry reload...');\n\n try {\n await this.registryManager.reload();\n const newStats = this.registryManager.getStats();\n\n if (newStats.totalContainers > 0) {\n console.log(`✓ Health check: Registry recovered - ${newStats.totalContainers} containers loaded`);\n } else {\n console.error('❌ Health check: Registry reload failed - still 0 containers');\n }\n } catch (error) {\n console.error('❌ Health check: Registry reload error:', (error as Error).message);\n }\n }\n }\n\n /**\n * Process retryable failed events (with throttling to avoid rate limits)\n */\n private async processRetries(): Promise<void> {\n if (!this.options.getRetryableEvents || !this.options.resetEventForRetry) {\n return;\n }\n\n const retryableEvents = this.options.getRetryableEvents(this.maxRetries);\n if (retryableEvents.length === 0) {\n return;\n }\n\n // Only retry one event per cycle to avoid rate limiting\n const event = retryableEvents[0];\n\n // Skip if already being processed\n if (this.processingRequests.has(event.requestId)) {\n return;\n }\n\n console.log(`🔄 Retrying request ${event.requestId.slice(0, 10)}... (attempt ${event.retryCount + 1}/${this.maxRetries}, ${retryableEvents.length} remaining)`);\n\n // Reset event to pending\n this.options.resetEventForRetry(event.requestId);\n\n // Re-process the request\n const container = this.getContainerMetadata(event.containerId);\n if (!container) {\n console.log(` ⚠️ Container ${event.containerId.slice(0, 10)}... no longer supported, skipping retry`);\n return;\n }\n\n // Create a synthetic RequestStartedEvent for retry\n const retryEvent: RequestStartedEvent = {\n requestId: event.requestId,\n subscriptionId: BigInt(event.subscriptionId),\n interval: event.interval,\n containerId: event.containerId,\n redundancy: 1,\n useDeliveryInbox: false,\n feeAmount: BigInt(0),\n feeToken: '0x0000000000000000000000000000000000000000',\n walletAddress: '0x0000000000000000000000000000000000000000',\n verifier: '0x0000000000000000000000000000000000000000',\n coordinator: this.config.coordinatorAddress,\n blockNumber: 0,\n };\n\n // Handle the request\n try {\n await this.handleRequest(retryEvent);\n } catch (error) {\n console.log(` ❌ Retry failed for ${event.requestId.slice(0, 10)}...: ${(error as Error).message}`);\n }\n }\n\n /**\n * Convert registry ContainerMetadata to agent-core ContainerMetadata\n */\n private convertRegistryContainer(registryContainer: any): ContainerMetadata {\n // Parse image name and tag from imageName (format: \"image:tag\" or just \"image\")\n const [image, tag] = registryContainer.imageName.split(':');\n\n return {\n id: registryContainer.id,\n name: registryContainer.name,\n image: image,\n tag: tag || 'latest',\n port: registryContainer.port?.toString(),\n env: registryContainer.env,\n requirements: registryContainer.requirements,\n payments: registryContainer.payments\n ? {\n basePrice: registryContainer.payments.basePrice,\n unit: registryContainer.payments.token,\n per: registryContainer.payments.per,\n }\n : undefined,\n verified: registryContainer.verified,\n };\n }\n\n /**\n * Get container metadata from available sources\n * Returns undefined if container is not supported by this agent\n *\n * NOTE: Only checks config-defined sources (callback and containers map).\n * Registry is NOT used here - we only process containers explicitly configured.\n */\n private getContainerMetadata(containerId: string): ContainerMetadata | undefined {\n // 1. Try callback function first (allows config-based filtering)\n if (this.getContainer) {\n const container = this.getContainer(containerId);\n if (container) return container;\n }\n\n // 2. Fallback to containers map from config\n // NOTE: We do NOT use registry here - only explicitly configured containers\n if (this.containers) {\n const container = this.containers.get(containerId);\n if (container) return container;\n }\n\n return undefined;\n }\n\n private async handleRequest(event: RequestStartedEvent): Promise<void> {\n const requestIdShort = event.requestId.slice(0, 10);\n\n // Container filter: Only process events for containers we support\n // This must be checked FIRST, before any DB save or RPC calls\n const container = this.getContainerMetadata(event.containerId);\n if (!container) {\n // Silently skip - we don't support this container\n return;\n }\n\n // Deduplication: Check if this request is already being processed\n if (this.processingRequests.has(event.requestId)) {\n console.log(` ⏭️ Request ${requestIdShort}... already being processed, skipping duplicate`);\n return;\n }\n\n // Check if request has already been processed (completed/failed)\n if (this.options.isRequestProcessed && this.options.isRequestProcessed(event.requestId)) {\n console.log(` ⏭️ Request ${requestIdShort}... already processed, skipping`);\n return;\n }\n\n this.processingRequests.add(event.requestId);\n\n console.log(`\\n[${new Date().toISOString()}] RequestStarted: ${requestIdShort}...`);\n console.log(` SubscriptionId: ${event.subscriptionId}`);\n console.log(` Interval: ${event.interval}`);\n console.log(` ContainerId: ${event.containerId.slice(0, 10)}...`);\n console.log(` 📦 Container: ${container.name} (${container.image}:${container.tag || 'latest'})`);\n\n // Call onRequestStarted callback if provided (saves to DB)\n // This is called AFTER container check, so only supported containers are saved\n if (this.options.onRequestStarted) {\n this.options.onRequestStarted({\n requestId: event.requestId,\n subscriptionId: Number(event.subscriptionId),\n interval: Number(event.interval),\n containerId: event.containerId,\n redundancy: event.redundancy,\n feeAmount: event.feeAmount.toString(),\n feeToken: event.feeToken,\n verifier: event.verifier,\n walletAddress: event.walletAddress,\n blockNumber: event.blockNumber,\n });\n }\n\n // Check if this interval is still current (skip old replayed events)\n // Note: One-time executions (intervalSeconds=0) return type(uint32).max, should not be skipped\n try {\n const currentInterval = await this.router.getComputeSubscriptionInterval(event.subscriptionId);\n const eventInterval = Number(event.interval);\n\n // Skip check only for scheduled subscriptions (not one-time executions)\n // type(uint32).max = 4294967295 indicates one-time execution\n const isOneTimeExecution = currentInterval === 4294967295n;\n\n if (!isOneTimeExecution && currentInterval > eventInterval + 2) {\n console.log(` ⏭️ Skipping old interval ${eventInterval} (current: ${currentInterval})`);\n if (this.options.onRequestSkipped) {\n this.options.onRequestSkipped(event.requestId, `Old interval ${eventInterval} (current: ${currentInterval})`);\n }\n this.processingRequests.delete(event.requestId);\n return;\n }\n } catch (error) {\n console.warn(` Could not verify interval currency:`, (error as Error).message);\n // Continue processing if we can't verify\n }\n\n // Mark this interval as committed (subscription will be tracked by batch reader)\n this.scheduler.markIntervalCommitted(BigInt(event.subscriptionId), BigInt(event.interval));\n\n // Track sent transaction hash for error reporting\n let sentTxHash: string | undefined;\n\n try {\n // Self-coordination: Wait based on position-based priority\n await this.waitForPriority(event);\n\n // Call onRequestProcessing callback if provided\n if (this.options.onRequestProcessing) {\n this.options.onRequestProcessing(event.requestId);\n }\n\n // Check if already fulfilled (redundancy check)\n const currentCount = await this.coordinator.redundancyCount(event.requestId);\n if (currentCount >= event.redundancy) {\n console.log(` ⏭️ Already fulfilled (${currentCount}/${event.redundancy}), skipping`);\n if (this.options.onRequestSkipped) {\n this.options.onRequestSkipped(event.requestId, `Already fulfilled (${currentCount}/${event.redundancy})`);\n }\n this.processingRequests.delete(event.requestId);\n return;\n }\n\n // Container already verified at the start of handleRequest()\n // Using the container variable from there\n\n // Fetch subscription to get client address\n const subscription = await this.router.getComputeSubscription(event.subscriptionId);\n const clientAddress = subscription.client;\n\n if (!clientAddress || clientAddress === '0x0000000000000000000000000000000000000000') {\n console.error(` ❌ Invalid client address for subscription ${event.subscriptionId}`);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, `Invalid client address for subscription ${event.subscriptionId}`);\n }\n return;\n }\n\n console.log(` 📞 Fetching inputs from client: ${clientAddress.slice(0, 10)}...`);\n\n // Call client's getComputeInputs to get the input data\n // InputType enum: 0=RAW_DATA, 1=URI_STRING, 2=PAYLOAD_DATA\n const clientAbi = [\n 'function getComputeInputs(uint64 subscriptionId, uint32 interval, uint32 timestamp, address caller) external view returns (bytes memory data, uint8 inputType)',\n ];\n const client = new ethers.Contract(clientAddress, clientAbi, this.provider);\n const timestamp = Math.floor(Date.now() / 1000);\n\n let inputBytes: string;\n let inputType: number;\n try {\n const result = await client.getComputeInputs(\n event.subscriptionId,\n event.interval,\n timestamp,\n this.walletManager.getAddress()\n );\n inputBytes = result[0];\n inputType = Number(result[1]);\n } catch (error) {\n const errorMessage = (error as Error).message || String(error);\n console.error(` ❌ Failed to get inputs from client:`, error);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, `Failed to get inputs: ${errorMessage}`);\n }\n return;\n }\n\n // Convert bytes to string based on inputType\n let inputData: string;\n if (inputType === 2) {\n // PAYLOAD_DATA: ABI-encoded PayloadData struct\n console.log(` 📦 Input type: PAYLOAD_DATA - resolving from external storage...`);\n try {\n // Decode ABI-encoded PayloadData: (bytes32 contentHash, bytes uri)\n const abiCoder = ethers.AbiCoder.defaultAbiCoder();\n const decoded = abiCoder.decode(['bytes32', 'bytes'], inputBytes);\n const contentHash = decoded[0] as string;\n const uriBytes = decoded[1] as string;\n const uri = ethers.toUtf8String(uriBytes);\n\n console.log(` 📍 Content hash: ${contentHash.slice(0, 18)}...`);\n console.log(` 📍 URI: ${uri}`);\n\n // Resolve the payload using PayloadResolver\n // Use IPFS_GATEWAY from environment for fetching (e.g., Pinata gateway for cross-provider support)\n const ipfsGateway = process.env.IPFS_GATEWAY || 'http://localhost:8080/ipfs/';\n console.log(` 🌐 Using IPFS gateway: ${ipfsGateway}`);\n const payloadResolver = new PayloadResolver({\n ipfs: { gateway: ipfsGateway }\n });\n const resolved = await payloadResolver.resolve({ contentHash, uri });\n inputData = resolved.content;\n console.log(` ✅ Payload resolved, size: ${inputData.length} bytes`);\n } catch (resolveError) {\n const errorMessage = (resolveError as Error).message || String(resolveError);\n console.error(` ❌ Failed to resolve PayloadData:`, resolveError);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, `Failed to resolve PayloadData: ${errorMessage}`);\n }\n return;\n }\n } else {\n // RAW_DATA (0) or URI_STRING (1): direct UTF-8 string\n inputData = ethers.toUtf8String(inputBytes);\n }\n console.log(\n ` 📥 Inputs received: ${inputData.substring(0, 100)}${inputData.length > 100 ? '...' : ''}`\n );\n\n // Execute container\n console.log(` ⚙️ Executing...`);\n const result = await this.containerManager.runContainer(\n container,\n inputData,\n this.containerTimeout,\n this.containerConnectionRetries,\n this.containerConnectionRetryDelayMs\n );\n\n if (result.exitCode !== 0) {\n console.error(` ❌ Container execution failed with exit code ${result.exitCode}`);\n console.error(` 📄 Container output:`, result.output);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, `Container execution failed with exit code ${result.exitCode}`);\n }\n return;\n }\n\n console.log(` ✓ Execution completed in ${result.executionTime}ms`);\n\n // Submit result to coordinator\n console.log(` 📤 Submitting result...`);\n\n // Use the original input data from client (already a string)\n const input = inputData;\n const output = result.output;\n const proof = event.verifier ? result.output : ''; // Use output as proof if verifier exists\n\n // Use the wallet address from the event (subscription's payment wallet)\n const subscriptionWallet = event.walletAddress;\n\n // Create commitment using SDK utility\n const commitment: Commitment = CommitmentUtils.fromEvent(event, subscriptionWallet);\n\n // Encode commitment data using SDK utility\n const commitmentData = CommitmentUtils.encode(commitment);\n\n // Use payment wallet (WalletFactory wallet) if set, otherwise fallback to EOA\n const nodeWallet = this.paymentWallet || this.walletManager.getAddress();\n\n // Create PayloadData for input, output, and proof\n // Use custom payloadEncoder if provided (for IPFS upload), otherwise inline\n console.log(` 📦 payloadEncoder available: ${!!this.payloadEncoder}`);\n const inputPayload = this.payloadEncoder\n ? await this.payloadEncoder(input)\n : PayloadUtils.fromInlineData(input);\n const outputPayload = this.payloadEncoder\n ? await this.payloadEncoder(output)\n : PayloadUtils.fromInlineData(output);\n const proofPayload = proof\n ? (this.payloadEncoder ? await this.payloadEncoder(proof) : PayloadUtils.fromInlineData(proof))\n : PayloadUtils.empty();\n\n // Send transaction\n const tx = await this.coordinator.reportComputeResult(\n event.interval,\n inputPayload,\n outputPayload,\n proofPayload,\n commitmentData,\n nodeWallet\n );\n\n // Capture tx hash immediately for error reporting\n sentTxHash = tx.hash;\n console.log(` 📤 Transaction sent: ${tx.hash}`);\n\n // Wait for confirmation\n const receipt = await tx.wait();\n\n if (receipt.status === 1) {\n console.log(` ✓ Result delivered successfully (block ${receipt.blockNumber})`);\n console.log(` 💰 Fee earned: ${ethers.formatEther(event.feeAmount)} ETH`);\n\n // Call onComputeDelivered callback if provided\n if (this.options.onComputeDelivered) {\n this.options.onComputeDelivered({\n requestId: event.requestId,\n subscriptionId: Number(event.subscriptionId),\n interval: Number(event.interval),\n containerId: event.containerId,\n redundancy: event.redundancy,\n feeAmount: event.feeAmount.toString(),\n feeToken: event.feeToken,\n input: inputPayload,\n output: outputPayload,\n txHash: tx.hash,\n blockNumber: receipt.blockNumber,\n gasUsed: receipt.gasUsed,\n gasPrice: receipt.gasPrice || tx.gasPrice || 0n,\n });\n }\n } else {\n throw new Error(`Delivery transaction failed with status ${receipt.status}`);\n }\n } catch (error) {\n const errorMessage = (error as Error).message || String(error);\n const errorCode = (error as any).code;\n\n // Handle nonce expired error - this usually means another handler already processed this request\n if (errorCode === 'NONCE_EXPIRED' || errorMessage.includes('nonce has already been used') || errorMessage.includes('nonce too low')) {\n console.log(` ⚠️ Nonce expired (likely already processed by another handler)`);\n // Don't mark as failed - it was probably successful via another path\n return;\n }\n\n console.error(` ❌ Error processing request:`, error);\n if (this.options.onRequestFailed) {\n this.options.onRequestFailed(event.requestId, errorMessage, sentTxHash);\n }\n } finally {\n // Cleanup: Remove from processing set\n this.processingRequests.delete(event.requestId);\n }\n }\n\n /**\n * Self-coordination: Calculate priority and wait\n */\n private async waitForPriority(event: RequestStartedEvent): Promise<void> {\n const priority = this.calculatePriority(event.requestId);\n const maxDelay = event.redundancy === 1 ? 1000 : 200; // 1s for single redundancy, 200ms otherwise\n const delay = Math.floor((priority / 0xffffffff) * maxDelay);\n\n if (delay > 0) {\n console.log(\n ` ⏱️ Priority wait: ${delay}ms (priority: 0x${priority.toString(16).slice(0, 8)})`\n );\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n\n /**\n * Calculate deterministic priority for this agent and request\n */\n private calculatePriority(requestId: string): number {\n const hash = ethers.keccak256(ethers.concat([requestId, this.walletManager.getAddress()]));\n\n // Use first 8 hex chars as priority (0x00000000 - 0xffffffff)\n return parseInt(hash.slice(2, 10), 16);\n }\n\n async stop(): Promise<void> {\n console.log('Stopping Noosphere Agent...');\n\n // Stop retry timer\n if (this.retryTimer) {\n clearInterval(this.retryTimer);\n this.retryTimer = undefined;\n }\n\n // Stop health check timer\n if (this.healthCheckTimer) {\n clearInterval(this.healthCheckTimer);\n this.healthCheckTimer = undefined;\n }\n\n // Stop event monitoring\n await this.eventMonitor.stop();\n\n // Stop scheduler\n this.scheduler.stop();\n\n // Cleanup running containers\n await this.containerManager.cleanup();\n\n // Stop persistent containers\n await this.containerManager.stopPersistentContainers();\n\n this.isRunning = false;\n console.log('✓ Agent stopped');\n }\n\n getStatus(): {\n running: boolean;\n address: string;\n scheduler: {\n totalSubscriptions: number;\n activeSubscriptions: number;\n committedIntervals: number;\n pendingTransactions: number;\n };\n containers: {\n runningCount: number;\n };\n } {\n return {\n running: this.isRunning,\n address: this.walletManager.getAddress(),\n scheduler: this.scheduler.getStats(),\n containers: {\n runningCount: this.containerManager.getRunningContainerCount(),\n },\n };\n }\n\n /**\n * Get scheduler service (for advanced usage)\n */\n getScheduler(): SchedulerService {\n return this.scheduler;\n }\n}\n","/**\n * SchedulerService\n *\n * Manages periodic commitment generation for active subscriptions.\n * Equivalent to Java's CommitmentGenerationService with cron scheduling.\n */\n\nimport { EventEmitter } from 'events';\nimport { Contract, Provider, TransactionReceipt } from 'ethers';\nimport { SubscriptionBatchReaderContract, type ComputeSubscription } from '@noosphere/contracts';\nimport type { RequestStartedEvent } from './types';\n\nexport interface SubscriptionState {\n subscriptionId: bigint;\n routeId: string;\n containerId: string;\n client: string;\n wallet: string;\n activeAt: bigint;\n intervalSeconds: bigint;\n maxExecutions: bigint;\n redundancy: number;\n verifier?: string;\n currentInterval: bigint;\n lastProcessedAt: number;\n pendingTx?: string;\n txAttempts: number;\n}\n\nexport interface SchedulerConfig {\n cronIntervalMs: number; // Default: 60000 (1 minute)\n maxRetryAttempts: number; // Default: 3\n syncPeriodMs: number; // Default: 3000 (3 seconds)\n // Persistence callbacks for committed intervals\n loadCommittedIntervals?: () => string[]; // Load from DB on startup\n saveCommittedInterval?: (key: string) => void; // Save to DB when committed\n}\n\nexport class SchedulerService extends EventEmitter {\n private subscriptions = new Map<string, SubscriptionState>();\n private committedIntervals = new Set<string>(); // subscriptionId:interval\n private pendingTxs = new Map<string, string>(); // key -> txHash\n private intervalTimer?: NodeJS.Timeout;\n private syncTimer?: NodeJS.Timeout;\n private config: SchedulerConfig;\n private batchReader?: SubscriptionBatchReaderContract;\n private lastSyncedId: bigint = 0n;\n private maxSubscriptionId?: bigint;\n private getContainer?: (containerId: string) => any;\n\n constructor(\n private provider: Provider,\n private router: Contract,\n private coordinator: Contract,\n private agentWallet: string,\n batchReaderAddress?: string,\n config?: Partial<SchedulerConfig>,\n getContainer?: (containerId: string) => any\n ) {\n super();\n this.config = {\n cronIntervalMs: config?.cronIntervalMs ?? 60000, // 1 minute\n maxRetryAttempts: config?.maxRetryAttempts ?? 3,\n syncPeriodMs: config?.syncPeriodMs ?? 3000, // 3 seconds\n loadCommittedIntervals: config?.loadCommittedIntervals,\n saveCommittedInterval: config?.saveCommittedInterval,\n };\n this.getContainer = getContainer;\n\n // Initialize SubscriptionBatchReader if address provided\n if (batchReaderAddress) {\n this.batchReader = new SubscriptionBatchReaderContract(batchReaderAddress, provider);\n console.log(`✓ SubscriptionBatchReader configured: ${batchReaderAddress}`);\n } else {\n console.warn('⚠️ SubscriptionBatchReader not configured - subscription sync disabled');\n }\n }\n\n /**\n * Start the scheduler service\n */\n start(): void {\n console.log('🕐 Starting Scheduler Service...');\n console.log(` Commitment generation interval: ${this.config.cronIntervalMs}ms`);\n console.log(` Sync period: ${this.config.syncPeriodMs}ms`);\n\n // Load committed intervals from persistent storage\n if (this.config.loadCommittedIntervals) {\n const loaded = this.config.loadCommittedIntervals();\n for (const key of loaded) {\n this.committedIntervals.add(key);\n }\n if (loaded.length > 0) {\n console.log(` Loaded ${loaded.length} committed intervals from storage`);\n }\n }\n\n // Start commitment generation timer (like Spring @Scheduled cron)\n this.intervalTimer = setInterval(() => this.generateCommitments(), this.config.cronIntervalMs);\n\n // Start periodic sync timer\n this.syncTimer = setInterval(() => this.syncSubscriptions(), this.config.syncPeriodMs);\n\n console.log('✓ Scheduler Service started');\n }\n\n /**\n * Stop the scheduler service\n */\n stop(): void {\n if (this.intervalTimer) {\n clearInterval(this.intervalTimer);\n this.intervalTimer = undefined;\n }\n if (this.syncTimer) {\n clearInterval(this.syncTimer);\n this.syncTimer = undefined;\n }\n console.log('✓ Scheduler Service stopped');\n }\n\n /**\n * Track a new subscription\n */\n trackSubscription(\n subscription: Omit<SubscriptionState, 'currentInterval' | 'lastProcessedAt' | 'txAttempts'>\n ): void {\n const key = subscription.subscriptionId.toString();\n\n if (this.subscriptions.has(key)) {\n console.log(` Subscription ${key} already tracked, updating...`);\n }\n\n // Calculate current interval based on elapsed time\n // Note: Contract uses 1-based indexing: ((timestamp - activeAt) / intervalSeconds) + 1\n const now = Math.floor(Date.now() / 1000);\n const elapsed = now - Number(subscription.activeAt);\n const currentInterval = subscription.intervalSeconds > 0n\n ? BigInt(Math.max(1, Math.floor(elapsed / Number(subscription.intervalSeconds)) + 1))\n : 1n;\n\n this.subscriptions.set(key, {\n ...subscription,\n currentInterval,\n lastProcessedAt: Date.now(),\n txAttempts: 0,\n });\n\n console.log(`✓ Tracking subscription ${key}`);\n this.emit('subscription:tracked', subscription.subscriptionId);\n }\n\n /**\n * Remove a subscription from tracking\n */\n untrackSubscription(subscriptionId: bigint): void {\n const key = subscriptionId.toString();\n if (this.subscriptions.delete(key)) {\n // Clean up committedIntervals for this subscription to prevent memory leak\n const prefix = `${key}:`;\n let cleanedCount = 0;\n for (const commitmentKey of this.committedIntervals) {\n if (commitmentKey.startsWith(prefix)) {\n this.committedIntervals.delete(commitmentKey);\n cleanedCount++;\n }\n }\n if (cleanedCount > 0) {\n console.log(` 🧹 Cleaned up ${cleanedCount} committed intervals for subscription ${key}`);\n }\n console.log(`✓ Stopped tracking subscription ${key}`);\n this.emit('subscription:untracked', subscriptionId);\n }\n }\n\n /**\n * Mark an interval as committed (for RequestStarted events)\n * Also persists to storage if callback is configured\n */\n markIntervalCommitted(subscriptionId: bigint, interval: bigint): void {\n const commitmentKey = `${subscriptionId}:${interval}`;\n this.addCommittedInterval(commitmentKey);\n console.log(` ✓ Marked interval ${interval} as committed for subscription ${subscriptionId}`);\n }\n\n /**\n * Add to committed intervals set and persist to storage\n */\n private addCommittedInterval(key: string): void {\n if (!this.committedIntervals.has(key)) {\n this.committedIntervals.add(key);\n if (this.config.saveCommittedInterval) {\n this.config.saveCommittedInterval(key);\n }\n }\n }\n\n /**\n * Main commitment generation loop (runs every cronIntervalMs)\n * Equivalent to Java's CommitmentGenerationService.generateCommitment()\n */\n private async generateCommitments(): Promise<void> {\n try {\n const timestamp = new Date().toISOString();\n console.log(`\\n🔄 [${timestamp}] Starting commitment generation task...`);\n\n // 1. Prune failed transactions\n this.pruneFailedTxs();\n\n // 2. Process active subscriptions\n await this.processActiveSubscriptions();\n\n const endTimestamp = new Date().toISOString();\n console.log(`✓ [${endTimestamp}] Finished commitment generation task.\\n`);\n } catch (error) {\n console.error('❌ Error in commitment generation:', error);\n this.emit('error', error);\n }\n }\n\n /**\n * Process all active subscriptions\n */\n private async processActiveSubscriptions(): Promise<void> {\n // Get blockchain timestamp instead of local system time\n const latestBlock = await this.provider.getBlock('latest');\n if (!latestBlock) {\n console.warn(' Could not fetch latest block, skipping this cycle');\n return;\n }\n const currentBlockTime = latestBlock.timestamp;\n\n if (this.subscriptions.size === 0) {\n console.log(' No subscriptions to process');\n return;\n }\n\n console.log(` Processing ${this.subscriptions.size} subscription(s)...`);\n\n for (const [subId, sub] of this.subscriptions.entries()) {\n let currentInterval: bigint = 0n;\n try {\n // Validate intervalSeconds to prevent division by zero\n if (sub.intervalSeconds <= 0n) {\n console.warn(` Skipping subscription ${subId}: invalid intervalSeconds (${sub.intervalSeconds})`);\n this.untrackSubscription(sub.subscriptionId);\n continue;\n }\n\n // Get current interval from blockchain (Router contract)\n // This ensures we prepare intervals in the correct sequence\n try {\n currentInterval = BigInt(await this.router.getComputeSubscriptionInterval(sub.subscriptionId));\n } catch (error) {\n const errorMessage = (error as Error).message || '';\n console.warn(` Could not get interval from router for subscription ${subId}:`, errorMessage);\n\n // If subscription not found, it was cancelled - untrack and skip\n if (errorMessage.includes('SubscriptionNotFound')) {\n console.log(` Subscription ${subId} not found (cancelled), untracking...`);\n this.untrackSubscription(sub.subscriptionId);\n continue;\n }\n\n // Fall back to local calculation only for transient errors\n const intervalsSinceActive = BigInt(currentBlockTime) - sub.activeAt;\n currentInterval = (intervalsSinceActive / sub.intervalSeconds) + 1n;\n }\n\n console.log(` Subscription ${subId}: currentInterval=${currentInterval}, maxExecutions=${sub.maxExecutions}, activeAt=${sub.activeAt}`);\n\n // Check if subscription should process\n if (!this.shouldProcess(sub, currentBlockTime)) {\n continue;\n }\n\n // Check if we've already committed this interval\n const commitmentKey = `${subId}:${currentInterval}`;\n if (this.committedIntervals.has(commitmentKey)) {\n continue;\n }\n\n // Check if there's already a commitment on-chain\n const hasCommitment = await this.hasRequestCommitments(sub.subscriptionId, currentInterval);\n\n if (hasCommitment) {\n this.addCommittedInterval(commitmentKey);\n console.log(` Subscription ${subId} interval ${currentInterval} already committed`);\n continue;\n }\n\n // Generate commitment (prepare next interval)\n await this.prepareNextInterval(sub, currentInterval);\n } catch (error) {\n const errorMessage = (error as Error).message;\n console.error(` Error processing subscription ${subId}:`, error);\n\n // Check if error is in exception chain (like Java's containsErrorInChain)\n const containsError = (ex: Error, text: string): boolean => {\n let current: Error | undefined = ex;\n while (current) {\n if (current.message?.includes(text)) return true;\n current = (current as any).cause;\n }\n return false;\n };\n\n // If overflow/underflow error, interval likely already executed\n if (containsError(error as Error, 'Panic due to OVERFLOW') ||\n containsError(error as Error, 'arithmetic underflow or overflow')) {\n console.log(` Interval ${currentInterval} for subscription ${subId} appears to be already executed (overflow), marking as committed`);\n const commitmentKey = `${subId}:${currentInterval}`;\n this.addCommittedInterval(commitmentKey);\n sub.currentInterval = currentInterval + 1n;\n }\n // NoNextInterval error (0x3cdc51d3) - client hasn't triggered interval 1 yet\n // For scheduled subscriptions, interval 1 is triggered by the client, not the scheduler\n // Keep the subscription tracked and wait for the client to trigger interval 1\n else if (containsError(error as Error, '0x3cdc51d3') ||\n containsError(error as Error, 'NoNextInterval')) {\n console.log(` Subscription ${subId}: waiting for client to trigger interval 1 (NoNextInterval)`);\n // Don't untrack - just wait for the client to trigger interval 1\n // Once interval 1 is executed, we can prepare interval 2\n }\n // If execution reverted or simulation failed, likely subscription was cancelled\n else if (containsError(error as Error, 'execution reverted') ||\n containsError(error as Error, 'Transaction simulation failed')) {\n console.log(` Subscription ${subId} appears to be cancelled or invalid, untracking...`);\n this.untrackSubscription(sub.subscriptionId);\n }\n }\n }\n }\n\n /**\n * Check if subscription should be processed\n */\n private shouldProcess(sub: SubscriptionState, currentBlockTime: number): boolean {\n const subId = sub.subscriptionId.toString();\n\n // Not active yet\n if (BigInt(currentBlockTime) < sub.activeAt) {\n console.log(` Skip: not active yet (currentTime=${currentBlockTime}, activeAt=${sub.activeAt})`);\n return false;\n }\n\n // Calculate current interval\n const intervalsSinceActive = BigInt(currentBlockTime) - sub.activeAt;\n const currentInterval = (intervalsSinceActive / sub.intervalSeconds) + 1n;\n\n // Note: We don't skip interval 1 unconditionally anymore.\n // If triggerFirstExecution was called, hasRequestCommitments will catch it.\n // If agent crashed before triggerFirstExecution completed, we need to prepare it.\n\n // Untrack if subscription is completed (past last interval)\n if (sub.maxExecutions > 0n && currentInterval > sub.maxExecutions) {\n console.log(` Subscription ${subId} completed (interval ${currentInterval} > maxExecutions ${sub.maxExecutions}), untracking...`);\n this.untrackSubscription(sub.subscriptionId);\n return false;\n }\n\n // Has pending transaction\n const runKey = `${sub.subscriptionId}:${currentInterval}`;\n if (this.pendingTxs.has(runKey)) {\n console.log(` Skip: pending transaction for interval ${currentInterval}`);\n return false;\n }\n\n // Exceeded max retry attempts\n if (sub.txAttempts >= this.config.maxRetryAttempts) {\n console.log(` Skip: max retry attempts reached (${sub.txAttempts}/${this.config.maxRetryAttempts})`);\n return false;\n }\n\n return true;\n }\n\n /**\n * Check if interval already has commitments on-chain\n */\n private async hasRequestCommitments(subscriptionId: bigint, interval: bigint): Promise<boolean> {\n try {\n const redundancy = await this.coordinator.redundancyCount(\n this.getRequestId(subscriptionId, interval)\n );\n return redundancy > 0;\n } catch (error) {\n console.error('Error checking commitments:', error);\n return false;\n }\n }\n\n /**\n * Prepare next interval by calling coordinator contract\n * Equivalent to Java's CoordinatorService.prepareNextInterval()\n */\n private async prepareNextInterval(sub: SubscriptionState, interval: bigint): Promise<void> {\n const runKey = `${sub.subscriptionId}:${interval}`;\n\n try {\n console.log(` Preparing interval ${interval} for subscription ${sub.subscriptionId}...`);\n\n // Re-verify interval is still current before sending transaction\n // This prevents NotReadyForNextInterval errors due to timing race conditions\n const currentIntervalNow = BigInt(await this.router.getComputeSubscriptionInterval(sub.subscriptionId));\n\n if (currentIntervalNow !== interval && currentIntervalNow !== interval - 1n) {\n console.log(` ⚠️ Interval changed: expected ${interval}, blockchain is at ${currentIntervalNow}. Skipping.`);\n return;\n }\n\n // Send actual transaction to coordinator contract\n const tx = await this.coordinator.prepareNextInterval(\n sub.subscriptionId,\n interval,\n this.agentWallet\n );\n\n // Track pending transaction\n this.pendingTxs.set(runKey, tx.hash);\n sub.pendingTx = tx.hash;\n\n console.log(` 📤 Transaction sent: ${tx.hash}`);\n\n // Wait for transaction confirmation\n const receipt = await tx.wait();\n\n if (receipt.status === 1) {\n console.log(\n ` ✓ Interval ${interval} prepared successfully (block ${receipt.blockNumber})`\n );\n\n // Mark as committed\n const commitmentKey = `${sub.subscriptionId}:${interval}`;\n this.addCommittedInterval(commitmentKey);\n\n // Update subscription state\n sub.currentInterval = interval;\n sub.lastProcessedAt = Date.now();\n sub.txAttempts = 0;\n sub.pendingTx = undefined;\n this.pendingTxs.delete(runKey);\n\n // Parse RequestStarted event from receipt logs\n // This ensures compute is triggered even if WebSocket misses the event\n const requestStartedEvent = this.parseRequestStartedFromReceipt(receipt, sub);\n\n // Calculate gas cost\n const gasUsed = receipt.gasUsed;\n const gasPrice = receipt.gasPrice ?? tx.gasPrice ?? 0n;\n const gasCost = gasUsed * gasPrice;\n\n this.emit('commitment:success', {\n subscriptionId: sub.subscriptionId,\n interval,\n txHash: tx.hash,\n blockNumber: receipt.blockNumber,\n gasUsed: gasUsed.toString(),\n gasPrice: gasPrice.toString(),\n gasCost: gasCost.toString(),\n requestStartedEvent, // Include parsed event for immediate processing\n });\n } else {\n throw new Error(`Transaction failed with status ${receipt.status}`);\n }\n } catch (error) {\n console.error(` Failed to prepare interval for ${runKey}:`, error);\n\n // Clean up pending state\n sub.pendingTx = undefined;\n this.pendingTxs.delete(runKey);\n\n // Check if this is a NoNextInterval error (client hasn't triggered interval 1 yet)\n const errorMessage = (error as Error).message || '';\n const isNoNextIntervalError = errorMessage.includes('0x3cdc51d3') ||\n errorMessage.includes('NoNextInterval');\n\n if (isNoNextIntervalError) {\n // Don't increment retry attempts for NoNextInterval\n // This is expected for scheduled subscriptions where interval 1 is client-triggered\n console.log(` Subscription ${sub.subscriptionId}: NoNextInterval - waiting for client to trigger interval 1`);\n sub.txAttempts = 0; // Reset retry counter\n return;\n }\n\n // Increment retry attempts for other errors\n sub.txAttempts++;\n\n if (sub.txAttempts >= this.config.maxRetryAttempts) {\n console.log(` Max retry attempts reached for ${runKey}`);\n this.emit('commitment:failed', {\n subscriptionId: sub.subscriptionId,\n interval,\n error,\n });\n }\n }\n }\n\n /**\n * Prune transactions that have failed\n */\n private pruneFailedTxs(): void {\n // Remove old pending transactions (older than 5 minutes)\n const fiveMinutesAgo = Date.now() - 5 * 60 * 1000;\n\n for (const [subId, sub] of this.subscriptions.entries()) {\n if (sub.lastProcessedAt < fiveMinutesAgo && sub.pendingTx) {\n console.log(` Pruning stale transaction for subscription ${subId}`);\n sub.pendingTx = undefined;\n sub.txAttempts = 0;\n }\n }\n }\n\n /**\n * Sync subscriptions (placeholder for blockchain event listening)\n */\n /**\n * Sync subscriptions from blockchain\n * Reads subscriptions in batches and tracks active ones\n */\n private async syncSubscriptions(): Promise<void> {\n if (!this.batchReader) {\n // BatchReader not configured, skip sync\n this.emit('sync:tick');\n return;\n }\n\n try {\n // Query max subscription ID from router\n if (this.maxSubscriptionId === undefined) {\n this.maxSubscriptionId = await this.router.getLastSubscriptionId();\n console.log(`📊 Total subscriptions in registry: ${this.maxSubscriptionId}`);\n }\n\n // Stop syncing if we've reached the end, but re-check for new subscriptions\n if (this.lastSyncedId >= this.maxSubscriptionId!) {\n // Re-check maxSubscriptionId to detect new subscriptions\n const latestMaxId = await this.router.getLastSubscriptionId();\n if (latestMaxId > this.maxSubscriptionId!) {\n console.log(`📊 Found new subscriptions: ${latestMaxId} (was ${this.maxSubscriptionId})`);\n this.maxSubscriptionId = latestMaxId;\n // Continue syncing with updated maxSubscriptionId\n } else {\n this.emit('sync:tick');\n return;\n }\n }\n\n const maxSubId = this.maxSubscriptionId!; // Use latest maxSubscriptionId\n\n const currentBlock = await this.provider.getBlockNumber();\n const block = await this.provider.getBlock(currentBlock);\n const blockTime = block?.timestamp || Math.floor(Date.now() / 1000);\n\n // Read subscriptions in batches\n const BATCH_SIZE = 100n;\n const startId = this.lastSyncedId + 1n;\n const endId = startId + BATCH_SIZE - 1n > maxSubId\n ? maxSubId\n : startId + BATCH_SIZE - 1n;\n\n const subscriptions = await this.batchReader.getSubscriptions(startId, endId, currentBlock);\n\n if (subscriptions.length === 0) {\n // No new subscriptions\n this.emit('sync:tick');\n return;\n }\n\n // Track active subscriptions (only containers this agent can run)\n let newSubscriptions = 0;\n let skippedContainers = 0;\n let skippedInactive = 0;\n let skippedEmpty = 0;\n let skippedOnDemand = 0;\n\n console.log(` Syncing ${subscriptions.length} subscriptions (blockTime: ${blockTime})`);\n\n for (let i = 0; i < subscriptions.length; i++) {\n const sub = subscriptions[i];\n const subscriptionId = startId + BigInt(i);\n\n // Skip cancelled/deleted subscriptions (containerId = 0x0000...0)\n if (sub.containerId === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n skippedEmpty++;\n continue;\n }\n\n // Skip if not active\n if (!this.isSubscriptionActive(sub, blockTime)) {\n // Debug log for non-empty subscriptions that are inactive\n if (sub.intervalSeconds > 0) {\n console.log(` Sub ${subscriptionId}: inactive (activeAt=${sub.activeAt}, now=${blockTime})`);\n }\n skippedInactive++;\n continue;\n }\n\n // Skip if agent cannot run this container (silently filter)\n if (this.getContainer && !this.getContainer(sub.containerId)) {\n skippedContainers++;\n continue;\n }\n\n // Track subscription (returns true if actually tracked)\n if (this.trackSubscriptionFromConfig(sub, subscriptionId)) {\n newSubscriptions++;\n } else {\n // Track on-demand subscriptions that were skipped\n if (sub.intervalSeconds <= 0) {\n skippedOnDemand++;\n }\n }\n }\n\n console.log(` Sync stats: ${newSubscriptions} tracked, ${skippedEmpty} empty, ${skippedInactive} inactive, ${skippedContainers} unsupported containers, ${skippedOnDemand} on-demand`);\n\n // Update last synced ID\n this.lastSyncedId = endId;\n\n // Log results only if there are new subscriptions\n if (newSubscriptions > 0) {\n console.log(`✓ Synced ${newSubscriptions} active subscriptions (ID ${startId} - ${endId})`);\n }\n\n // Log completion if we've reached the end\n if (this.lastSyncedId >= maxSubId) {\n console.log(`✓ Sync completed - processed all ${maxSubId} subscriptions`);\n }\n\n this.emit('sync:completed', {\n subscriptions: this.subscriptions.size,\n newSubscriptions,\n });\n } catch (error) {\n console.error('Error syncing subscriptions:', error);\n this.emit('sync:error', error);\n }\n }\n\n /**\n * Check if subscription is currently active\n */\n private isSubscriptionActive(sub: ComputeSubscription, currentBlockTime: number): boolean {\n // Not started yet\n if (currentBlockTime < sub.activeAt) {\n return false;\n }\n\n // Check if max executions reached\n // Note: currentInterval is 0-based here ((elapsed / intervalSeconds) gives 0 for first interval)\n // But maxExecutions is count, so we need > not >= (if currentInterval is 4 and max is 5, still active)\n if (sub.maxExecutions > 0 && sub.intervalSeconds > 0) {\n const elapsed = currentBlockTime - sub.activeAt;\n const currentInterval = Math.floor(elapsed / sub.intervalSeconds);\n // If currentInterval >= maxExecutions, all intervals have passed\n // e.g., maxExecutions=5, intervalSeconds=180, after 900s currentInterval=5 -> all done\n if (currentInterval >= sub.maxExecutions) {\n return false;\n }\n }\n\n return true;\n }\n\n /**\n * Track subscription from ComputeSubscription config\n * Returns true if subscription was tracked, false if skipped\n */\n private trackSubscriptionFromConfig(sub: ComputeSubscription, subscriptionId: bigint): boolean {\n // Skip empty/deleted subscriptions (all fields are 0)\n if (sub.containerId === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n // This is an empty slot (never created or deleted)\n return false;\n }\n\n // Skip if client address is zero (another indicator of empty subscription)\n if (sub.client === '0x0000000000000000000000000000000000000000') {\n return false;\n }\n\n const key = subscriptionId.toString();\n\n if (this.subscriptions.has(key)) {\n // Already tracked\n return false;\n }\n\n // Validate subscription data - intervalSeconds=0 means on-demand (not scheduled)\n if (sub.intervalSeconds <= 0) {\n // Silently skip on-demand subscriptions (not an error)\n return false;\n }\n\n // Log subscription details\n try {\n const { ethers } = require('ethers');\n const containerIdStr = ethers.decodeBytes32String(sub.containerId);\n console.log(` ✓ Tracking subscription: ${containerIdStr}`);\n console.log(` Client: ${sub.client}`);\n console.log(` Interval: ${sub.intervalSeconds}s`);\n console.log(` Max Executions: ${sub.maxExecutions}`);\n } catch (e) {\n console.log(` ✓ Tracking subscription: ${sub.containerId}`);\n }\n\n // Calculate current interval\n // Note: Contract uses 1-based indexing: ((timestamp - activeAt) / intervalSeconds) + 1\n const now = Math.floor(Date.now() / 1000);\n const elapsed = now - sub.activeAt;\n const currentInterval =\n sub.intervalSeconds > 0 ? Math.max(1, Math.floor(elapsed / sub.intervalSeconds) + 1) : 1;\n\n this.subscriptions.set(key, {\n subscriptionId: subscriptionId,\n routeId: sub.routeId,\n containerId: sub.containerId,\n client: sub.client,\n wallet: sub.wallet,\n activeAt: BigInt(sub.activeAt),\n intervalSeconds: BigInt(sub.intervalSeconds),\n maxExecutions: Number.isFinite(sub.maxExecutions) ? BigInt(sub.maxExecutions) : 0n,\n redundancy: sub.redundancy,\n verifier: sub.verifier || undefined,\n currentInterval: BigInt(currentInterval),\n lastProcessedAt: Date.now(),\n txAttempts: 0,\n });\n\n return true;\n }\n\n /**\n * Get request ID (hash of subscription ID and interval)\n */\n private getRequestId(subscriptionId: bigint, interval: bigint): string {\n // This should match the on-chain calculation\n const ethers = require('ethers');\n const abiCoder = ethers.AbiCoder.defaultAbiCoder();\n return ethers.keccak256(abiCoder.encode(['uint256', 'uint256'], [subscriptionId, interval]));\n }\n\n /**\n * Get scheduler statistics\n */\n getStats(): {\n totalSubscriptions: number;\n activeSubscriptions: number;\n committedIntervals: number;\n pendingTransactions: number;\n } {\n const now = Math.floor(Date.now() / 1000);\n const activeCount = Array.from(this.subscriptions.values()).filter((sub) => {\n // Must have started\n if (BigInt(now) < sub.activeAt) {\n return false;\n }\n\n // Check if completed (all maxExecutions done)\n if (sub.maxExecutions > 0n) {\n const elapsed = BigInt(now) - sub.activeAt;\n const currentInterval = elapsed / sub.intervalSeconds;\n\n // Subscription is completed if we've passed all intervals\n if (currentInterval >= sub.maxExecutions) {\n return false;\n }\n }\n\n return true;\n }).length;\n\n return {\n totalSubscriptions: this.subscriptions.size,\n activeSubscriptions: activeCount,\n committedIntervals: this.committedIntervals.size,\n pendingTransactions: this.pendingTxs.size,\n };\n }\n\n /**\n * Get all tracked subscriptions\n */\n getSubscriptions(): SubscriptionState[] {\n return Array.from(this.subscriptions.values());\n }\n\n /**\n * Parse RequestStarted event from transaction receipt\n * This allows the agent to process the event immediately without waiting for WebSocket\n */\n private parseRequestStartedFromReceipt(\n receipt: TransactionReceipt,\n sub: SubscriptionState\n ): RequestStartedEvent | null {\n try {\n // Find the RequestStarted log in the receipt\n for (const log of receipt.logs) {\n try {\n const parsed = this.coordinator.interface.parseLog({\n topics: log.topics as string[],\n data: log.data,\n });\n\n if (parsed && parsed.name === 'RequestStarted') {\n const commitment = parsed.args.commitment;\n return {\n requestId: parsed.args.requestId,\n subscriptionId: parsed.args.subscriptionId,\n containerId: parsed.args.containerId,\n interval: Number(commitment.interval),\n redundancy: Number(commitment.redundancy),\n useDeliveryInbox: commitment.useDeliveryInbox,\n feeAmount: commitment.feeAmount,\n feeToken: commitment.feeToken,\n verifier: commitment.verifier,\n coordinator: commitment.coordinator,\n walletAddress: commitment.walletAddress,\n blockNumber: receipt.blockNumber,\n };\n }\n } catch {\n // Not a RequestStarted log, continue\n }\n }\n } catch (error) {\n console.warn(' ⚠️ Could not parse RequestStarted event from receipt:', error);\n }\n return null;\n }\n}\n","import { ethers } from 'ethers';\nimport type { Commitment, PayloadData } from '../types';\n\n/**\n * Utility class for PayloadData creation and encoding\n */\nexport class PayloadUtils {\n /**\n * Create PayloadData from content with data: URI scheme (inline)\n * Best for small payloads (<1KB)\n * @param content - The content to embed\n * @returns PayloadData with contentHash and data: URI\n */\n static fromInlineData(content: string): PayloadData {\n const contentBytes = ethers.toUtf8Bytes(content);\n const contentHash = ethers.keccak256(contentBytes);\n // Encode as data: URI (base64) and convert to hex bytes\n const base64Content = Buffer.from(content, 'utf-8').toString('base64');\n const dataUri = `data:application/json;base64,${base64Content}`;\n // Convert URI string to hex bytes for Solidity bytes type\n const uriBytes = ethers.hexlify(ethers.toUtf8Bytes(dataUri));\n return {\n contentHash,\n uri: uriBytes,\n };\n }\n\n /**\n * Create PayloadData from content with external URI\n * Best for large payloads that are stored externally\n * @param content - The original content (for hash computation)\n * @param uri - The external URI (ipfs://, https://, ar://, etc.)\n * @returns PayloadData with contentHash and URI\n */\n static fromExternalUri(content: string, uri: string): PayloadData {\n const contentBytes = ethers.toUtf8Bytes(content);\n const contentHash = ethers.keccak256(contentBytes);\n // Convert URI string to hex bytes for Solidity bytes type\n const uriBytes = ethers.hexlify(ethers.toUtf8Bytes(uri));\n return {\n contentHash,\n uri: uriBytes,\n };\n }\n\n /**\n * Create PayloadData from pre-computed hash and URI\n * @param contentHash - Pre-computed keccak256 hash of content\n * @param uri - The URI (empty for inline, or external URI)\n * @returns PayloadData\n */\n static fromHashAndUri(contentHash: string, uri: string): PayloadData {\n // Convert URI string to hex bytes for Solidity bytes type (if not already hex)\n const uriBytes = uri.startsWith('0x') ? uri : ethers.hexlify(ethers.toUtf8Bytes(uri));\n return {\n contentHash,\n uri: uriBytes,\n };\n }\n\n /**\n * Create empty PayloadData (no content)\n * @returns PayloadData with zero hash and empty URI\n */\n static empty(): PayloadData {\n return {\n contentHash: ethers.ZeroHash,\n uri: '0x', // Empty bytes\n };\n }\n\n /**\n * Compute content hash using keccak256\n * @param content - Content string to hash\n * @returns bytes32 hash string\n */\n static computeHash(content: string): string {\n return ethers.keccak256(ethers.toUtf8Bytes(content));\n }\n\n /**\n * Verify that content matches the hash in PayloadData\n * @param payload - PayloadData to verify\n * @param content - Content to verify against\n * @returns true if content hash matches\n */\n static verifyContent(payload: PayloadData, content: string): boolean {\n const computedHash = this.computeHash(content);\n return computedHash === payload.contentHash;\n }\n}\n\nexport class CommitmentUtils {\n /**\n * Calculate commitment hash\n * Matches the keccak256(abi.encode(commitment)) in Solidity\n */\n static hash(commitment: Commitment): string {\n const encoded = ethers.AbiCoder.defaultAbiCoder().encode(\n [\n 'bytes32', // requestId\n 'uint64', // subscriptionId\n 'bytes32', // containerId\n 'uint32', // interval\n 'bool', // useDeliveryInbox\n 'uint16', // redundancy\n 'address', // walletAddress\n 'uint256', // feeAmount\n 'address', // feeToken\n 'address', // verifier\n 'address', // coordinator\n ],\n [\n commitment.requestId,\n commitment.subscriptionId,\n commitment.containerId,\n commitment.interval,\n commitment.useDeliveryInbox,\n commitment.redundancy,\n commitment.walletAddress,\n commitment.feeAmount,\n commitment.feeToken,\n commitment.verifier,\n commitment.coordinator,\n ]\n );\n\n return ethers.keccak256(encoded);\n }\n\n /**\n * Verify commitment hash matches expected value\n */\n static verify(commitment: Commitment, expectedHash: string): boolean {\n const actualHash = this.hash(commitment);\n return actualHash === expectedHash;\n }\n\n /**\n * Encode commitment data for reportComputeResult\n * Returns ABI-encoded commitment struct\n */\n static encode(commitment: Commitment): string {\n return ethers.AbiCoder.defaultAbiCoder().encode(\n [\n 'bytes32', // requestId\n 'uint64', // subscriptionId\n 'bytes32', // containerId\n 'uint32', // interval\n 'bool', // useDeliveryInbox\n 'uint16', // redundancy\n 'address', // walletAddress\n 'uint256', // feeAmount\n 'address', // feeToken\n 'address', // verifier\n 'address', // coordinator\n ],\n [\n commitment.requestId,\n commitment.subscriptionId,\n commitment.containerId,\n commitment.interval,\n commitment.useDeliveryInbox,\n commitment.redundancy,\n commitment.walletAddress,\n commitment.feeAmount,\n commitment.feeToken,\n commitment.verifier,\n commitment.coordinator,\n ]\n );\n }\n\n /**\n * Create Commitment from RequestStartedEvent\n */\n static fromEvent(event: any, walletAddress: string): Commitment {\n return {\n requestId: event.requestId,\n subscriptionId: event.subscriptionId,\n containerId: event.containerId,\n interval: event.interval,\n redundancy: event.redundancy,\n useDeliveryInbox: event.useDeliveryInbox || false,\n feeToken: event.feeToken,\n feeAmount: event.feeAmount,\n walletAddress: walletAddress, // Client wallet from subscription\n verifier: event.verifier || ethers.ZeroAddress,\n coordinator: event.coordinator,\n };\n }\n}\n","/**\n * PayloadResolver - Unified Payload Resolution\n *\n * Resolves PayloadData to actual content by:\n * 1. Detecting URI scheme (data:, ipfs://, https://, ar://)\n * 2. Fetching content from appropriate storage\n * 3. Verifying content hash for integrity\n *\n * Also handles encoding output as PayloadData with automatic\n * storage selection based on content size.\n *\n * @example\n * ```typescript\n * const resolver = new PayloadResolver({\n * ipfs: { gateway: 'http://localhost:8080/ipfs/' },\n * uploadThreshold: 1024,\n * defaultStorage: 'ipfs'\n * });\n *\n * // Resolve input from PayloadData\n * const content = await resolver.resolve(payloadData);\n *\n * // Encode output as PayloadData (auto-uploads if large)\n * const outputPayload = await resolver.encode(outputContent);\n * ```\n */\n\nimport { ethers } from 'ethers';\nimport type { PayloadData } from './types';\nimport { PayloadUtils } from './utils/CommitmentUtils';\nimport { IpfsStorage, type IpfsStorageConfig } from './storage/IpfsStorage';\nimport { DataUriStorage } from './storage/DataUriStorage';\nimport { HttpStorage } from './storage/HttpStorage';\nimport { S3Storage, type S3StorageConfig } from './storage/S3Storage';\nimport type { IPayloadStorage } from './storage/IPayloadStorage';\n\n/**\n * Supported URI schemes\n */\nexport enum PayloadScheme {\n DATA = 'data',\n IPFS = 'ipfs',\n HTTPS = 'https',\n HTTP = 'http',\n ARWEAVE = 'ar',\n CHAIN = 'chain',\n}\n\n/**\n * PayloadResolver configuration\n */\nexport interface PayloadResolverConfig {\n /** IPFS storage configuration */\n ipfs?: IpfsStorageConfig;\n /** S3-compatible storage configuration (R2, S3, MinIO) */\n s3?: S3StorageConfig;\n /** Arweave gateway URL */\n arweaveGateway?: string;\n /** Size threshold for auto-upload (bytes, default: 1024) */\n uploadThreshold?: number;\n /** Default storage for large payloads ('ipfs' | 's3' | 'data') */\n defaultStorage?: 'ipfs' | 's3' | 'data';\n /** Request timeout in milliseconds */\n timeout?: number;\n}\n\n/**\n * Resolved payload result\n */\nexport interface ResolvedPayload {\n /** Actual content string */\n content: string;\n /** Original PayloadData */\n payload: PayloadData;\n /** Detected scheme */\n scheme: PayloadScheme;\n /** Whether content hash was verified */\n verified: boolean;\n}\n\nexport class PayloadResolver {\n private ipfsStorage: IpfsStorage;\n private s3Storage: S3Storage | null = null;\n private dataUriStorage: DataUriStorage;\n private httpStorage: HttpStorage;\n private uploadThreshold: number;\n private defaultStorage: 'ipfs' | 's3' | 'data';\n private arweaveGateway: string;\n\n constructor(config: PayloadResolverConfig = {}) {\n this.ipfsStorage = new IpfsStorage(config.ipfs);\n this.dataUriStorage = new DataUriStorage();\n this.httpStorage = new HttpStorage({ timeout: config.timeout });\n this.uploadThreshold = config.uploadThreshold ?? 1024;\n this.defaultStorage = config.defaultStorage ?? 'ipfs';\n this.arweaveGateway = config.arweaveGateway || 'https://arweave.net';\n\n // Initialize S3 storage if configured\n if (config.s3) {\n this.s3Storage = new S3Storage(config.s3);\n }\n }\n\n /**\n * Detect URI scheme from PayloadData\n */\n detectScheme(payload: PayloadData): PayloadScheme {\n const uri = payload.uri;\n\n if (!uri || uri === '' || uri === '0x') {\n return PayloadScheme.DATA; // Empty URI treated as inline\n }\n\n if (uri.startsWith('data:')) return PayloadScheme.DATA;\n if (uri.startsWith('ipfs://')) return PayloadScheme.IPFS;\n if (uri.startsWith('https://')) return PayloadScheme.HTTPS;\n if (uri.startsWith('http://')) return PayloadScheme.HTTP;\n if (uri.startsWith('ar://')) return PayloadScheme.ARWEAVE;\n if (uri.startsWith('chain://')) return PayloadScheme.CHAIN;\n\n // Default to data if unrecognized\n return PayloadScheme.DATA;\n }\n\n /**\n * Resolve PayloadData to actual content\n *\n * @param payload - PayloadData to resolve\n * @param verifyHash - Whether to verify content hash (default: true)\n * @returns Resolved content and metadata\n */\n async resolve(payload: PayloadData, verifyHash: boolean = true): Promise<ResolvedPayload> {\n const scheme = this.detectScheme(payload);\n let content: string;\n\n switch (scheme) {\n case PayloadScheme.DATA:\n content = await this.dataUriStorage.download(payload.uri);\n break;\n\n case PayloadScheme.IPFS:\n content = await this.ipfsStorage.download(payload.uri);\n break;\n\n case PayloadScheme.HTTPS:\n case PayloadScheme.HTTP:\n content = await this.httpStorage.download(payload.uri);\n break;\n\n case PayloadScheme.ARWEAVE:\n content = await this.resolveArweave(payload.uri);\n break;\n\n case PayloadScheme.CHAIN:\n throw new Error('Chain scheme not yet implemented');\n\n default:\n throw new Error(`Unsupported URI scheme: ${scheme}`);\n }\n\n // Verify content hash if requested\n let verified = false;\n if (verifyHash && payload.contentHash && payload.contentHash !== ethers.ZeroHash) {\n verified = PayloadUtils.verifyContent(payload, content);\n if (!verified) {\n console.warn('PayloadResolver: Content hash verification failed');\n }\n }\n\n return {\n content,\n payload,\n scheme,\n verified,\n };\n }\n\n /**\n * Resolve Arweave URI\n */\n private async resolveArweave(uri: string): Promise<string> {\n const txId = uri.replace('ar://', '');\n const url = `${this.arweaveGateway}/${txId}`;\n return this.httpStorage.download(url);\n }\n\n /**\n * Encode content as PayloadData\n *\n * Automatically uploads to external storage if content exceeds threshold.\n *\n * @param content - Content to encode\n * @param options - Encoding options\n * @returns PayloadData ready for on-chain submission\n */\n async encode(\n content: string,\n options: {\n forceUpload?: boolean;\n storage?: 'ipfs' | 's3' | 'data';\n } = {}\n ): Promise<PayloadData> {\n const contentSize = Buffer.byteLength(content, 'utf-8');\n const shouldUpload = options.forceUpload || contentSize > this.uploadThreshold;\n\n if (!shouldUpload) {\n // Inline as data: URI\n return PayloadUtils.fromInlineData(content);\n }\n\n // Upload to external storage\n const storage = options.storage || this.defaultStorage;\n\n if (storage === 'ipfs') {\n if (!this.ipfsStorage.isConfigured()) {\n console.warn('IPFS not configured, falling back to data URI');\n return PayloadUtils.fromInlineData(content);\n }\n\n try {\n const result = await this.ipfsStorage.upload(content);\n return PayloadUtils.fromExternalUri(content, result.uri);\n } catch (error) {\n console.warn(`IPFS upload failed, falling back to data URI: ${(error as Error).message}`);\n return PayloadUtils.fromInlineData(content);\n }\n } else if (storage === 's3') {\n if (!this.s3Storage || !this.s3Storage.isConfigured()) {\n console.warn('S3 not configured, falling back to data URI');\n return PayloadUtils.fromInlineData(content);\n }\n\n try {\n const result = await this.s3Storage.upload(content);\n return PayloadUtils.fromExternalUri(content, result.uri);\n } catch (error) {\n console.warn(`S3 upload failed, falling back to data URI: ${(error as Error).message}`);\n return PayloadUtils.fromInlineData(content);\n }\n } else {\n // Use data: URI for inline storage\n const result = await this.dataUriStorage.upload(content);\n return PayloadUtils.fromExternalUri(content, result.uri);\n }\n }\n\n /**\n * Create empty PayloadData\n */\n createEmpty(): PayloadData {\n return PayloadUtils.empty();\n }\n\n /**\n * Verify content matches PayloadData hash\n */\n verifyContent(payload: PayloadData, content: string): boolean {\n return PayloadUtils.verifyContent(payload, content);\n }\n\n /**\n * Get the configured IPFS storage instance\n */\n getIpfsStorage(): IpfsStorage {\n return this.ipfsStorage;\n }\n\n /**\n * Get the configured S3 storage instance\n */\n getS3Storage(): S3Storage | null {\n return this.s3Storage;\n }\n\n /**\n * Check if IPFS is configured\n */\n isIpfsConfigured(): boolean {\n return this.ipfsStorage.isConfigured();\n }\n\n /**\n * Check if S3 is configured\n */\n isS3Configured(): boolean {\n return this.s3Storage?.isConfigured() ?? false;\n }\n\n /**\n * Get the default storage type\n */\n getDefaultStorage(): 'ipfs' | 's3' | 'data' {\n return this.defaultStorage;\n }\n\n /**\n * Serialize PayloadData for database storage\n */\n serialize(payload: PayloadData): string {\n return JSON.stringify({\n contentHash: payload.contentHash,\n uri: payload.uri,\n });\n }\n\n /**\n * Deserialize PayloadData from database storage\n */\n deserialize(serialized: string): PayloadData {\n try {\n const parsed = JSON.parse(serialized);\n return {\n contentHash: parsed.contentHash,\n uri: parsed.uri || '',\n };\n } catch {\n // Legacy format - treat as raw content\n return PayloadUtils.fromInlineData(serialized);\n }\n }\n}\n","/**\n * IPFS Storage Provider\n *\n * Supports both local IPFS nodes and Pinata API for pinning.\n *\n * @example\n * ```typescript\n * // Local IPFS node\n * const storage = new IpfsStorage({\n * apiUrl: 'http://localhost:5001',\n * gateway: 'http://localhost:8080/ipfs/'\n * });\n *\n * // Pinata\n * const storage = new IpfsStorage({\n * apiUrl: 'https://api.pinata.cloud',\n * apiKey: 'your-api-key',\n * apiSecret: 'your-api-secret',\n * gateway: 'https://gateway.pinata.cloud/ipfs/'\n * });\n *\n * const result = await storage.upload('Hello, IPFS!');\n * console.log(result.uri); // \"ipfs://Qm...\"\n * ```\n */\n\nimport type { IPayloadStorage, StorageConfig, UploadResult } from './IPayloadStorage';\n\n/**\n * IPFS-specific configuration\n */\nexport interface IpfsStorageConfig extends StorageConfig {\n /** IPFS API URL (default: http://localhost:5001) */\n apiUrl?: string;\n /** IPFS Gateway URL (default: http://localhost:8080/ipfs/) */\n gateway?: string;\n /** Pinata API key (required for Pinata) */\n apiKey?: string;\n /** Pinata API secret (required for Pinata) */\n apiSecret?: string;\n}\n\nexport class IpfsStorage implements IPayloadStorage {\n private apiUrl: string;\n private gateway: string;\n private apiKey?: string;\n private apiSecret?: string;\n private timeout: number;\n private isLocalNode: boolean;\n\n constructor(config: IpfsStorageConfig = {}) {\n this.apiUrl = config.apiUrl || process.env.IPFS_API_URL || 'http://localhost:5001';\n this.gateway = config.gateway || process.env.IPFS_GATEWAY || 'http://localhost:8080/ipfs/';\n this.apiKey = config.apiKey || process.env.PINATA_API_KEY;\n this.apiSecret = config.apiSecret || process.env.PINATA_API_SECRET;\n this.timeout = config.timeout || 30000;\n\n // Detect if using local IPFS node\n this.isLocalNode = this.apiUrl.includes('localhost') || this.apiUrl.includes('127.0.0.1');\n\n // Ensure gateway ends with /\n if (!this.gateway.endsWith('/')) {\n this.gateway += '/';\n }\n }\n\n getScheme(): string {\n return 'ipfs';\n }\n\n isConfigured(): boolean {\n // Local node doesn't need API keys\n if (this.isLocalNode) return true;\n // Pinata needs API keys\n return !!(this.apiKey && this.apiSecret);\n }\n\n async upload(content: string | Buffer): Promise<UploadResult> {\n const data = typeof content === 'string' ? content : content.toString('utf-8');\n const size = Buffer.byteLength(data, 'utf-8');\n\n if (this.isLocalNode) {\n return this.uploadToLocalNode(data, size);\n } else {\n return this.uploadToPinata(data, size);\n }\n }\n\n private async uploadToLocalNode(data: string, size: number): Promise<UploadResult> {\n // Dynamic imports for ESM compatibility\n const FormData = (await import('form-data')).default;\n const axios = (await import('axios')).default;\n\n const formData = new FormData();\n formData.append('file', Buffer.from(data, 'utf-8'), { filename: 'data.json' });\n\n const response = await axios.post(\n `${this.apiUrl}/api/v0/add`,\n formData,\n {\n headers: formData.getHeaders(),\n timeout: this.timeout,\n }\n );\n\n const cid = response.data.Hash;\n\n return {\n uri: `ipfs://${cid}`,\n contentId: cid,\n size,\n };\n }\n\n private async uploadToPinata(data: string, size: number): Promise<UploadResult> {\n if (!this.apiKey || !this.apiSecret) {\n throw new Error('Pinata API keys not configured');\n }\n\n const response = await fetch(`${this.apiUrl}/pinning/pinJSONToIPFS`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n pinata_api_key: this.apiKey,\n pinata_secret_api_key: this.apiSecret,\n },\n body: JSON.stringify({ pinataContent: data }),\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`Pinata upload failed: ${response.statusText}`);\n }\n\n const result = await response.json() as { IpfsHash: string };\n const cid = result.IpfsHash;\n\n return {\n uri: `ipfs://${cid}`,\n contentId: cid,\n size,\n };\n }\n\n async download(uri: string): Promise<string> {\n const cid = this.extractCid(uri);\n const url = `${this.gateway}${cid}`;\n\n const response = await fetch(url, {\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`IPFS download failed: ${response.statusText}`);\n }\n\n const text = await response.text();\n return text;\n }\n\n /**\n * Extract CID from IPFS URI\n */\n private extractCid(uri: string): string {\n if (uri.startsWith('ipfs://')) {\n return uri.slice(7);\n }\n // Assume it's already a CID\n return uri;\n }\n\n /**\n * Get the gateway URL for a given CID\n */\n getGatewayUrl(cidOrUri: string): string {\n const cid = this.extractCid(cidOrUri);\n return `${this.gateway}${cid}`;\n }\n}\n","/**\n * Data URI Storage Provider\n *\n * Handles inline data using data: URI scheme (RFC 2397).\n * Used for small payloads that can be embedded directly.\n *\n * @example\n * ```typescript\n * const storage = new DataUriStorage();\n * const result = await storage.upload('{\"action\":\"ping\"}');\n * console.log(result.uri);\n * // \"data:application/json;base64,eyJhY3Rpb24iOiJwaW5nIn0=\"\n * ```\n */\n\nimport type { IPayloadStorage, UploadResult } from './IPayloadStorage';\n\nexport interface DataUriStorageConfig {\n /** MIME type for the data (default: application/json) */\n mimeType?: string;\n}\n\nexport class DataUriStorage implements IPayloadStorage {\n private mimeType: string;\n\n constructor(config: DataUriStorageConfig = {}) {\n this.mimeType = config.mimeType || 'application/json';\n }\n\n getScheme(): string {\n return 'data';\n }\n\n isConfigured(): boolean {\n return true; // Always available\n }\n\n async upload(content: string | Buffer): Promise<UploadResult> {\n const data = typeof content === 'string' ? content : content.toString('utf-8');\n const base64 = Buffer.from(data, 'utf-8').toString('base64');\n const uri = `data:${this.mimeType};base64,${base64}`;\n\n return {\n uri,\n contentId: base64.slice(0, 20) + '...', // Truncated for display\n size: Buffer.byteLength(data, 'utf-8'),\n };\n }\n\n async download(uri: string): Promise<string> {\n if (!uri.startsWith('data:')) {\n throw new Error('Invalid data URI');\n }\n\n const match = uri.match(/^data:([^;,]+)?(;([^,]+))?,(.*)$/);\n if (!match) {\n throw new Error('Invalid data URI format');\n }\n\n const encoding = match[3] || 'utf-8';\n const encodedContent = match[4];\n\n if (encoding === 'base64') {\n return Buffer.from(encodedContent, 'base64').toString('utf-8');\n } else {\n return decodeURIComponent(encodedContent);\n }\n }\n}\n","/**\n * HTTP/HTTPS Storage Provider\n *\n * Handles fetching content from HTTP/HTTPS URLs.\n * Upload is not supported - use a dedicated storage service instead.\n *\n * @example\n * ```typescript\n * const storage = new HttpStorage();\n * const content = await storage.download('https://api.example.com/data/123');\n * ```\n */\n\nimport type { IPayloadStorage, UploadResult } from './IPayloadStorage';\n\nexport interface HttpStorageConfig {\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n /** Default headers to include in requests */\n headers?: Record<string, string>;\n}\n\nexport class HttpStorage implements IPayloadStorage {\n private timeout: number;\n private headers: Record<string, string>;\n\n constructor(config: HttpStorageConfig = {}) {\n this.timeout = config.timeout || 30000;\n this.headers = config.headers || {};\n }\n\n getScheme(): string {\n return 'https';\n }\n\n isConfigured(): boolean {\n return true; // Always available for download\n }\n\n async upload(_content: string | Buffer): Promise<UploadResult> {\n throw new Error('HTTP upload not supported - use a dedicated storage service (IPFS, S3, etc.)');\n }\n\n async download(uri: string): Promise<string> {\n if (!uri.startsWith('http://') && !uri.startsWith('https://')) {\n throw new Error('Invalid HTTP/HTTPS URI');\n }\n\n const response = await fetch(uri, {\n headers: this.headers,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`HTTP download failed: ${response.status} ${response.statusText}`);\n }\n\n return response.text();\n }\n}\n","/**\n * S3-Compatible Storage Provider\n *\n * Supports AWS S3, Cloudflare R2, MinIO, and other S3-compatible storage services.\n * Uses the AWS SDK v3 for S3 operations.\n *\n * @example\n * ```typescript\n * // Cloudflare R2\n * const storage = new S3Storage({\n * endpoint: 'https://xxx.r2.cloudflarestorage.com',\n * bucket: 'my-bucket',\n * region: 'auto',\n * accessKeyId: 'your-access-key',\n * secretAccessKey: 'your-secret-key',\n * publicUrlBase: 'https://pub-xxx.r2.dev'\n * });\n *\n * // AWS S3\n * const storage = new S3Storage({\n * bucket: 'my-bucket',\n * region: 'us-east-1',\n * accessKeyId: 'your-access-key',\n * secretAccessKey: 'your-secret-key',\n * publicUrlBase: 'https://my-bucket.s3.us-east-1.amazonaws.com'\n * });\n *\n * // MinIO (local)\n * const storage = new S3Storage({\n * endpoint: 'http://localhost:9000',\n * bucket: 'my-bucket',\n * region: 'us-east-1',\n * accessKeyId: 'minioadmin',\n * secretAccessKey: 'minioadmin',\n * publicUrlBase: 'http://localhost:9000/my-bucket',\n * forcePathStyle: true\n * });\n *\n * const result = await storage.upload('Hello, S3!');\n * console.log(result.uri); // \"https://pub-xxx.r2.dev/abc123.json\"\n * ```\n */\n\nimport { createHash } from 'crypto';\nimport type { IPayloadStorage, UploadResult } from './IPayloadStorage';\n\n/**\n * S3-compatible storage configuration\n */\nexport interface S3StorageConfig {\n /** S3-compatible endpoint URL (required for R2/MinIO, optional for AWS S3) */\n endpoint?: string;\n\n /** Bucket name */\n bucket: string;\n\n /** AWS region (default: 'auto' for R2, 'us-east-1' for others) */\n region?: string;\n\n /** Access key ID */\n accessKeyId: string;\n\n /** Secret access key */\n secretAccessKey: string;\n\n /**\n * Public URL base for generating accessible URLs\n * e.g., \"https://pub-xxx.r2.dev\" or \"https://cdn.example.com\"\n */\n publicUrlBase: string;\n\n /**\n * Key prefix for organizing files\n * e.g., \"noosphere/outputs/\"\n */\n keyPrefix?: string;\n\n /**\n * Use path-style URLs (required for MinIO)\n * Default: false (uses virtual-hosted style)\n */\n forcePathStyle?: boolean;\n\n /** Request timeout in milliseconds (default: 30000) */\n timeout?: number;\n\n /** Content type for uploaded files (default: 'application/json') */\n contentType?: string;\n}\n\n// Type definitions for AWS SDK (to avoid hard dependency)\ninterface S3Client {\n send(command: unknown): Promise<unknown>;\n}\n\ninterface PutObjectCommand {\n new (input: {\n Bucket: string;\n Key: string;\n Body: string | Buffer;\n ContentType?: string;\n }): unknown;\n}\n\nexport class S3Storage implements IPayloadStorage {\n private config: S3StorageConfig;\n private client: S3Client | null = null;\n private PutObjectCommandClass: PutObjectCommand | null = null;\n private initialized: boolean = false;\n private initError: Error | null = null;\n\n constructor(config: S3StorageConfig) {\n this.config = {\n region: config.endpoint ? 'auto' : 'us-east-1',\n keyPrefix: '',\n forcePathStyle: false,\n timeout: 30000,\n contentType: 'application/json',\n ...config,\n };\n\n // Ensure publicUrlBase doesn't end with /\n if (this.config.publicUrlBase.endsWith('/')) {\n this.config.publicUrlBase = this.config.publicUrlBase.slice(0, -1);\n }\n\n // Ensure keyPrefix ends with / if not empty\n if (this.config.keyPrefix && !this.config.keyPrefix.endsWith('/')) {\n this.config.keyPrefix += '/';\n }\n }\n\n /**\n * Lazily initialize the S3 client\n * This allows the class to be instantiated even if @aws-sdk/client-s3 is not installed\n */\n private async initClient(): Promise<void> {\n if (this.initialized) {\n if (this.initError) throw this.initError;\n return;\n }\n\n try {\n // Dynamic import to make @aws-sdk/client-s3 optional\n const s3Module = await import('@aws-sdk/client-s3');\n const { S3Client, PutObjectCommand } = s3Module;\n\n this.client = new S3Client({\n endpoint: this.config.endpoint,\n region: this.config.region,\n credentials: {\n accessKeyId: this.config.accessKeyId,\n secretAccessKey: this.config.secretAccessKey,\n },\n forcePathStyle: this.config.forcePathStyle,\n });\n\n this.PutObjectCommandClass = PutObjectCommand as unknown as PutObjectCommand;\n this.initialized = true;\n } catch (error) {\n this.initError = new Error(\n 'S3 storage requires @aws-sdk/client-s3. Install it with: npm install @aws-sdk/client-s3'\n );\n this.initialized = true;\n throw this.initError;\n }\n }\n\n getScheme(): string {\n return 'https';\n }\n\n isConfigured(): boolean {\n return !!(\n this.config.bucket &&\n this.config.accessKeyId &&\n this.config.secretAccessKey &&\n this.config.publicUrlBase\n );\n }\n\n /**\n * Generate a unique key for the content based on its hash\n */\n private generateKey(content: string): string {\n const hash = createHash('sha256').update(content).digest('hex').slice(0, 16);\n const timestamp = Date.now();\n return `${this.config.keyPrefix}${hash}-${timestamp}.json`;\n }\n\n async upload(content: string | Buffer): Promise<UploadResult> {\n await this.initClient();\n\n if (!this.client || !this.PutObjectCommandClass) {\n throw new Error('S3 client not initialized');\n }\n\n const data = typeof content === 'string' ? content : content.toString('utf-8');\n const size = Buffer.byteLength(data, 'utf-8');\n const key = this.generateKey(data);\n\n const command = new (this.PutObjectCommandClass as any)({\n Bucket: this.config.bucket,\n Key: key,\n Body: data,\n ContentType: this.config.contentType,\n });\n\n await this.client.send(command);\n\n const publicUrl = `${this.config.publicUrlBase}/${key}`;\n\n return {\n uri: publicUrl,\n contentId: key,\n size,\n };\n }\n\n async download(uri: string): Promise<string> {\n if (!uri.startsWith('http://') && !uri.startsWith('https://')) {\n throw new Error('Invalid HTTP/HTTPS URI');\n }\n\n const response = await fetch(uri, {\n signal: AbortSignal.timeout(this.config.timeout || 30000),\n });\n\n if (!response.ok) {\n throw new Error(`S3 download failed: ${response.status} ${response.statusText}`);\n }\n\n return response.text();\n }\n\n /**\n * Get the public URL for a given key\n */\n getPublicUrl(key: string): string {\n return `${this.config.publicUrlBase}/${key}`;\n }\n}\n","import { readFileSync } from 'fs';\nimport { ethers } from 'ethers';\nimport type { NoosphereAgentConfig, ContainerMetadata } from '../types';\n\nexport class ConfigLoader {\n /**\n * Load agent configuration from JSON file\n */\n static loadFromFile(configPath: string): NoosphereAgentConfig {\n try {\n const configData = readFileSync(configPath, 'utf-8');\n const config = JSON.parse(configData) as NoosphereAgentConfig;\n\n // Validate required fields\n if (!config.chain || !config.chain.enabled) {\n throw new Error('Chain configuration is required and must be enabled');\n }\n\n if (!config.chain.rpcUrl) {\n throw new Error('Chain RPC URL is required');\n }\n\n if (!config.chain.routerAddress) {\n throw new Error('Router address is required');\n }\n\n if (!config.containers || config.containers.length === 0) {\n console.warn('⚠️ No containers configured in config file');\n }\n\n return config;\n } catch (error) {\n if ((error as NodeJS.ErrnoException).code === 'ENOENT') {\n throw new Error(`Config file not found: ${configPath}`);\n }\n throw error;\n }\n }\n\n /**\n * Convert ContainerConfig to ContainerMetadata format\n */\n static containerConfigToMetadata(\n containerConfig: NoosphereAgentConfig['containers'][0]\n ): ContainerMetadata {\n // Parse image name and tag\n const [imageName, tag] = containerConfig.image.includes(':')\n ? containerConfig.image.split(':')\n : [containerConfig.image, 'latest'];\n\n // Extract container name from image (last part after /)\n const name = imageName.split('/').pop() || containerConfig.id;\n\n // Convert acceptedPayments to payments format\n let payments: ContainerMetadata['payments'] | undefined;\n if (containerConfig.acceptedPayments) {\n const basePrice = Object.values(containerConfig.acceptedPayments)[0]?.toString() || '0';\n payments = {\n basePrice,\n unit: 'wei',\n per: 'execution',\n };\n }\n\n return {\n id: containerConfig.id,\n name,\n image: imageName,\n tag,\n port: containerConfig.port,\n env: containerConfig.env,\n verified: !!containerConfig.verifierAddress,\n payments,\n };\n }\n\n /**\n * Get all containers from config as ContainerMetadata array\n */\n static getContainersFromConfig(config: NoosphereAgentConfig): Map<string, ContainerMetadata> {\n const containersMap = new Map<string, ContainerMetadata>();\n\n for (const containerConfig of config.containers) {\n const metadata = this.containerConfigToMetadata(containerConfig);\n // Hash the container ID the same way as the smart contract does:\n // keccak256(abi.encode(containerId))\n const containerIdHash = ethers.keccak256(\n ethers.AbiCoder.defaultAbiCoder().encode(['string'], [containerConfig.id])\n );\n containersMap.set(containerIdHash, metadata);\n }\n\n return containersMap;\n }\n\n /**\n * Get container config by ID\n */\n static getContainerConfig(\n config: NoosphereAgentConfig,\n containerId: string\n ): NoosphereAgentConfig['containers'][0] | undefined {\n return config.containers.find((c) => c.id === containerId);\n }\n}\n","// Re-export PayloadData from contracts\nexport { PayloadData, InputType } from '@noosphere/contracts';\n\nexport interface Commitment {\n requestId: string;\n subscriptionId: bigint;\n containerId: string;\n interval: number;\n redundancy: number;\n useDeliveryInbox: boolean;\n feeToken: string;\n feeAmount: bigint;\n walletAddress: string;\n verifier: string;\n coordinator: string;\n}\n\nexport interface Payment {\n recipient: string;\n feeToken: string;\n feeAmount: bigint;\n}\n\nexport interface ProofVerificationRequest {\n subscriptionId: bigint;\n interval: number;\n submitterAddress: string;\n escrowedAmount: bigint;\n}\n\nexport interface RequestStartedEvent {\n requestId: string;\n subscriptionId: bigint;\n containerId: string;\n interval: number;\n redundancy: number;\n useDeliveryInbox: boolean;\n feeAmount: bigint;\n feeToken: string;\n verifier: string;\n coordinator: string;\n walletAddress: string;\n blockNumber: number;\n}\n\nexport interface ComputeSubscription {\n owner: string;\n wallet: string;\n containerId: string;\n intervalSeconds: number;\n maxExecutions: number;\n redundancy: number;\n feeToken: string;\n feeAmount: bigint;\n verifier: string;\n routeId: string;\n activeAt: number;\n useDeliveryInbox: boolean;\n}\n\nexport interface AgentConfig {\n rpcUrl: string;\n wsRpcUrl?: string;\n privateKey?: string; // Optional - use keystore initialization instead\n routerAddress: string;\n coordinatorAddress: string;\n deploymentBlock?: number;\n pollingInterval?: number;\n}\n\n// Extended config for full agent configuration (matches Java agent config.json)\nexport interface NoosphereAgentConfig {\n forwardStats?: boolean;\n manageContainers?: boolean;\n startupWait?: number;\n agent?: {\n name: string;\n apiKey?: string;\n email?: string;\n };\n server?: {\n port: number;\n rateLimit?: {\n numRequests: number;\n period: number;\n };\n };\n hub?: {\n register: boolean;\n url: string;\n keepAlive?: {\n enabled: boolean;\n intervalMs: number;\n batchSize?: number;\n };\n };\n chain: {\n enabled: boolean;\n rpcUrl: string;\n wsRpcUrl?: string;\n trailHeadBlocks?: number;\n routerAddress: string;\n coordinatorAddress?: string;\n deploymentBlock?: number;\n processingInterval?: number;\n wallet: {\n maxGasLimit?: number;\n paymentAddress?: string;\n allowedSimErrors?: string[];\n keystore?: {\n path: string;\n password: string;\n keys?: {\n eth?: string;\n };\n };\n };\n snapshotSync?: {\n sleep?: number;\n batchSize?: number;\n startingSubId?: number;\n syncPeriod?: number;\n };\n connection?: {\n timeout?: number;\n readTimeout?: number;\n writeTimeout?: number;\n };\n gasConfig?: {\n priceMultiplier?: number;\n limitMultiplier?: number;\n };\n };\n docker?: {\n username?: string;\n password?: string;\n };\n containers: ContainerConfig[];\n}\n\nexport interface ContainerConfig {\n id: string;\n image: string;\n port?: string;\n env?: Record<string, string>;\n volumes?: string[];\n verifierAddress?: string;\n acceptedPayments?: Record<string, number>;\n}\n\nexport interface ContainerMetadata {\n id: string;\n name: string;\n image: string;\n tag?: string;\n port?: string;\n env?: Record<string, string>;\n requirements?: {\n memory?: string;\n cpu?: number;\n gpu?: boolean;\n };\n payments?: {\n basePrice: string;\n unit: string;\n per: string;\n };\n verified?: boolean;\n}\n\nexport interface VerifierMetadata {\n address: string;\n name: string;\n image: string;\n tag?: string;\n}\n\nexport enum FulfillResult {\n FULFILLED = 0,\n INVALID_REQUEST_ID = 1,\n INVALID_COMMITMENT = 2,\n SUBSCRIPTION_BALANCE_INVARIANT_VIOLATION = 3,\n INSUFFICIENT_SUBSCRIPTION_BALANCE = 4,\n COST_EXCEEDS_COMMITMENT = 5,\n}\n\n/**\n * Event emitted when scheduler successfully prepares next interval\n */\nexport interface CommitmentSuccessEvent {\n subscriptionId: bigint;\n interval: bigint;\n txHash: string;\n blockNumber: number;\n gasUsed: string;\n gasPrice: string;\n gasCost: string;\n requestStartedEvent?: RequestStartedEvent;\n}\n","import { ethers } from 'ethers';\n\nexport class RequestIdUtils {\n /**\n * Pack subscriptionId and interval into requestId\n * Matches Solidity: keccak256(abi.encodePacked(subscriptionId, interval))\n */\n static pack(subscriptionId: bigint, interval: number): string {\n // encodePacked for uint64 and uint32\n const subscriptionIdBytes = ethers.zeroPadValue(ethers.toBeHex(subscriptionId), 8);\n const intervalBytes = ethers.zeroPadValue(ethers.toBeHex(interval), 4);\n\n const packed = ethers.concat([subscriptionIdBytes, intervalBytes]);\n return ethers.keccak256(packed);\n }\n\n /**\n * Unpack requestId into subscriptionId and interval (if stored separately)\n * Note: This is not possible from the hash alone - only for informational purposes\n * In practice, subscriptionId and interval are stored in events\n */\n static format(requestId: string, subscriptionId: bigint, interval: number): string {\n return `Request(id=${requestId.slice(0, 10)}..., sub=${subscriptionId}, interval=${interval})`;\n }\n}\n"],"mappings":"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","names":["exports","module","exports","module","stream","exports","module","exports","module","exports","charset","path","extension","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","isNaN","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","concatty","slicy","Empty","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","exports","module","undefined","doEval","stringToPath","getBaseIntrinsic","require_shams","exports","module","exports","module","exports","module","exports","module","path","fs","Docker","axios","executionTime","path","fs","err","import_ethers","import_events","ethers","import_crypto","import_contracts","import_ethers","import_ethers","axios","PayloadScheme","import_ethers","result","import_contracts","FulfillResult","import_ethers","import_crypto","import_registry"]}
|