@dora-cell/sdk 0.1.1-beta.12 → 0.1.1-beta.13

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/types/index.ts","../src/core/AuthProvider.ts","../src/utils/phoneFormatter.ts","../src/core/CallManager.ts","../src/core/DoraCell.ts"],"names":["EventEmitter","JsSIP"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Core TypeScript type definitions for Dora Cell SDK\n */\n\n// ============================================\n// Configuration Types\n// ============================================\n\nexport interface ApiTokenAuth {\n type: 'api-token';\n apiToken: string;\n apiBaseUrl?: string;\n}\n\nexport interface DirectCredentialsAuth {\n type: 'direct';\n sipUri: string;\n password: string;\n wsUrl: string;\n}\n\nexport interface ExtensionAuth {\n type: 'extension';\n extension: string;\n // Optional overrides for advanced cases\n password?: string;\n sipDomain?: string;\n}\n\nexport type AuthConfig = ApiTokenAuth | DirectCredentialsAuth | ExtensionAuth;\n\nexport interface DoraCellConfig {\n auth: AuthConfig;\n sipServer?: string;\n turnServers?: RTCIceServer[];\n debug?: boolean;\n autoSelectExtension?: boolean; // Auto-select first available extension\n}\n\n// ============================================\n// SIP Credentials\n// ============================================\n\nexport interface SipCredentials {\n wsUrl: string;\n sipUri: string;\n password: string;\n sipDomain?: string;\n extensions?: Extension[];\n expiresIn?: number;\n}\n\nexport interface Extension {\n extension: string;\n displayName?: string;\n isPrimary?: boolean;\n}\n\n// ============================================\n// Call Types\n// ============================================\n\nexport type CallStatus = 'idle' | 'connecting' | 'ringing' | 'ongoing' | 'ended';\n\nexport type CallDirection = 'inbound' | 'outbound';\n\nexport interface CallOptions {\n extension?: string; // Specific extension to use for this call\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport interface Call {\n id: string;\n status: CallStatus;\n direction: CallDirection;\n remoteNumber: string;\n localExtension: string;\n duration: number;\n startTime?: number;\n endTime?: number;\n\n // Methods\n mute(): void;\n unmute(): void;\n hangup(): void;\n isMuted(): boolean;\n}\n\n// ============================================\n// Connection Status\n// ============================================\n\nexport type ConnectionStatus =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'registered'\n | 'registrationFailed';\n\nexport interface ConnectionState {\n status: ConnectionStatus;\n extension?: string;\n error?: string;\n}\n\n// ============================================\n// Events\n// ============================================\n\nexport type DoraCellEventMap = {\n 'connection:status': (state: ConnectionState) => void;\n 'call:incoming': (call: Call) => void;\n 'call:outgoing': (call: Call) => void;\n 'call:ringing': (call: Call) => void;\n 'call:connected': (call: Call) => void;\n 'call:ended': (call: Call, reason?: string) => void;\n 'call:failed': (call: Call, error: string) => void;\n 'error': (error: Error) => void;\n};\n\nexport type DoraCellEvent = keyof DoraCellEventMap;\n\n// ============================================\n// API Response Types\n// ============================================\n\nexport interface ApiTokenResponse {\n ws_url?: string;\n wsUrl?: string;\n sip_uri?: string;\n sipUri?: string;\n password?: string;\n sip_domain?: string;\n sipDomain?: string;\n extensions?: Extension[];\n expires_in?: number;\n expiresIn?: number;\n}\n\n// ============================================\n// Error Types\n// ============================================\n\nexport class DoraCellError extends Error {\n constructor(\n message: string,\n public code?: string,\n public details?: any\n ) {\n super(message);\n this.name = 'DoraCellError';\n }\n}\n\nexport class AuthenticationError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'AUTH_ERROR', details);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class CallError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CALL_ERROR', details);\n this.name = 'CallError';\n }\n}\n\nexport class ConnectionError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CONNECTION_ERROR', details);\n this.name = 'ConnectionError';\n }\n}\n","/**\n * Authentication provider for API token-based authentication\n */\n\nimport type {\n AuthConfig,\n SipCredentials,\n ApiTokenResponse,\n Extension,\n} from '../types';\nimport { AuthenticationError } from '../types';\n\nexport interface AuthProvider {\n authenticate(config: AuthConfig): Promise<SipCredentials>;\n refreshCredentials?(): Promise<SipCredentials>;\n isAuthenticated(): boolean;\n}\n\n/**\n * API Token Authentication Provider\n * Exchanges API token for SIP credentials via backend API\n */\nexport class ApiTokenAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n private apiToken: string;\n private apiBaseUrl: string;\n\n constructor(apiToken: string, apiBaseUrl?: string) {\n this.apiToken = apiToken;\n let defaultBaseUrl = '';\n if (typeof process !== 'undefined' && process.env) {\n defaultBaseUrl = process.env.NEXT_PUBLIC_BASE_API_URL || '';\n }\n this.apiBaseUrl = apiBaseUrl || defaultBaseUrl;\n }\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'api-token') {\n throw new AuthenticationError('Invalid auth config type for ApiTokenAuthProvider');\n }\n\n try {\n const response = await fetch(`${this.apiBaseUrl}/api/sip-credentials`, {\n method: 'GET',\n headers: {\n 'Authorization': `Bearer ${this.apiToken}`,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n },\n credentials: 'include',\n });\n\n if (!response.ok) {\n if (response.status === 401 || response.status === 403) {\n throw new AuthenticationError(\n 'Invalid API token or insufficient permissions',\n { status: response.status }\n );\n }\n throw new AuthenticationError(\n `Failed to fetch SIP credentials: ${response.status}`,\n { status: response.status }\n );\n }\n\n const data: ApiTokenResponse = await response.json();\n this.credentials = this.parseCredentials(data);\n return this.credentials;\n } catch (error) {\n if (error instanceof AuthenticationError) {\n throw error;\n }\n throw new AuthenticationError(\n `Authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n async refreshCredentials(): Promise<SipCredentials> {\n // Re-authenticate to get fresh credentials\n return this.authenticate({ type: 'api-token', apiToken: this.apiToken });\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n\n private parseCredentials(data: ApiTokenResponse): SipCredentials {\n const wsUrl = data.ws_url || data.wsUrl;\n const sipUri = data.sip_uri || data.sipUri;\n const password = data.password;\n const sipDomain = data.sip_domain || data.sipDomain;\n const extensions = data.extensions;\n const expiresIn = data.expires_in || data.expiresIn;\n\n if (!wsUrl || !sipUri) {\n throw new AuthenticationError(\n 'Invalid credentials response: missing ws_url or sip_uri'\n );\n }\n\n return {\n wsUrl,\n sipUri,\n password: password || '',\n sipDomain,\n extensions,\n expiresIn,\n };\n }\n}\n\n/**\n * Direct Credentials Authentication Provider\n * Uses credentials provided directly in configuration\n */\nexport class DirectCredentialsAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'direct') {\n throw new AuthenticationError('Invalid auth config type for DirectCredentialsAuthProvider');\n }\n\n this.credentials = {\n wsUrl: config.wsUrl,\n sipUri: config.sipUri,\n password: config.password,\n };\n\n return this.credentials;\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n}\n\n/**\n * Extension Authentication Provider\n * Simplified plug-and-play authentication using just an extension number.\n * Uses default Dora Cell infrastructure configuration.\n */\nconst DEFAULT_WSS_URL = 'wss://cell.usedora.com:8089';\nconst DEFAULT_SIP_IP = '64.227.10.164';\nconst DEFAULT_PASSWORD = '1234';\n\nexport class ExtensionAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'extension') {\n throw new AuthenticationError('Invalid auth config type for ExtensionAuthProvider');\n }\n\n const extension = config.extension;\n const password = config.password || DEFAULT_PASSWORD;\n const wsUrl = DEFAULT_WSS_URL;\n const sipDomain = config.sipDomain || DEFAULT_SIP_IP;\n\n const sipUri = `sip:${extension}@${sipDomain}`;\n\n this.credentials = {\n wsUrl,\n sipUri,\n password,\n sipDomain,\n extensions: [{ extension, displayName: `Ext ${extension}`, isPrimary: true }]\n };\n\n return this.credentials;\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n}\n\n/**\n * Factory function to create appropriate auth provider\n */\nexport function createAuthProvider(config: AuthConfig): AuthProvider {\n switch (config.type) {\n case 'api-token':\n return new ApiTokenAuthProvider(config.apiToken, config.apiBaseUrl);\n case 'direct':\n return new DirectCredentialsAuthProvider();\n case 'extension':\n return new ExtensionAuthProvider();\n default:\n throw new AuthenticationError('Unknown authentication type');\n }\n}\n","/**\n * Phone number formatting utilities\n * Extracted from JsSIPProvider.tsx\n */\n\n/**\n * Format a phone number to SIP URI format\n * Handles Nigerian numbers, international format, and local extensions\n */\nexport function formatPhoneToSIP(phone: string, sipDomain: string): string {\n // Strip all non-numeric characters\n let cleaned = phone.replace(/\\D/g, '');\n\n // Case 1: Short local extension (like \"101\", \"102\", etc.)\n if (cleaned.length <= 4) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 2: Nigerian number starting with 0 (like \"08012345678\")\n if (cleaned.startsWith('0')) {\n cleaned = '234' + cleaned.substring(1);\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 3: Already in international format (starts with 234)\n if (cleaned.startsWith('234')) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 4: Any other number - assume it needs 234 prefix\n cleaned = '234' + cleaned;\n return `sip:${cleaned}@${sipDomain}`;\n}\n\n/**\n * Normalize a phone number to E.164 format\n */\nexport function normalizePhoneNumber(\n phone: string,\n countryCode: string = '234'\n): string {\n let cleaned = phone.replace(/\\D/g, '');\n\n // If it's a short extension, return as-is\n if (cleaned.length <= 4) {\n return cleaned;\n }\n\n // Remove leading 0 and add country code\n if (cleaned.startsWith('0')) {\n return countryCode + cleaned.substring(1);\n }\n\n // If already has country code, return as-is\n if (cleaned.startsWith(countryCode)) {\n return cleaned;\n }\n\n // Otherwise add country code\n return countryCode + cleaned;\n}\n\n/**\n * Extract extension/number from SIP URI\n */\nexport function extractNumberFromSipUri(sipUri: string): string {\n const match = sipUri.match(/sip:([^@]+)@/);\n return match ? match[1] : sipUri;\n}\n\n/**\n * Validate phone number format\n */\nexport function isValidPhoneNumber(phone: string, minLength: number = 3): boolean {\n const cleaned = phone.replace(/\\D/g, '');\n return cleaned.length >= minLength;\n}\n","/**\n * Call Manager - Handles individual call sessions\n * Extracted and refactored from JsSIPProvider.tsx\n */\n\nimport type {\n Call,\n CallStatus,\n CallDirection,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { CallError } from '../types';\nimport { formatPhoneToSIP } from '../utils/phoneFormatter';\nimport EventEmitter from 'eventemitter3';\n\nexport interface CallConfig {\n pcConfig: RTCConfiguration;\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport class CallSession implements Call {\n public id: string;\n public status: CallStatus = 'idle';\n public direction: CallDirection;\n public remoteNumber: string;\n public localExtension: string;\n public duration: number = 0;\n public startTime?: number;\n public endTime?: number;\n\n private session: any; // JsSIP RTCSession\n private _isMuted: boolean = false;\n private remoteStreamValue: MediaStream | null = null;\n private durationInterval?: number;\n private events: EventEmitter;\n\n constructor(\n session: any,\n direction: CallDirection,\n remoteNumber: string,\n localExtension: string,\n events: EventEmitter\n ) {\n this.id = this.generateCallId();\n this.session = session;\n this.direction = direction;\n this.remoteNumber = remoteNumber;\n this.localExtension = localExtension;\n this.events = events;\n\n this.setupSessionHandlers();\n }\n\n private generateCallId(): string {\n return `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private setupSessionHandlers(): void {\n // Progress event (ringing)\n this.session.on('progress', (evt: any) => {\n const code = evt.response?.status_code;\n if (code === 180 || code === 183) {\n this.status = 'ringing';\n this.events.emit('call:ringing', this);\n }\n });\n\n // Call confirmed (connected)\n this.session.on('confirmed', () => {\n this.status = 'ongoing';\n this.startTime = Date.now();\n this.startDurationTimer();\n this.events.emit('call:connected', this);\n });\n\n // Peer connection setup\n this.session.on('peerconnection', (evt: any) => {\n evt.peerconnection.ontrack = (event: any) => {\n if (event.streams && event.streams[0]) {\n this.remoteStreamValue = event.streams[0];\n }\n };\n });\n\n // Call ended\n this.session.on('ended', (evt: any) => {\n this.handleCallEnd(evt?.cause);\n });\n\n // Call failed\n this.session.on('failed', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call failed');\n });\n\n // Call rejected\n this.session.on('rejected', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call rejected');\n });\n }\n\n private handleCallEnd(reason?: string): void {\n this.status = 'ended';\n this.endTime = Date.now();\n this.stopDurationTimer();\n this.remoteStreamValue = null;\n this._isMuted = false;\n this.events.emit('call:ended', this, reason);\n }\n\n private startDurationTimer(): void {\n this.durationInterval = window.setInterval(() => {\n if (this.startTime) {\n this.duration = Math.floor((Date.now() - this.startTime) / 1000);\n }\n }, 1000);\n }\n\n private stopDurationTimer(): void {\n if (this.durationInterval) {\n clearInterval(this.durationInterval);\n this.durationInterval = undefined;\n }\n }\n\n // Public methods\n mute(): void {\n if (this.session && !this._isMuted) {\n this.session.mute({ audio: true });\n this._isMuted = true;\n }\n }\n\n unmute(): void {\n if (this.session && this._isMuted) {\n this.session.unmute({ audio: true });\n this._isMuted = false;\n }\n }\n\n hangup(): void {\n if (this.session) {\n this.session.terminate();\n }\n }\n\n isMuted(): boolean {\n return this._isMuted;\n }\n\n getRemoteStream(): MediaStream | null {\n return this.remoteStreamValue;\n }\n\n getFormattedDuration(): string {\n const mm = String(Math.floor(this.duration / 60)).padStart(2, '0');\n const ss = String(this.duration % 60).padStart(2, '0');\n return `${mm}:${ss}`;\n }\n\n destroy(): void {\n this.stopDurationTimer();\n this.session = null;\n this.remoteStreamValue = null;\n }\n}\n\n/**\n * Call Manager - Manages call sessions and JsSIP integration\n */\nexport class CallManager {\n private ua: any | null = null; // JsSIP User Agent\n private currentCall: CallSession | null = null;\n private credentials: SipCredentials;\n private events: EventEmitter;\n private callConfig: CallConfig;\n\n constructor(\n credentials: SipCredentials,\n events: EventEmitter,\n callConfig: CallConfig\n ) {\n this.credentials = credentials;\n this.events = events;\n this.callConfig = callConfig;\n }\n\n setUserAgent(ua: any): void {\n this.ua = ua;\n }\n\n /**\n * Initiate an outbound call\n */\n async initiateCall(\n targetNumber: string,\n options?: CallOptions\n ): Promise<CallSession> {\n if (!this.ua) {\n throw new CallError('User Agent not initialized');\n }\n\n if (this.currentCall && this.currentCall.status !== 'ended') {\n throw new CallError('A call is already in progress');\n }\n\n try {\n // Request microphone permission\n await navigator.mediaDevices.getUserMedia({ audio: true });\n\n // Determine which extension to use\n const extension = options?.extension || this.getDefaultExtension();\n\n // Format the target number to SIP URI\n const sipDomain = this.extractDomain(this.credentials.sipUri);\n const sipTarget = formatPhoneToSIP(targetNumber, sipDomain);\n\n // Initiate the call\n const session = this.ua.call(sipTarget, {\n mediaConstraints: options?.mediaConstraints || { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n\n // Create call session\n const call = new CallSession(\n session,\n 'outbound',\n targetNumber,\n extension,\n this.events\n );\n\n call.status = 'connecting';\n this.currentCall = call;\n this.events.emit('call:outgoing', call);\n\n return call;\n } catch (error) {\n throw new CallError(\n `Failed to initiate call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Answer an incoming call\n */\n answerCall(session: any): CallSession {\n if (!session) {\n throw new CallError('No session provided');\n }\n\n try {\n const remoteUri = session.remote_identity?.uri?.toString() || 'Unknown';\n const extension = this.getDefaultExtension();\n\n session.answer({\n mediaConstraints: { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n\n const call = new CallSession(\n session,\n 'inbound',\n remoteUri,\n extension,\n this.events\n );\n\n this.currentCall = call;\n return call;\n } catch (error) {\n throw new CallError(\n `Failed to answer call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Handle incoming call from JsSIP\n */\n handleIncomingCall(session: any): CallSession {\n const remoteUri = session.remote_identity?.uri?.toString() || 'Unknown';\n const extension = this.getDefaultExtension();\n\n const call = new CallSession(\n session,\n 'inbound',\n remoteUri,\n extension,\n this.events\n );\n\n call.status = 'ringing';\n this.currentCall = call;\n this.events.emit('call:incoming', call);\n\n return call;\n }\n\n getCurrentCall(): CallSession | null {\n return this.currentCall;\n }\n\n clearCurrentCall(): void {\n if (this.currentCall) {\n this.currentCall.destroy();\n this.currentCall = null;\n }\n }\n\n private getDefaultExtension(): string {\n // Auto-select first extension if available\n if (this.credentials.extensions && this.credentials.extensions.length > 0) {\n return this.credentials.extensions[0].extension;\n }\n // Fallback to extracting from sipUri\n return this.extractExtension(this.credentials.sipUri);\n }\n\n private extractExtension(sipUri: string): string {\n const match = sipUri.match(/sip:([^@]+)@/);\n return match ? match[1] : 'unknown';\n }\n\n private extractDomain(sipUri: string): string {\n const match = sipUri.match(/@(.+)$/);\n return match ? match[1] : '';\n }\n\n destroy(): void {\n this.clearCurrentCall();\n this.ua = null;\n }\n}\n","/**\n * Dora Cell SDK - Main entry point\n * Framework-agnostic VoIP calling SDK using JsSIP\n */\n\nimport JsSIP from 'jssip';\nimport EventEmitter from 'eventemitter3';\nimport type {\n DoraCellConfig,\n DoraCellEventMap,\n DoraCellEvent,\n ConnectionStatus,\n ConnectionState,\n Call,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { ConnectionError, CallError } from '../types';\nimport { createAuthProvider, AuthProvider } from './AuthProvider';\nimport { CallManager } from './CallManager';\n\nexport class DoraCell {\n private config: DoraCellConfig;\n private events: EventEmitter;\n private authProvider: AuthProvider;\n private credentials: SipCredentials | null = null;\n private ua: any | null = null; // JsSIP User Agent\n private callManager: CallManager | null = null;\n private connectionStatus: ConnectionStatus = 'disconnected';\n private retryCount: number = 0;\n private maxRetries: number = 3;\n\n constructor(config: DoraCellConfig) {\n this.config = {\n autoSelectExtension: true,\n debug: false,\n ...config,\n };\n\n this.events = new EventEmitter();\n this.authProvider = createAuthProvider(config.auth);\n\n // Enable JsSIP debugging if requested\n if (this.config.debug) {\n JsSIP.debug.enable('JsSIP:*');\n }\n }\n\n /**\n * Initialize the SDK - authenticate and connect to SIP server\n */\n async initialize(): Promise<void> {\n try {\n // Step 1: Authenticate and get SIP credentials\n this.credentials = await this.authProvider.authenticate(this.config.auth);\n\n // Step 2: Initialize JsSIP User Agent\n await this.initializeUserAgent();\n\n // Step 3: Initialize Call Manager\n this.initializeCallManager();\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n this.emitError(new ConnectionError(`Initialization failed: ${errorMessage}`));\n throw error;\n }\n }\n\n private async initializeUserAgent(): Promise<void> {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available');\n }\n\n try {\n // Create WebSocket connection\n const socket = new JsSIP.WebSocketInterface(this.credentials.wsUrl);\n\n // Build TURN/STUN configuration\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n // Create User Agent configuration\n const uaConfig: any = {\n uri: this.credentials.sipUri,\n password: this.credentials.password,\n sockets: [socket],\n register: true,\n display_name: this.getDisplayName(),\n session_timers: false,\n use_preloaded_route: false,\n pcConfig: pcConfig,\n instance_id: this.generateInstanceId(),\n };\n\n // Create User Agent\n this.ua = new JsSIP.UA(uaConfig);\n\n // Set up UA event handlers\n this.setupUserAgentHandlers();\n\n // Start the UA\n this.ua.start();\n\n } catch (error) {\n throw new ConnectionError(\n `Failed to initialize User Agent: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n private setupUserAgentHandlers(): void {\n if (!this.ua) return;\n\n this.ua.on('connected', () => {\n this.connectionStatus = 'connected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('disconnected', () => {\n this.connectionStatus = 'disconnected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('registered', () => {\n this.connectionStatus = 'registered';\n this.retryCount = 0;\n this.emitConnectionStatus();\n });\n\n this.ua.on('registrationFailed', (e: any) => {\n this.connectionStatus = 'registrationFailed';\n this.emitConnectionStatus(e.cause);\n\n // Retry logic\n if (this.retryCount < this.maxRetries) {\n this.retryCount++;\n setTimeout(() => {\n this.ua?.register();\n }, 3000);\n }\n });\n\n this.ua.on('newRTCSession', (e: any) => {\n const session = e.session;\n\n if (session.direction === 'incoming') {\n // Handle incoming call\n this.callManager?.handleIncomingCall(session);\n }\n });\n }\n\n private initializeCallManager(): void {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available for call manager');\n }\n\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n this.callManager = new CallManager(\n this.credentials,\n this.events,\n { pcConfig }\n );\n\n this.callManager.setUserAgent(this.ua);\n }\n\n /**\n * Make an outbound call\n */\n async call(phoneNumber: string, options?: CallOptions): Promise<Call> {\n if (!this.callManager) {\n throw new CallError('SDK not initialized. Call initialize() first.');\n }\n\n if (this.connectionStatus !== 'registered') {\n throw new CallError('Not registered to SIP server');\n }\n\n return this.callManager.initiateCall(phoneNumber, options);\n }\n\n /**\n * Answer an incoming call\n */\n answerCall(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No incoming call to answer');\n }\n\n if (currentCall.direction !== 'inbound') {\n throw new CallError('Current call is not an incoming call');\n }\n\n // The CallSession will handle answering via its internal session\n // This is already set up in CallManager.handleIncomingCall\n }\n\n /**\n * Hangup the current call\n */\n hangup(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No active call to hang up');\n }\n\n currentCall.hangup();\n }\n\n /**\n * Get current call\n */\n getCurrentCall(): Call | null {\n return this.callManager?.getCurrentCall() || null;\n }\n\n /**\n * Get connection status\n */\n getStatus(): ConnectionStatus {\n return this.connectionStatus;\n }\n\n /**\n * Get available extensions\n */\n getExtensions(): string[] {\n if (!this.credentials?.extensions) {\n return [];\n }\n return this.credentials.extensions.map(ext => ext.extension);\n }\n\n /**\n * Event listener management\n */\n on<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.on(event, handler as any);\n }\n\n off<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.off(event, handler as any);\n }\n\n once<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.once(event, handler as any);\n }\n\n /**\n * Cleanup and destroy the SDK instance\n */\n destroy(): void {\n if (this.ua) {\n this.ua.stop();\n this.ua = null;\n }\n\n if (this.callManager) {\n this.callManager.destroy();\n this.callManager = null;\n }\n\n this.events.removeAllListeners();\n this.connectionStatus = 'disconnected';\n this.credentials = null;\n }\n\n // Helper methods\n private emitConnectionStatus(error?: string): void {\n const state: ConnectionState = {\n status: this.connectionStatus,\n extension: this.credentials?.extensions?.[0]?.extension,\n error,\n };\n this.events.emit('connection:status', state);\n }\n\n private emitError(error: Error): void {\n this.events.emit('error', error);\n }\n\n private getDefaultTurnServers(): RTCIceServer[] {\n let turnUri = 'turn:64.227.10.164:3478';\n let turnUser = '02018890089';\n let turnPass = 'dora12345';\n\n if (typeof process !== 'undefined' && process.env) {\n turnUri = process.env.NEXT_PUBLIC_TURN_URI || turnUri;\n turnUser = process.env.NEXT_PUBLIC_TURN_USER || turnUser;\n turnPass = process.env.NEXT_PUBLIC_TURN_PASS || turnPass;\n }\n\n return [\n {\n urls: turnUri,\n username: turnUser,\n credential: turnPass,\n },\n ];\n }\n\n private getDisplayName(): string {\n if (this.credentials?.extensions?.[0]?.displayName) {\n return this.credentials.extensions[0].displayName;\n }\n if (this.credentials?.extensions?.[0]?.extension) {\n return `Ext ${this.credentials.extensions[0].extension}`;\n }\n return 'Dora Cell User';\n }\n\n private generateInstanceId(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\nexport default DoraCell;\n"]}
1
+ {"version":3,"sources":["../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/package.json","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Constants.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Exceptions.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/NameAddrHeader.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Grammar.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/URI.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Utils.js","../../../node_modules/.pnpm/ms@2.1.3/node_modules/ms/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/common.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/browser.js","../../../node_modules/.pnpm/has-flag@4.0.0/node_modules/has-flag/index.js","../../../node_modules/.pnpm/supports-color@8.1.1/node_modules/supports-color/index.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/node.js","../../../node_modules/.pnpm/debug@4.4.3_supports-color@8.1.1/node_modules/debug/src/index.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Logger.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/grammar.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/parser.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/writer.js","../../../node_modules/.pnpm/sdp-transform@2.15.0/node_modules/sdp-transform/lib/index.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/SIPMessage.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/DigestAuthentication.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Timers.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Transactions.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/RequestSender.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Registrator.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Dialog/RequestSender.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Dialog.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/RTCSession/DTMF.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/RTCSession/Info.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/RTCSession/ReferNotifier.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/RTCSession/ReferSubscriber.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/RTCSession.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Subscriber.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Notifier.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Message.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Options.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Socket.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Transport.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Parser.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/sanityCheck.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/Config.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/UA.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/WebSocketInterface.js","../../../node_modules/.pnpm/jssip@3.12.0/node_modules/jssip/src/JsSIP.js","../../../node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.js","../src/core/DoraCell.ts","../../../node_modules/.pnpm/eventemitter3@5.0.4/node_modules/eventemitter3/index.mjs","../src/types/index.ts","../src/core/AuthProvider.ts","../src/utils/phoneFormatter.ts","../src/core/CallManager.ts"],"names":["exports","result2","offset","result","expected","found","x","a","b","c","d","useColors","EventEmitter","require_RequestSender","JsSIP"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,MAAA,CAAA,OAAA,GAAA;AAAA,MACE,IAAA,EAAQ,OAAA;AAAA,MACR,KAAA,EAAS,OAAA;AAAA,MACT,WAAA,EAAe,4BAAA;AAAA,MACf,OAAA,EAAW,QAAA;AAAA,MACX,QAAA,EAAY,mBAAA;AAAA,MACZ,YAAA,EAAgB;AAAA,QACd,yEAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,KAAA,EAAS,gBAAA;AAAA,MACT,IAAA,EAAQ,cAAA;AAAA,MACR,QAAA,EAAY;AAAA,QACV,KAAA;AAAA,QACA,WAAA;AAAA,QACA,QAAA;AAAA,QACA,MAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAW,KAAA;AAAA,MACX,UAAA,EAAc;AAAA,QACZ,IAAA,EAAQ,KAAA;AAAA,QACR,GAAA,EAAO;AAAA,OACT;AAAA,MACA,IAAA,EAAQ;AAAA,QACN,GAAA,EAAO;AAAA,OACT;AAAA,MACA,YAAA,EAAgB;AAAA,QACd,KAAA,EAAS,QAAA;AAAA,QACT,MAAA,EAAU,QAAA;AAAA,QACV,eAAA,EAAiB;AAAA,OACnB;AAAA,MACA,eAAA,EAAmB;AAAA,QACjB,kBAAA,EAAoB,QAAA;AAAA,QACpB,YAAA,EAAc,SAAA;AAAA,QACd,cAAA,EAAgB,SAAA;AAAA,QAChB,eAAA,EAAiB,QAAA;AAAA,QACjB,OAAA,EAAW,SAAA;AAAA,QACX,MAAA,EAAU,SAAA;AAAA,QACV,oBAAA,EAAsB,UAAA;AAAA,QACtB,OAAA,EAAW,SAAA;AAAA,QACX,IAAA,EAAQ,SAAA;AAAA,QACR,KAAA,EAAS;AAAA,OACX;AAAA,MACA,OAAA,EAAW;AAAA,QACT,IAAA,EAAQ,0BAAA;AAAA,QACR,IAAA,EAAQ,0BAAA;AAAA,QACR,KAAA,EAAS,2BAAA;AAAA,QACT,OAAA,EAAW;AAAA;AACb,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACnDA,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,GAAA,GAAM,eAAA,EAAA;AAEZ,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,YAAa,CAAA,EAAG,GAAA,CAAI,KAAK,CAAA,CAAA,EAAI,IAAI,OAAO,CAAA,CAAA;AAAA;AAAA,MAGxC,GAAA,EAAO,KAAA;AAAA,MACP,IAAA,EAAO,MAAA;AAAA;AAAA,MAGP,MAAA,EAAS;AAAA;AAAA,QAEP,gBAAA,EAAmB,kBAAA;AAAA,QACnB,eAAA,EAAmB,iBAAA;AAAA,QACnB,gBAAA,EAAmB,kBAAA;AAAA,QACnB,cAAA,EAAmB,gBAAA;AAAA;AAAA,QAGnB,IAAA,EAAuB,MAAA;AAAA,QACvB,QAAA,EAAuB,UAAA;AAAA,QACvB,UAAA,EAAuB,YAAA;AAAA,QACvB,WAAA,EAAuB,aAAA;AAAA,QACvB,SAAA,EAAuB,WAAA;AAAA,QACvB,kBAAA,EAAuB,oBAAA;AAAA,QACvB,gBAAA,EAAuB,kBAAA;AAAA,QACvB,WAAA,EAAuB,aAAA;AAAA,QACvB,oBAAA,EAAuB,sBAAA;AAAA;AAAA,QAGvB,GAAA,EAA2B,YAAA;AAAA,QAC3B,YAAA,EAA2B,cAAA;AAAA,QAC3B,QAAA,EAA2B,UAAA;AAAA,QAC3B,SAAA,EAA2B,WAAA;AAAA,QAC3B,OAAA,EAA2B,SAAA;AAAA,QAC3B,MAAA,EAA2B,QAAA;AAAA,QAC3B,YAAA,EAA2B,cAAA;AAAA,QAC3B,wBAAA,EAA2B,0BAAA;AAAA,QAC3B,qBAAA,EAA2B,uBAAA;AAAA,QAC3B,WAAA,EAA2B;AAAA,OAC7B;AAAA,MAEA,gBAAA,EAAmB;AAAA,QACjB,YAAuB,CAAE,GAAA,EAAK,GAAA,EAAK,GAAA,EAAK,KAAK,GAAI,CAAA;AAAA,QACjD,IAAA,EAAuB,CAAE,GAAA,EAAK,GAAI,CAAA;AAAA,QAClC,QAAA,EAAuB,CAAE,GAAA,EAAK,GAAI,CAAA;AAAA,QAClC,SAAA,EAAuB,CAAE,GAAA,EAAK,GAAI,CAAA;AAAA,QAClC,WAAA,EAAuB,CAAE,GAAA,EAAK,GAAA,EAAK,KAAK,GAAI,CAAA;AAAA,QAC5C,kBAAA,EAAuB,CAAE,GAAA,EAAK,GAAI,CAAA;AAAA,QAClC,gBAAA,EAAuB,CAAE,GAAA,EAAK,GAAI,CAAA;AAAA,QAClC,oBAAA,EAAuB,CAAE,GAAA,EAAK,GAAI;AAAA,OACpC;AAAA;AAAA,MAGA,GAAA,EAAY,KAAA;AAAA,MACZ,GAAA,EAAY,KAAA;AAAA,MACZ,MAAA,EAAY,QAAA;AAAA,MACZ,IAAA,EAAY,MAAA;AAAA,MACZ,MAAA,EAAY,QAAA;AAAA,MACZ,OAAA,EAAY,SAAA;AAAA,MACZ,MAAA,EAAY,QAAA;AAAA,MACZ,OAAA,EAAY,SAAA;AAAA,MACZ,QAAA,EAAY,UAAA;AAAA,MACZ,KAAA,EAAY,OAAA;AAAA,MACZ,MAAA,EAAY,QAAA;AAAA,MACZ,SAAA,EAAY,WAAA;AAAA;AAAA,MAGZ,cAAA,EAAiB;AAAA,QACf,IAAA,EAAU,MAAA;AAAA,QACV,OAAA,EAAU;AAAA,OACZ;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,aAAA,EAAgB;AAAA,QACd,GAAA,EAAM,QAAA;AAAA,QACN,GAAA,EAAM,SAAA;AAAA,QACN,GAAA,EAAM,yBAAA;AAAA,QACN,GAAA,EAAM,QAAA;AAAA,QACN,GAAA,EAAM,kBAAA;AAAA,QACN,GAAA,EAAM,yBAAA;AAAA;AAAA,QACN,GAAA,EAAM,IAAA;AAAA,QACN,GAAA,EAAM,UAAA;AAAA;AAAA,QACN,GAAA,EAAM,iBAAA;AAAA;AAAA,QACN,GAAA,EAAM,kBAAA;AAAA,QACN,GAAA,EAAM,mBAAA;AAAA,QACN,GAAA,EAAM,mBAAA;AAAA,QACN,GAAA,EAAM,WAAA;AAAA,QACN,GAAA,EAAM,qBAAA;AAAA,QACN,GAAA,EAAM,aAAA;AAAA,QACN,GAAA,EAAM,cAAA;AAAA,QACN,GAAA,EAAM,kBAAA;AAAA,QACN,GAAA,EAAM,WAAA;AAAA,QACN,GAAA,EAAM,WAAA;AAAA,QACN,GAAA,EAAM,oBAAA;AAAA,QACN,GAAA,EAAM,gBAAA;AAAA,QACN,GAAA,EAAM,+BAAA;AAAA,QACN,GAAA,EAAM,iBAAA;AAAA,QACN,GAAA,EAAM,MAAA;AAAA,QACN,GAAA,EAAM,4BAAA;AAAA;AAAA,QACN,GAAA,EAAM,0BAAA;AAAA,QACN,GAAA,EAAM,sBAAA;AAAA,QACN,GAAA,EAAM,wBAAA;AAAA,QACN,GAAA,EAAM,wBAAA;AAAA,QACN,GAAA,EAAM,2BAAA;AAAA;AAAA,QACN,GAAA,EAAM,eAAA;AAAA,QACN,GAAA,EAAM,oBAAA;AAAA,QACN,GAAA,EAAM,4BAAA;AAAA;AAAA,QACN,GAAA,EAAM,oBAAA;AAAA,QACN,GAAA,EAAM,0BAAA;AAAA;AAAA,QACN,GAAA,EAAM,qBAAA;AAAA;AAAA,QACN,GAAA,EAAM,2BAAA;AAAA;AAAA,QACN,GAAA,EAAM,aAAA;AAAA;AAAA,QACN,GAAA,EAAM,sBAAA;AAAA;AAAA,QACN,GAAA,EAAM,mBAAA;AAAA;AAAA,QACN,GAAA,EAAM,yBAAA;AAAA;AAAA,QACN,GAAA,EAAM,yBAAA;AAAA;AAAA,QACN,GAAA,EAAM,kCAAA;AAAA;AAAA,QACN,GAAA,EAAM,sBAAA;AAAA;AAAA,QACN,GAAA,EAAM,kBAAA;AAAA;AAAA,QACN,GAAA,EAAM,gBAAA;AAAA;AAAA,QACN,GAAA,EAAM,0BAAA;AAAA;AAAA,QACN,GAAA,EAAM,yBAAA;AAAA,QACN,GAAA,EAAM,iCAAA;AAAA,QACN,GAAA,EAAM,eAAA;AAAA,QACN,GAAA,EAAM,eAAA;AAAA,QACN,GAAA,EAAM,oBAAA;AAAA,QACN,GAAA,EAAM,WAAA;AAAA,QACN,GAAA,EAAM,WAAA;AAAA,QACN,GAAA,EAAM,oBAAA;AAAA,QACN,GAAA,EAAM,qBAAA;AAAA,QACN,GAAA,EAAM,WAAA;AAAA;AAAA,QACN,GAAA,EAAM,iBAAA;AAAA,QACN,GAAA,EAAM,gBAAA;AAAA,QACN,GAAA,EAAM,6BAAA;AAAA;AAAA,QACN,GAAA,EAAM,sBAAA;AAAA,QACN,GAAA,EAAM,iBAAA;AAAA,QACN,GAAA,EAAM,aAAA;AAAA,QACN,GAAA,EAAM,qBAAA;AAAA,QACN,GAAA,EAAM,iBAAA;AAAA,QACN,GAAA,EAAM,uBAAA;AAAA,QACN,GAAA,EAAM,mBAAA;AAAA,QACN,GAAA,EAAM,sBAAA;AAAA;AAAA,QACN,GAAA,EAAM,iBAAA;AAAA,QACN,GAAA,EAAM,SAAA;AAAA,QACN,GAAA,EAAM,yBAAA;AAAA,QACN,GAAA,EAAM;AAAA,OACR;AAAA,MAEA,eAAA,EAAmC,0EAAA;AAAA,MACnC,mBAAA,EAAmC,yCAAA;AAAA,MACnC,YAAA,EAAmC,EAAA;AAAA,MACnC,eAAA,EAAmC,EAAA;AAAA,MACnC,mBAAA,EAAmC,EAAA;AAAA,MACnC,gCAAA,EAAmC,EAAA;AAAA,MACnC,gCAAA,EAAmC;AAAA,KACrC;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC9JA,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,kBAAA,GAAN,cAAiC,KAAA,CACjC;AAAA,MACE,WAAA,CAAY,WAAW,KAAA,EACvB;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AACZ,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,UAAW,CAAC,IAAA,CAAK,KAAA,GACpB,CAAA,mBAAA,EAAsB,KAAK,SAAS,CAAA,CAAA,GACpC,CAAA,cAAA,EAAiB,IAAA,CAAK,UAAU,IAAA,CAAK,KAAK,CAAC,CAAA,gBAAA,EAAmB,KAAK,SAAS,CAAA,CAAA,CAAA;AAAA,MAChF;AAAA,KACF;AAEA,IAAA,IAAM,iBAAA,GAAN,cAAgC,KAAA,CAChC;AAAA,MACE,YAAY,MAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AACZ,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,QAAA,IAAA,CAAK,OAAA,GAAU,mBAAmB,MAAM,CAAA,CAAA;AAAA,MAC1C;AAAA,KACF;AAEA,IAAA,IAAM,iBAAA,GAAN,cAAgC,KAAA,CAChC;AAAA,MACE,YAAY,OAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AACZ,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA,KACF;AAEA,IAAA,IAAM,aAAA,GAAN,cAA4B,KAAA,CAC5B;AAAA,MACE,YAAY,OAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,IAAA,GAAO,CAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AACZ,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,MACjB;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,iBAAA;AAAA,MACA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1DA,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,gFAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAEhB,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,cAAA,CACvB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKE,OAAO,MAAM,gBAAA,EACb;AACE,QAAA,gBAAA,GAAmB,OAAA,CAAQ,KAAA,CAAM,gBAAA,EAAkB,kBAAkB,CAAA;AAErE,QAAA,IAAI,qBAAqB,EAAA,EACzB;AACE,UAAA,OAAO,gBAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,WAAA,CAAY,GAAA,EAAK,YAAA,EAAc,UAAA,EAC/B;AAEE,QAAA,IAAI,CAAC,GAAA,IAAO,EAAE,GAAA,YAAe,GAAA,CAAA,EAC7B;AACE,UAAA,MAAM,IAAI,UAAU,oCAAoC,CAAA;AAAA,QAC1D;AAGA,QAAA,IAAA,CAAK,IAAA,GAAO,GAAA;AACZ,QAAA,IAAA,CAAK,cAAc,EAAC;AACpB,QAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAEpB,QAAA,KAAA,MAAW,SAAS,UAAA,EACpB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,UAAA,EAAY,KAAK,CAAA,EAC1D;AACE,YAAA,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,GAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,IAAA;AAAA,MACd;AAAA,MAEA,IAAI,YAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,aAAA;AAAA,MACd;AAAA,MAEA,IAAI,aAAa,KAAA,EACjB;AACE,QAAA,IAAA,CAAK,aAAA,GAAiB,KAAA,KAAU,CAAA,GAAK,GAAA,GAAM,KAAA;AAAA,MAC7C;AAAA,MAEA,QAAA,CAAS,KAAK,KAAA,EACd;AACE,QAAA,IAAI,GAAA,EACJ;AACE,UAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,CAAA,GAAK,OAAO,KAAA,KAAU,WAAA,IAAe,KAAA,KAAU,IAAA,GAAQ,IAAA,GAAO,KAAA,CAAM,QAAA,EAAS;AAAA,QACjH;AAAA,MACF;AAAA,MAEA,SAAS,GAAA,EACT;AACE,QAAA,IAAI,GAAA,EACJ;AACE,UAAA,OAAO,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,CAAA;AAAA,QAC3C;AAAA,MACF;AAAA,MAEA,SAAS,GAAA,EACT;AACE,QAAA,IAAI,GAAA,EACJ;AACE,UAAA,OAAQ,KAAK,WAAA,CAAY,cAAA,CAAe,IAAI,WAAA,EAAa,KAAK,IAAA,IAAS,KAAA;AAAA,QACzE;AAAA,MACF;AAAA,MAEA,YAAY,SAAA,EACZ;AACE,QAAA,SAAA,GAAY,UAAU,WAAA,EAAY;AAClC,QAAA,IAAI,IAAA,CAAK,WAAA,CAAY,cAAA,CAAe,SAAS,CAAA,EAC7C;AACE,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA;AAExC,UAAA,OAAO,IAAA,CAAK,YAAY,SAAS,CAAA;AAEjC,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,WAAA,GACA;AACE,QAAA,IAAA,CAAK,cAAc,EAAC;AAAA,MACtB;AAAA,MAEA,KAAA,GACA;AACE,QAAA,OAAO,IAAI,cAAA;AAAA,UACT,IAAA,CAAK,KAAK,KAAA,EAAM;AAAA,UAChB,IAAA,CAAK,aAAA;AAAA,UACL,KAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,WAAW,CAAC;AAAA,SAAC;AAAA,MAChD;AAAA,MAEA,OAAO,GAAA,EACP;AACE,QAAA,OAAO,IACJ,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA,CACrB,OAAA,CAAQ,MAAM,KAAK,CAAA;AAAA,MACxB;AAAA,MAEA,QAAA,GACA;AACE,QAAA,IAAI,IAAA,GAAO,KAAK,aAAA,GAAgB,CAAA,CAAA,EAAI,KAAK,MAAA,CAAO,IAAA,CAAK,aAAa,CAAC,CAAA,EAAA,CAAA,GAAO,EAAA;AAE1E,QAAA,IAAA,IAAQ,CAAA,CAAA,EAAI,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU,CAAA,CAAA,CAAA;AAEhC,QAAA,KAAA,MAAW,SAAA,IAAa,KAAK,WAAA,EAC7B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,WAAA,EAAa,SAAS,CAAA,EACpE;AACE,YAAA,IAAA,IAAQ,IAAI,SAAS,CAAA,CAAA;AAErB,YAAA,IAAI,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA,KAAM,IAAA,EACpC;AACE,cAAA,IAAA,IAAQ,CAAA,CAAA,EAAI,IAAA,CAAK,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AAAA,YACzC;AAAA,UACF;AAAA,QACF;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1IA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,MAAA,CAAO,WAAW,WAAU;AAM1B,MAAA,SAAS,MAAM,CAAA,EAAG;AAWf,QAAA,OAAO,GAAA,GAAM,CAAA,CACX,OAAA,CAAQ,KAAA,EAAO,MAAM,CAAA,CACrB,OAAA,CAAQ,IAAA,EAAM,KAAK,CAAA,CACnB,OAAA,CAAQ,OAAA,EAAS,KAAK,EACtB,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,CACpB,OAAA,CAAQ,KAAA,EAAO,KAAK,CAAA,CACpB,QAAQ,KAAA,EAAO,KAAK,CAAA,CACpB,OAAA,CAAQ,OAAO,KAAK,CAAA,CACpB,OAAA,CAAQ,sCAAA,EAAwC,MAAM,CAAA,GACrD,GAAA;AAAA,MACN;AACA,MAAA,IAAI,MAAA,GAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAOX,KAAA,EAAO,SAAS,KAAA,EAAO,SAAA,EAAW;AAChC,UAAA,IAAI,cAAA,GAAiB;AAAA,YACnB,MAAA,EAAQ,UAAA;AAAA,YACR,OAAA,EAAS,WAAA;AAAA,YACT,OAAA,EAAS,WAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,KAAA,EAAO,SAAA;AAAA,YACP,OAAA,EAAS,WAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,IAAA,EAAM,QAAA;AAAA,YACN,MAAA,EAAQ,UAAA;AAAA,YACR,UAAA,EAAY,cAAA;AAAA,YACZ,UAAA,EAAY,cAAA;AAAA,YACZ,YAAA,EAAc,gBAAA;AAAA,YACd,MAAA,EAAQ,UAAA;AAAA,YACR,SAAA,EAAW,aAAA;AAAA,YACX,KAAA,EAAO,SAAA;AAAA,YACP,KAAA,EAAO,SAAA;AAAA,YACP,QAAA,EAAU,YAAA;AAAA,YACV,gBAAA,EAAkB,oBAAA;AAAA,YAClB,eAAA,EAAiB,mBAAA;AAAA,YACjB,eAAA,EAAiB,mBAAA;AAAA,YACjB,WAAA,EAAa,eAAA;AAAA,YACb,MAAA,EAAQ,UAAA;AAAA,YACR,OAAA,EAAS,WAAA;AAAA,YACT,aAAA,EAAe,iBAAA;AAAA,YACf,YAAA,EAAc,gBAAA;AAAA,YACd,MAAA,EAAQ,UAAA;AAAA,YACR,MAAA,EAAQ,UAAA;AAAA,YACR,OAAA,EAAS,WAAA;AAAA,YACT,OAAA,EAAS,WAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,YAAA;AAAA,YACV,OAAA,EAAS,WAAA;AAAA,YACT,MAAA,EAAQ,UAAA;AAAA,YACR,OAAA,EAAS,WAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,YAAA;AAAA,YACV,SAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAS,WAAA;AAAA,YACT,eAAA,EAAiB,mBAAA;AAAA,YACjB,qBAAA,EAAuB,yBAAA;AAAA,YACvB,QAAA,EAAU,YAAA;AAAA,YACV,aAAA,EAAe,iBAAA;AAAA,YACf,kBAAA,EAAoB,sBAAA;AAAA,YACpB,SAAA,EAAW,aAAA;AAAA,YACX,YAAA,EAAc,gBAAA;AAAA,YACd,iBAAA,EAAmB,qBAAA;AAAA,YACnB,gBAAA,EAAkB,oBAAA;AAAA,YAClB,UAAA,EAAY,cAAA;AAAA,YACZ,MAAA,EAAQ,UAAA;AAAA,YACR,iBAAA,EAAmB,qBAAA;AAAA,YACnB,UAAA,EAAY,cAAA;AAAA,YACZ,UAAA,EAAY,cAAA;AAAA,YACZ,MAAA,EAAQ,UAAA;AAAA,YACR,UAAA,EAAY,cAAA;AAAA,YACZ,aAAA,EAAe,iBAAA;AAAA,YACf,UAAA,EAAY,cAAA;AAAA,YACZ,eAAA,EAAiB,mBAAA;AAAA,YACjB,aAAA,EAAe,iBAAA;AAAA,YACf,KAAA,EAAO,SAAA;AAAA,YACP,MAAA,EAAQ,UAAA;AAAA,YACR,aAAA,EAAe,iBAAA;AAAA,YACf,WAAA,EAAa,eAAA;AAAA,YACb,MAAA,EAAQ,UAAA;AAAA,YACR,gBAAA,EAAkB,oBAAA;AAAA,YAClB,eAAA,EAAiB,mBAAA;AAAA,YACjB,iBAAA,EAAmB,qBAAA;AAAA,YACnB,YAAA,EAAc,gBAAA;AAAA,YACd,cAAA,EAAgB,kBAAA;AAAA,YAChB,WAAA,EAAa,eAAA;AAAA,YACb,aAAA,EAAe,iBAAA;AAAA,YACf,UAAA,EAAY,cAAA;AAAA,YACZ,aAAA,EAAe,iBAAA;AAAA,YACf,OAAA,EAAS,WAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,WAAA,EAAa,eAAA;AAAA,YACb,kBAAA,EAAoB,sBAAA;AAAA,YACpB,SAAA,EAAW,aAAA;AAAA,YACX,QAAA,EAAU,YAAA;AAAA,YACV,OAAA,EAAS,WAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,gBAAA,EAAkB,oBAAA;AAAA,YAClB,kBAAA,EAAoB,sBAAA;AAAA,YACpB,cAAA,EAAgB,kBAAA;AAAA,YAChB,aAAA,EAAe,iBAAA;AAAA,YACf,aAAA,EAAe,iBAAA;AAAA,YACf,WAAA,EAAa,eAAA;AAAA,YACb,UAAA,EAAY,cAAA;AAAA,YACZ,UAAA,EAAY,cAAA;AAAA,YACZ,aAAA,EAAe,iBAAA;AAAA,YACf,MAAA,EAAQ,UAAA;AAAA,YACR,eAAA,EAAiB,mBAAA;AAAA,YACjB,eAAA,EAAiB,mBAAA;AAAA,YACjB,SAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAS,WAAA;AAAA,YACT,OAAA,EAAS,WAAA;AAAA,YACT,QAAA,EAAU,YAAA;AAAA,YACV,WAAA,EAAa,eAAA;AAAA,YACb,MAAA,EAAQ,UAAA;AAAA,YACR,UAAA,EAAY,cAAA;AAAA,YACZ,OAAA,EAAS,WAAA;AAAA,YACT,aAAA,EAAe,iBAAA;AAAA,YACf,SAAA,EAAW,aAAA;AAAA,YACX,MAAA,EAAQ,UAAA;AAAA,YACR,UAAA,EAAY,cAAA;AAAA,YACZ,MAAA,EAAQ,UAAA;AAAA,YACR,SAAA,EAAW,aAAA;AAAA,YACX,WAAA,EAAa,eAAA;AAAA,YACb,YAAA,EAAc,gBAAA;AAAA,YACd,SAAA,EAAW,aAAA;AAAA,YACX,QAAA,EAAU,YAAA;AAAA,YACV,QAAA,EAAU,YAAA;AAAA,YACV,aAAA,EAAe,iBAAA;AAAA,YACf,aAAA,EAAe,iBAAA;AAAA,YACf,gBAAA,EAAkB,oBAAA;AAAA,YAClB,eAAA,EAAiB,mBAAA;AAAA,YACjB,cAAA,EAAgB,kBAAA;AAAA,YAChB,SAAA,EAAW,aAAA;AAAA,YACX,SAAA,EAAW,aAAA;AAAA,YACX,eAAA,EAAiB,mBAAA;AAAA,YACjB,WAAA,EAAa,eAAA;AAAA,YACb,cAAA,EAAgB,kBAAA;AAAA,YAChB,gBAAA,EAAkB,oBAAA;AAAA,YAClB,OAAA,EAAS,WAAA;AAAA,YACT,aAAA,EAAe,iBAAA;AAAA,YACf,eAAA,EAAiB,mBAAA;AAAA,YACjB,QAAA,EAAU,YAAA;AAAA,YACV,eAAA,EAAiB,mBAAA;AAAA,YACjB,WAAA,EAAa,eAAA;AAAA,YACb,qBAAA,EAAuB,yBAAA;AAAA,YACvB,WAAA,EAAa,eAAA;AAAA,YACb,YAAA,EAAc,gBAAA;AAAA,YACd,gBAAA,EAAkB,oBAAA;AAAA,YAClB,kBAAA,EAAoB,sBAAA;AAAA,YACpB,gBAAA,EAAkB,oBAAA;AAAA,YAClB,cAAA,EAAgB,kBAAA;AAAA,YAChB,YAAA,EAAc,gBAAA;AAAA,YACd,QAAA,EAAU,YAAA;AAAA,YACV,eAAA,EAAiB,mBAAA;AAAA,YACjB,gBAAA,EAAkB,oBAAA;AAAA,YAClB,iBAAA,EAAmB,qBAAA;AAAA,YACnB,SAAA,EAAW,aAAA;AAAA,YACX,WAAA,EAAa,eAAA;AAAA,YACb,aAAA,EAAe,iBAAA;AAAA,YACf,SAAA,EAAW,aAAA;AAAA,YACX,MAAA,EAAQ,UAAA;AAAA,YACR,YAAA,EAAc,gBAAA;AAAA,YACd,SAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAS,WAAA;AAAA,YACT,YAAA,EAAc,gBAAA;AAAA,YACd,MAAA,EAAQ,UAAA;AAAA,YACR,YAAA,EAAc,gBAAA;AAAA,YACd,WAAA,EAAa,eAAA;AAAA,YACb,cAAA,EAAgB,kBAAA;AAAA,YAChB,aAAA,EAAe,iBAAA;AAAA,YACf,kBAAA,EAAoB,sBAAA;AAAA,YACpB,oBAAA,EAAsB,wBAAA;AAAA,YACtB,WAAA,EAAa,eAAA;AAAA,YACb,iBAAA,EAAmB,qBAAA;AAAA,YACnB,YAAA,EAAc,gBAAA;AAAA,YACd,YAAA,EAAc,gBAAA;AAAA,YACd,OAAA,EAAS,WAAA;AAAA,YACT,aAAA,EAAe,iBAAA;AAAA,YACf,QAAA,EAAU,YAAA;AAAA,YACV,KAAA,EAAO,SAAA;AAAA,YACP,OAAA,EAAS,WAAA;AAAA,YACT,aAAA,EAAe,iBAAA;AAAA,YACf,QAAA,EAAU,YAAA;AAAA,YACV,OAAA,EAAS,WAAA;AAAA,YACT,WAAA,EAAa,eAAA;AAAA,YACb,aAAA,EAAe,iBAAA;AAAA,YACf,WAAA,EAAa,eAAA;AAAA,YACb,eAAA,EAAiB,mBAAA;AAAA,YACjB,cAAA,EAAgB,kBAAA;AAAA,YAChB,WAAA,EAAa,eAAA;AAAA,YACb,QAAA,EAAU,YAAA;AAAA,YACV,cAAA,EAAgB,kBAAA;AAAA,YAChB,cAAA,EAAgB,kBAAA;AAAA,YAChB,SAAA,EAAW,aAAA;AAAA,YACX,OAAA,EAAS,WAAA;AAAA,YACT,aAAA,EAAe,iBAAA;AAAA,YACf,oBAAA,EAAsB,wBAAA;AAAA,YACtB,gBAAA,EAAkB,oBAAA;AAAA,YAClB,eAAA,EAAiB,mBAAA;AAAA,YACjB,oBAAA,EAAsB,wBAAA;AAAA,YACtB,SAAA,EAAW,aAAA;AAAA,YACX,WAAA,EAAa,eAAA;AAAA,YACb,IAAA,EAAM,QAAA;AAAA,YACN,UAAA,EAAY,cAAA;AAAA,YACZ,KAAA,EAAO,SAAA;AAAA,YACP,WAAA,EAAa,eAAA;AAAA,YACb,YAAA,EAAc,gBAAA;AAAA,YACd,SAAA,EAAW,aAAA;AAAA,YACX,WAAA,EAAa,eAAA;AAAA,YACb,cAAA,EAAgB,kBAAA;AAAA,YAChB,YAAA,EAAc,gBAAA;AAAA,YACd,eAAA,EAAiB,mBAAA;AAAA,YACjB,OAAA,EAAS,WAAA;AAAA,YACT,eAAA,EAAiB,mBAAA;AAAA,YACjB,eAAA,EAAiB,mBAAA;AAAA,YACjB,WAAA,EAAa,eAAA;AAAA,YACb,SAAA,EAAW,aAAA;AAAA,YACX,UAAA,EAAY,cAAA;AAAA,YACZ,UAAA,EAAY,cAAA;AAAA,YACZ,KAAA,EAAO,SAAA;AAAA,YACP,kBAAA,EAAoB,sBAAA;AAAA,YACpB,iBAAA,EAAmB,qBAAA;AAAA,YACnB,aAAA,EAAe,iBAAA;AAAA,YACf,YAAA,EAAc,gBAAA;AAAA,YACd,eAAA,EAAiB,mBAAA;AAAA,YACjB,kBAAA,EAAoB,sBAAA;AAAA,YACpB,cAAA,EAAgB,kBAAA;AAAA,YAChB,cAAA,EAAgB,kBAAA;AAAA,YAChB,UAAA,EAAY,cAAA;AAAA,YACZ,MAAA,EAAQ,UAAA;AAAA,YACR,MAAA,EAAQ,UAAA;AAAA,YACR,MAAA,EAAQ,UAAA;AAAA,YACR,OAAA,EAAS,WAAA;AAAA,YACT,UAAA,EAAY,cAAA;AAAA,YACZ,UAAA,EAAY,cAAA;AAAA,YACZ,SAAA,EAAW,aAAA;AAAA,YACX,gBAAA,EAAkB,oBAAA;AAAA,YAClB,QAAA,EAAU,YAAA;AAAA,YACV,UAAA,EAAY,cAAA;AAAA,YACZ,YAAA,EAAc;AAAA,WAChB;AACA,UAAA,IAAI,cAAc,MAAA,EAAW;AAC3B,YAAA,IAAI,cAAA,CAAe,SAAS,CAAA,KAAM,MAAA,EAAW;AAC3C,cAAA,MAAM,IAAI,KAAA,CAAM,qBAAA,GAAwB,KAAA,CAAM,SAAS,IAAI,GAAG,CAAA;AAAA,YAChE;AAAA,UACF,CAAA,MAAO;AACL,YAAA,SAAA,GAAY,MAAA;AAAA,UACd;AACA,UAAA,IAAI,GAAA,GAAM,CAAA;AAEV,UAAA,IAAI,oBAAA,GAAuB,CAAA;AAC3B,UAAA,IAAI,4BAA4B,EAAC;AAsBjC,UAAA,SAAS,YAAY,OAAA,EAAS;AAC5B,YAAA,IAAI,MAAM,oBAAA,EAAsB;AAC9B,cAAA;AAAA,YACF;AACA,YAAA,IAAI,MAAM,oBAAA,EAAsB;AAC9B,cAAA,oBAAA,GAAuB,GAAA;AACvB,cAAA,yBAAA,GAA4B,EAAC;AAAA,YAC/B;AACA,YAAA,yBAAA,CAA0B,KAAK,OAAO,CAAA;AAAA,UACxC;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,MAAA,EAAQ;AACnC,cAAA,OAAA,GAAU,MAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,YAAY,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACvC,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAU,CAAA;AAAA,cACxB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,eAAe,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AAC1C,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,aAAa,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,SAAA,GAAY;AACnB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,QAAA,EAAS;AACnB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AAAA,YACvB;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,aAAa,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACxC,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,aAAa,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,OAAO,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AAClC,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAM,CAAA;AAAA,cACpB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,QAAA,GAAW;AAClB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,CAAA,EAAG;AAC/B,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,eAAe,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AAC1C,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,aAAa,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AAAA,YACvB;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,CAAA,GAAA,CAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,SAAS,OAAA,EAASC,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,OAAA,EAAS;AAAC,gBAAA,OAAO,OAAA,CAAQ,KAAK,EAAE,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACjF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,SAAA,GAAY;AACnB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AAAA,YACtB;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AACrB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAAA,WAAU,SAAA,EAAU;AACpB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,EAAC;AACX,gBAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,kBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,kBAAAA,WAAU,SAAA,EAAU;AAAA,gBACtB;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AAAA,cACZ;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,SAAA,GAAY;AACnB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,QAAA,EAAS;AACnB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AAAA,YACvB;AACA,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,QAAA,EAAS;AACnB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,UAAA,EAAW;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,cAChC;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,EAAC;AACX,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAAA,QAAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,SAAA,EAAU;AAAA,cACtB;AACA,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,EAAC;AACX,gBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,gBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,kBAAAA,QAAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,kBAAA,OAAA,GAAU,SAAA,EAAU;AAAA,gBACtB;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAChE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,YAChC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,iBAAiB,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AAC5C,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,iBAAiB,CAAA;AAAA,cAC/B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,eAAe,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AAC1C,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,eAAe,CAAA;AAAA,cAC7B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,gBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,CAAA,GAAA,CAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,CAAA,GAAA,CAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,sCAAA,OAAA,GAAU,GAAA;AACV,sCAAA,GAAA,EAAA;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAA0B;AACxB,wCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sCACrB;AAAA,oCACF;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,OAAAA,EAAQ;AACZ,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC9D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,CAAA,GAAA,CAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,CAAA,GAAA,CAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,OAAAA,EAAQ;AACZ,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC9D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,QAAU,CAAA;AAAA,8BACxB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,OAAA,GAAU,YAAA,EAAa;AACvB,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sCAAA,OAAA,GAAU,GAAA;AACV,sCAAA,GAAA,EAAA;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAA0B;AACxB,wCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sCACrB;AAAA,oCACF;AACA,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wCAAA,OAAA,GAAU,GAAA;AACV,wCAAA,GAAA,EAAA;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wCACrB;AAAA,sCACF;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0CAAA,OAAA,GAAU,GAAA;AACV,0CAAA,GAAA,EAAA;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAA0B;AACxB,4CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0CACrB;AAAA,wCACF;AACA,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,8CAAA,OAAA,GAAU,GAAA;AACV,8CAAA,GAAA,EAAA;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAA0B;AACxB,gDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8CACrB;AAAA,4CACF;AACA,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,OAAA,GAAU,QAAA,EAAS;AACnB,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,UAAA,EAAW;AAAA,8CACvB;AAAA,4CACF;AAAA,0CACF;AAAA,wCACF;AAAA,sCACF;AAAA,oCACF;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,CAAA,GAAA,CAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sCAAA,OAAA,GAAU,GAAA;AACV,sCAAA,GAAA,EAAA;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAA0B;AACxB,wCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sCACrB;AAAA,oCACF;AACA,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wCAAA,OAAA,GAAU,GAAA;AACV,wCAAA,GAAA,EAAA;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wCACrB;AAAA,sCACF;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0CAAA,OAAA,GAAU,GAAA;AACV,0CAAA,GAAA,EAAA;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAA0B;AACxB,4CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0CACrB;AAAA,wCACF;AACA,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,EAAA;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAA0B;AACxB,gDAAA,WAAA,CAAY,QAAU,CAAA;AAAA,8CACxB;AAAA,4CACF;AACA,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,OAAA,GAAU,YAAA,EAAa;AACvB,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kDAAA,OAAA,GAAU,GAAA;AACV,kDAAA,GAAA,EAAA;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAA0B;AACxB,oDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kDACrB;AAAA,gDACF;AACA,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oDAAA,OAAA,GAAU,GAAA;AACV,oDAAA,GAAA,EAAA;AAAA,kDACF,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAA0B;AACxB,sDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oDACrB;AAAA,kDACF;AACA,kDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sDAAA,OAAA,GAAU,GAAA;AACV,sDAAA,GAAA,EAAA;AAAA,oDACF,CAAA,MAAO;AACL,sDAAA,OAAA,GAAU,IAAA;AACV,sDAA0B;AACxB,wDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sDACrB;AAAA,oDACF;AACA,oDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wDAAA,OAAA,GAAU,GAAA;AACV,wDAAA,GAAA,EAAA;AAAA,sDACF,CAAA,MAAO;AACL,wDAAA,OAAA,GAAU,IAAA;AACV,wDAA0B;AACxB,0DAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wDACrB;AAAA,sDACF;AACA,sDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,0DAAA,OAAA,GAAU,GAAA;AACV,0DAAA,GAAA,EAAA;AAAA,wDACF,CAAA,MAAO;AACL,0DAAA,OAAA,GAAU,IAAA;AACV,0DAA0B;AACxB,4DAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0DACrB;AAAA,wDACF;AACA,wDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0DAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,4DAAA,OAAA,GAAU,GAAA;AACV,4DAAA,GAAA,EAAA;AAAA,0DACF,CAAA,MAAO;AACL,4DAAA,OAAA,GAAU,IAAA;AACV,4DAA0B;AACxB,8DAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4DACrB;AAAA,0DACF;AAAA,wDACF;AAAA,sDACF;AAAA,oDACF;AAAA,kDACF;AAAA,gDACF;AAAA,8CACF;AAAA,4CACF;AAAA,0CACF;AAAA,wCACF;AAAA,sCACF;AAAA,oCACF;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,CAAA,GAAA,CAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,sCAAA,OAAA,GAAU,GAAA;AACV,sCAAA,GAAA,EAAA;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAA0B;AACxB,wCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sCACrB;AAAA,oCACF;AACA,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wCAAA,OAAA,GAAU,GAAA;AACV,wCAAA,GAAA,EAAA;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wCACrB;AAAA,sCACF;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0CAAA,OAAA,GAAU,GAAA;AACV,0CAAA,GAAA,EAAA;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAA0B;AACxB,4CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0CACrB;AAAA,wCACF;AACA,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8CAAA,OAAA,GAAU,GAAA;AACV,8CAAA,GAAA,EAAA;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAA0B;AACxB,gDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8CACrB;AAAA,4CACF;AACA,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gDAAA,OAAA,GAAU,GAAA;AACV,gDAAA,GAAA,EAAA;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gDACrB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,EAAA;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAA0B;AACxB,oDAAA,WAAA,CAAY,QAAU,CAAA;AAAA,kDACxB;AAAA,gDACF;AACA,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sDAAA,OAAA,GAAU,GAAA;AACV,sDAAA,GAAA,EAAA;AAAA,oDACF,CAAA,MAAO;AACL,sDAAA,OAAA,GAAU,IAAA;AACV,sDAA0B;AACxB,wDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sDACrB;AAAA,oDACF;AACA,oDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wDAAA,OAAA,GAAU,GAAA;AACV,wDAAA,GAAA,EAAA;AAAA,sDACF,CAAA,MAAO;AACL,wDAAA,OAAA,GAAU,IAAA;AACV,wDAA0B;AACxB,0DAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wDACrB;AAAA,sDACF;AACA,sDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0DAAA,OAAA,GAAU,GAAA;AACV,0DAAA,GAAA,EAAA;AAAA,wDACF,CAAA,MAAO;AACL,0DAAA,OAAA,GAAU,IAAA;AACV,0DAA0B;AACxB,4DAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0DACrB;AAAA,wDACF;AACA,wDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0DAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4DAAA,OAAA,GAAU,GAAA;AACV,4DAAA,GAAA,EAAA;AAAA,0DACF,CAAA,MAAO;AACL,4DAAA,OAAA,GAAU,IAAA;AACV,4DAA0B;AACxB,8DAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4DACrB;AAAA,0DACF;AACA,0DAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4DAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,8DAAA,OAAA,GAAU,GAAA;AACV,8DAAA,GAAA,EAAA;AAAA,4DACF,CAAA,MAAO;AACL,8DAAA,OAAA,GAAU,IAAA;AACV,8DAA0B;AACxB,gEAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8DACrB;AAAA,4DACF;AACA,4DAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8DAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,GAAA,EAAK;AACjC,gEAAA,OAAA,GAAU,GAAA;AACV,gEAAA,GAAA,EAAA;AAAA,8DACF,CAAA,MAAO;AACL,gEAAA,OAAA,GAAU,IAAA;AACV,gEAA0B;AACxB,kEAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gEACrB;AAAA,8DACF;AAAA,4DACF;AAAA,0DACF;AAAA,wDACF;AAAA,sDACF;AAAA,oDACF;AAAA,kDACF;AAAA,gDACF;AAAA,8CACF;AAAA,4CACF;AAAA,0CACF;AAAA,wCACF;AAAA,sCACF;AAAA,oCACF;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,OAAAA,EAAQ;AACZ,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC9D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBA,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBA,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBC,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAK,GAAO,CAAA;AAAA,YAClD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBA,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAM,GAAO,CAAA;AAAA,YACnD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,6BAAoBA,OAAAA,EAAQ;AAAC,gBAAA,OAAO,GAAA;AAAA,cAAM,GAAO,CAAA;AAAA,YACnD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,aAAA,EAAc;AAAA,gBAC1B;AAAA,cACF;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,iBAAA,EAAkB;AAC5B,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAAA,WAAU,aAAA,EAAc;AAAA,kBAC1B;AAAA,gBACF;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,cAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,gBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,UAAU,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACrC,kBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,SAAS,CAAA;AAAA,kBACvB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,SAAA,EAAU;AAAA,kBACtB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,EAAC;AACX,gBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,iBAAA,EAAkB;AAAA,gBAC9B;AACA,gBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,kBAAAA,QAAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,iBAAA,EAAkB;AAAA,kBAC9B;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC9D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,yBAAA,GAA4B;AACnC,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,EAAC;AACX,gBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,iBAAA,EAAkB;AAAA,gBAC9B;AACA,gBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,kBAAAA,QAAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,iBAAA,EAAkB;AAAA,kBAC9B;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,IAAI,UAAU,KAAA,CACT,SAAA,CAAU,GAAA,EAAKA,OAAM,EACrB,IAAA,EAAK;AACV,gBAAA,OAAO,OAAA,CACF,UAAU,CAAA,EAAG,OAAA,CAAQ,SAAS,CAAC,CAAA,CAC/B,OAAA,CAAQ,oCAAA,EAAsC,IAAI,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YACnF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,kBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,UAAU,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACrC,oBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,SAAS,CAAA;AAAA,oBACvB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,kBAChC;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,cACxB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,WAAW,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACtC,gBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,WAAW,CAAA;AAAA,gBACzB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,aAAa,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACxC,kBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,aAAa,CAAA;AAAA,kBAC3B;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,YAAY,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACvC,oBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,cAAW,CAAA;AAAA,oBACzB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,sBAAA,GAAyB;AAChC,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,cAAA,EAAe;AACzB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,IAAI;AACA,kBAAA,IAAA,CAAK,GAAA,GAAM,IAAI,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,KAAK,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,IAAI,CAAA;AAC/D,kBAAA,OAAO,IAAA,CAAK,MAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,IAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,IAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,SAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,IAAA;AAAA,gBACd,SAAQ,CAAA,EAAG;AACT,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YAC9B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA;AACjD,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,cAAA,EAAe;AACzB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,sBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,sBACjE,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AAEV,gBAAA,IAAI;AACA,kBAAA,IAAA,CAAK,GAAA,GAAM,IAAI,GAAA,CAAI,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,IAAA,EAAM,IAAA,CAAK,UAAA,EAAY,KAAK,WAAW,CAAA;AAClG,kBAAA,OAAO,IAAA,CAAK,MAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,IAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,IAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,SAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,IAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,UAAA;AACZ,kBAAA,IAAI,cAAc,SAAA,EAAW;AAAE,oBAAA,IAAA,GAAO,IAAA,CAAK,GAAA;AAAA,kBAAI;AAAA,gBACjD,SAAQ,CAAA,EAAG;AACT,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YAC9B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,qBAAA,EAAsB;AAChC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,oBAAA,EAAqB;AAAA,YACjC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,qBAAA,GAAwB;AAC/B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,cACxB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,MAAA,EAAQ;AAClB,gBAAA,IAAA,CAAK,MAAA,GAAS,OAAO,WAAA,EAAY;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACxE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,MAAA,EAAQ;AAClB,gBAAA,IAAA,CAAK,MAAA,GAAS,OAAO,WAAA,EAAY;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACxE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,cAAA,EAAe;AACzB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,OAAO,kBAAA,CAAmB,KAAA,CAAM,UAAU,GAAA,GAAI,CAAA,EAAGA,OAAM,CAAC,CAAA;AAAA,cAAE,GAAG,IAAI,CAAA;AAAA,YAC1F;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,aAAA,EAAc;AACxB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,qBAAA,EAAsB;AAAA,cAClC;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,qBAAA,EAAsB;AAAA,kBAClC;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,qBAAA,GAAwB;AAC/B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,aAAA,EAAc;AACxB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,QAAA,GAAW,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YACzE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,cAChC;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,EAAE,WAAA,EAAY;AACrD,gBAAA,OAAO,IAAA,CAAK,IAAA;AAAA,cAAM,GAAG,IAAI,CAAA;AAAA,YAC7C;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAAA,QAAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,cAAA,EAAe;AACzB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,IAAA,CAAK,SAAA,GAAY,QAAA;AACjB,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC9D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAAA,WAAU,cAAA,EAAe;AACzB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAAA,QAAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAAA,WAAU,cAAA,EAAe;AACzB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAAA,QAAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAAA,QAAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAAA,QAAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAAA,WAAU,cAAA,EAAe;AACzB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAAA,QAAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAAA,WAAU,cAAA,EAAe;AACzB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAAA,QAAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAAA,QAAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAAA,QAAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AACjB,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAChE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,QAAA,EAAU,QAAA;AAClH,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,QAAA,GAAW,SAAA,EAAU;AACrB,gCAAA,IAAI,aAAa,IAAA,EAAM;AACrB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,QAAA,GAAW,GAAA;AACX,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,QAAA,GAAW,IAAA;AACX,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,aAAa,IAAA,EAAM;AACrB,oCAAA,QAAA,GAAW,UAAA,EAAW;AACtB,oCAAA,IAAI,aAAa,IAAA,EAAM;AACrB,sCAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,UAAU,QAAQ,CAAA;AAAA,oCACnI,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,GAAM,IAAA;AAAA,8BACR;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,gBACtB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAAA,QAAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,QAAA,GAAW,GAAA;AACX,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,QAAA,GAAW,IAAA;AACX,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,aAAa,IAAA,EAAM;AACrB,oCAAA,QAAA,GAAW,UAAA,EAAW;AACtB,oCAAA,IAAI,aAAa,IAAA,EAAM;AACrB,sCAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,QAAQ,CAAA;AAAA,oCACzH,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,GAAM,IAAA;AAAA,8BACR;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,kBACtB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAAA,QAAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAAA,QAAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,OAAA,GAAU,UAAA,EAAW;AACrB,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,kCACrG,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,GAAM,IAAA;AAAA,8BACR;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,oBACtB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAAA,QAAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAAA,QAAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,OAAA,GAAU,UAAA,EAAW;AACrB,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,OAAA,GAAU,CAAC,SAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,gCACnF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,GAAM,IAAA;AAAA,8BACR;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,IAAO,CAAA;AAAA,oBACT,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,sBACtB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAAA,QAAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAAA,QAAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,OAAA,GAAU,UAAA,EAAW;AACrB,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,8BACjE,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,GAAM,IAAA;AAAA,8BACR;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAA,GAAO,GAAA;AACP,sBAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,IAAO,CAAA;AAAA,sBACT,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,wBACtB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAAA,QAAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAAA,QAAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,UAAA,EAAW;AACrB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,4BAC/C,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAA,GAAO,GAAA;AACP,wBAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,IAAO,CAAA;AAAA,wBACT,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,0BACtB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,UAAA,EAAW;AACrB,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,0BAC7B,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAA,GAAO,GAAA;AACP,0BAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,IAAO,CAAA;AAAA,0BACT,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,4BACtB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,4BAC7B,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAA,GAAO,GAAA;AACP,4BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,IAAO,CAAA;AAAA,8BACT,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,gCACtB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAAA,WAAU,SAAA,EAAU;AACpB,gCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wCAAA,OAAA,GAAU,GAAA;AACV,wCAAA,GAAA,EAAA;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wCACrB;AAAA,sCACF;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gDAAA,OAAA,GAAU,GAAA;AACV,gDAAA,GAAA,EAAA;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gDACrB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,QAAA,GAAW,UAAA,EAAW;AACtB,gDAAA,IAAI,aAAa,IAAA,EAAM;AACrB,kDAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,QAAQ,CAAA;AAAA,gDAC/G,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,GAAM,IAAA;AAAA,8BACR;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAA,GAAO,GAAA;AACP,8BAAA,OAAA,GAAU,SAAA,EAAU;AACpB,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAA,GAAO,GAAA;AACP,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAAA,WAAU,SAAA,EAAU;AACpB,kCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oCAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,kCAC7B,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AACA,gCAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,oCAAAA,QAAAA,GAAU,IAAA;AACV,oCAAA,GAAA,IAAO,CAAA;AAAA,kCACT,CAAA,MAAO;AACL,oCAAAA,QAAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,oCACtB;AAAA,kCACF;AACA,kCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wCAAA,OAAA,GAAU,GAAA;AACV,wCAAA,GAAA,EAAA;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wCACrB;AAAA,sCACF;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gDAAA,OAAA,GAAU,GAAA;AACV,gDAAA,GAAA,EAAA;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gDACrB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,UAAA,EAAW;AACrB,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,gDACrG,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAAA,GAAA,GAAM,IAAA;AAAA,8BACR;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAA,GAAO,GAAA;AACP,gCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAA,GAAO,GAAA;AACP,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AACA,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAAA,WAAU,SAAA,EAAU;AACpB,oCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sCAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,oCAC7B,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AACA,kCAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,IAAA,GAAO,GAAA;AACP,oCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sCAAAA,QAAAA,GAAU,GAAA;AACV,sCAAA,GAAA,EAAA;AAAA,oCACF,CAAA,MAAO;AACL,sCAAAA,QAAAA,GAAU,IAAA;AACV,sCAA0B;AACxB,wCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sCACrB;AAAA,oCACF;AACA,oCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,sCAC7B,CAAA,MAAO;AACL,wCAAAA,QAAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AAAA,oCACF,CAAA,MAAO;AACL,sCAAAA,QAAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AACA,oCAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,oCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sCAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,IAAO,CAAA;AAAA,sCACT,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,wCACtB;AAAA,sCACF;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gDAAA,OAAA,GAAU,GAAA;AACV,gDAAA,GAAA,EAAA;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gDACrB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,UAAA,EAAW;AACrB,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,CAAC,SAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,gDAC5F,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAAA,GAAA,GAAM,IAAA;AAAA,gCACR;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAA,GAAO,GAAA;AACP,kCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,IAAA,GAAO,GAAA;AACP,oCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sCAAA,OAAA,GAAU,GAAA;AACV,sCAAA,GAAA,EAAA;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAA0B;AACxB,wCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sCACrB;AAAA,oCACF;AACA,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAAA,WAAU,SAAA,EAAU;AACpB,sCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,wCAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,sCAC7B,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AACA,oCAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAA,GAAO,GAAA;AACP,sCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wCAAAA,QAAAA,GAAU,GAAA;AACV,wCAAA,GAAA,EAAA;AAAA,sCACF,CAAA,MAAO;AACL,wCAAAA,QAAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wCACrB;AAAA,sCACF;AACA,sCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,wCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,wCAC7B,CAAA,MAAO;AACL,0CAAAA,QAAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAAA,QAAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AACA,sCAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,sCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,wCAAA,IAAA,GAAO,GAAA;AACP,wCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0CAAA,OAAA,GAAU,GAAA;AACV,0CAAA,GAAA,EAAA;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAA0B;AACxB,4CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0CACrB;AAAA,wCACF;AACA,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,0CAC7B,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AACA,wCAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,IAAO,CAAA;AAAA,0CACT,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,4CACtB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gDAAA,OAAA,GAAU,GAAA;AACV,gDAAA,GAAA,EAAA;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gDACrB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,UAAA,EAAW;AACrB,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,CAAC,SAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,gDACnF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAAA,GAAA,GAAM,IAAA;AAAA,kCACR;AACA,kCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oCAAA,IAAA,GAAO,GAAA;AACP,oCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAA,GAAO,GAAA;AACP,sCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wCAAA,OAAA,GAAU,GAAA;AACV,wCAAA,GAAA,EAAA;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAA0B;AACxB,0CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wCACrB;AAAA,sCACF;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAAA,WAAU,SAAA,EAAU;AACpB,wCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,0CAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,wCAC7B,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AACA,sCAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,IAAA,GAAO,GAAA;AACP,wCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0CAAAA,QAAAA,GAAU,GAAA;AACV,0CAAA,GAAA,EAAA;AAAA,wCACF,CAAA,MAAO;AACL,0CAAAA,QAAAA,GAAU,IAAA;AACV,0CAA0B;AACxB,4CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0CACrB;AAAA,wCACF;AACA,wCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,0CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,0CAC7B,CAAA,MAAO;AACL,4CAAAA,QAAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAAA,QAAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AACA,wCAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,wCAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,0CAAA,IAAA,GAAO,GAAA;AACP,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,4CAC7B,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AACA,0CAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,IAAA,GAAO,GAAA;AACP,4CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8CAAA,OAAA,GAAU,GAAA;AACV,8CAAA,GAAA,EAAA;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAA0B;AACxB,gDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8CACrB;AAAA,4CACF;AACA,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,8CAC7B,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AACA,4CAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,IAAO,CAAA;AAAA,8CACT,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,gDACtB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,UAAA,EAAW;AACrB,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,UAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,gDAC1E,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AAAA,oCACF,CAAA,MAAO;AACL,sCAAA,OAAA,GAAU,IAAA;AACV,sCAAA,GAAA,GAAM,IAAA;AAAA,oCACR;AACA,oCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sCAAA,IAAA,GAAO,GAAA;AACP,sCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,IAAA,GAAO,GAAA;AACP,wCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0CAAA,OAAA,GAAU,GAAA;AACV,0CAAA,GAAA,EAAA;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAA0B;AACxB,4CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0CACrB;AAAA,wCACF;AACA,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAAA,WAAU,SAAA,EAAU;AACpB,0CAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,0CAC7B,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AACA,wCAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAA,GAAO,GAAA;AACP,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAAA,QAAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAAA,QAAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,4CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,4CAC7B,CAAA,MAAO;AACL,8CAAAA,QAAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAAA,QAAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AACA,0CAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,0CAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,4CAAA,IAAA,GAAO,GAAA;AACP,4CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8CAAA,OAAA,GAAU,GAAA;AACV,8CAAA,GAAA,EAAA;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAA0B;AACxB,gDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8CACrB;AAAA,4CACF;AACA,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,8CAC7B,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AACA,4CAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,4CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8CAAA,IAAA,GAAO,GAAA;AACP,8CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gDAAA,OAAA,GAAU,GAAA;AACV,gDAAA,GAAA,EAAA;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gDACrB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,SAAA,EAAU;AACpB,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,gDAC7B,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AACA,8CAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,IAAA,GAAO,GAAA;AACP,gDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kDAAA,OAAA,GAAU,GAAA;AACV,kDAAA,GAAA,EAAA;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAA0B;AACxB,oDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kDACrB;AAAA,gDACF;AACA,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,SAAA,EAAU;AACpB,kDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,kDAC7B,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAAA,GAAA,GAAM,IAAA;AAAA,kDACR;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AACA,gDAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,oDAAA,OAAA,GAAU,IAAA;AACV,oDAAA,GAAA,IAAO,CAAA;AAAA,kDACT,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAA0B;AACxB,sDAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,oDACtB;AAAA,kDACF;AACA,kDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oDAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sDAAA,OAAA,GAAU,CAAC,SAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oDACnF,CAAA,MAAO;AACL,sDAAA,OAAA,GAAU,IAAA;AACV,sDAAA,GAAA,GAAM,IAAA;AAAA,oDACR;AAAA,kDACF,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAAA,GAAA,GAAM,IAAA;AAAA,kDACR;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF,CAAA,MAAO;AACL,wCAAA,OAAA,GAAU,IAAA;AACV,wCAAA,GAAA,GAAM,IAAA;AAAA,sCACR;AACA,sCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wCAAA,IAAA,GAAO,GAAA;AACP,wCAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0CAAA,IAAA,GAAO,GAAA;AACP,0CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4CAAA,OAAA,GAAU,GAAA;AACV,4CAAA,GAAA,EAAA;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAA0B;AACxB,8CAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4CACrB;AAAA,0CACF;AACA,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAAA,WAAU,SAAA,EAAU;AACpB,4CAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,8CAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,4CAC7B,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AACA,0CAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,0CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4CAAA,IAAA,GAAO,GAAA;AACP,4CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8CAAAA,QAAAA,GAAU,GAAA;AACV,8CAAA,GAAA,EAAA;AAAA,4CACF,CAAA,MAAO;AACL,8CAAAA,QAAAA,GAAU,IAAA;AACV,8CAA0B;AACxB,gDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8CACrB;AAAA,4CACF;AACA,4CAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,8CAAA,OAAA,GAAU,SAAA,EAAU;AACpB,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,8CAC7B,CAAA,MAAO;AACL,gDAAAA,QAAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAAA,QAAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AACA,4CAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,4CAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,8CAAA,IAAA,GAAO,GAAA;AACP,8CAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gDAAA,OAAA,GAAU,GAAA;AACV,gDAAA,GAAA,EAAA;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAA0B;AACxB,kDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gDACrB;AAAA,8CACF;AACA,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,OAAA,GAAU,SAAA,EAAU;AACpB,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,gDAC7B,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AACA,8CAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,8CAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gDAAA,IAAA,GAAO,GAAA;AACP,gDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kDAAA,OAAA,GAAU,GAAA;AACV,kDAAA,GAAA,EAAA;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAA0B;AACxB,oDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kDACrB;AAAA,gDACF;AACA,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,OAAA,GAAU,SAAA,EAAU;AACpB,kDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,kDAC7B,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAAA,GAAA,GAAM,IAAA;AAAA,kDACR;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AACA,gDAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,gDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kDAAA,IAAA,GAAO,GAAA;AACP,kDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oDAAA,OAAA,GAAU,GAAA;AACV,oDAAA,GAAA,EAAA;AAAA,kDACF,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAA0B;AACxB,sDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oDACrB;AAAA,kDACF;AACA,kDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oDAAA,OAAA,GAAU,SAAA,EAAU;AACpB,oDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oDAC7B,CAAA,MAAO;AACL,sDAAA,OAAA,GAAU,IAAA;AACV,sDAAA,GAAA,GAAM,IAAA;AAAA,oDACR;AAAA,kDACF,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAAA,GAAA,GAAM,IAAA;AAAA,kDACR;AACA,kDAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,kDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oDAAA,IAAA,GAAO,GAAA;AACP,oDAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sDAAA,OAAA,GAAU,GAAA;AACV,sDAAA,GAAA,EAAA;AAAA,oDACF,CAAA,MAAO;AACL,sDAAA,OAAA,GAAU,IAAA;AACV,sDAA0B;AACxB,wDAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sDACrB;AAAA,oDACF;AACA,oDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sDAAA,OAAA,GAAU,SAAA,EAAU;AACpB,sDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wDAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sDAC7B,CAAA,MAAO;AACL,wDAAA,OAAA,GAAU,IAAA;AACV,wDAAA,GAAA,GAAM,IAAA;AAAA,sDACR;AAAA,oDACF,CAAA,MAAO;AACL,sDAAA,OAAA,GAAU,IAAA;AACV,sDAAA,GAAA,GAAM,IAAA;AAAA,oDACR;AACA,oDAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,oDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sDAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,wDAAA,OAAA,GAAU,IAAA;AACV,wDAAA,GAAA,IAAO,CAAA;AAAA,sDACT,CAAA,MAAO;AACL,wDAAA,OAAA,GAAU,IAAA;AACV,wDAA0B;AACxB,0DAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,wDACtB;AAAA,sDACF;AACA,sDAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wDAAA,OAAA,GAAU,CAAC,SAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,sDACnF,CAAA,MAAO;AACL,wDAAA,OAAA,GAAU,IAAA;AACV,wDAAA,GAAA,GAAM,IAAA;AAAA,sDACR;AAAA,oDACF,CAAA,MAAO;AACL,sDAAA,OAAA,GAAU,IAAA;AACV,sDAAA,GAAA,GAAM,IAAA;AAAA,oDACR;AAAA,kDACF,CAAA,MAAO;AACL,oDAAA,OAAA,GAAU,IAAA;AACV,oDAAA,GAAA,GAAM,IAAA;AAAA,kDACR;AAAA,gDACF,CAAA,MAAO;AACL,kDAAA,OAAA,GAAU,IAAA;AACV,kDAAA,GAAA,GAAM,IAAA;AAAA,gDACR;AAAA,8CACF,CAAA,MAAO;AACL,gDAAA,OAAA,GAAU,IAAA;AACV,gDAAA,GAAA,GAAM,IAAA;AAAA,8CACR;AAAA,4CACF,CAAA,MAAO;AACL,8CAAA,OAAA,GAAU,IAAA;AACV,8CAAA,GAAA,GAAM,IAAA;AAAA,4CACR;AAAA,0CACF,CAAA,MAAO;AACL,4CAAA,OAAA,GAAU,IAAA;AACV,4CAAA,GAAA,GAAM,IAAA;AAAA,0CACR;AAAA,wCACF,CAAA,MAAO;AACL,0CAAA,OAAA,GAAU,IAAA;AACV,0CAAA,GAAA,GAAM,IAAA;AAAA,wCACR;AAAA,sCACF;AAAA,oCACF;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AACjB,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC9D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,SAAA,GAAY;AACnB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,SAAA,EAAU;AACpB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,iBAAA,EAAkB;AAAA,YAC9B;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA;AAC1D,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,eAAA,EAAgB;AAC1B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,UAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,wBAC1E,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,SAAA,GAAY,MAAA;AACjB,gBAAA,OAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAChE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,cACtB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,gBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,kBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,WAAA,EAAY;AACtB,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,kBACtC,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,WAAU,WAAA,EAAY;AACtB,oBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,oBACtC,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,IAAI,SAAS,IAAA,CAAK,KAAA,CAAM,MAAA,CAAO,GAAG,CAAC,CAAA,EAAG;AACpC,oBAAA,OAAA,GAAU,KAAA,CAAM,OAAO,GAAG,CAAA;AAC1B,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,OAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,kBACxB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,IAAA,EAAM;AAChB,gBAAA,IAAA,GAAO,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,EAAE,CAAC,CAAA;AAC7B,gBAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,gBAAA,OAAO,IAAA;AAAA,cAAM,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACjD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAAA,WAAU,mBAAA,EAAoB;AAC9B,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,qBAAA,EAAsB;AAChC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,kBAAA,EAAmB;AAC7B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,iBAAA,EAAkB;AAAA,sBAC9B;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,qBAAA,GAAwB;AAC/B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA,CAAE,WAAA,OAAkB,YAAA,EAAc;AACxD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA;AAC9B,cAAA,GAAA,IAAO,EAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,cAAgB,CAAA;AAAA,cAC9B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,gBACvB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,kBACvB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,oBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,oBACxB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,sBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,sBAAA,GAAA,IAAO,CAAA;AAAA,oBACT,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,sBACvB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,oBACxB;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,SAAA,EAAW;AACnB,gBAAA,IAAG,CAAC,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,aAAW,EAAC;AACtC,gBAAA,IAAA,CAAK,UAAA,CAAW,WAAW,CAAA,GAAI,SAAA,CAAU,WAAA,EAAY;AAAA,cAAG,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACjG;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,gBACzB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,IAAA,EAAM;AAC/C,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,kBACtB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,gBACxB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,IAAA,EAAM;AACd,gBAAA,IAAG,CAAC,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,aAAW,EAAC;AACtC,gBAAA,IAAA,CAAK,UAAA,CAAW,MAAM,CAAA,GAAI,IAAA,CAAK,WAAA,EAAY;AAAA,cAAG,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACvF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,SAAA,EAAW;AACpD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,MAAA,EAAQ;AAChB,gBAAA,IAAG,CAAC,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,aAAW,EAAC;AACtC,gBAAA,IAAA,CAAK,UAAA,CAAW,QAAQ,CAAA,GAAI,MAAA;AAAA,cAAQ,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC7E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,cACxB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,GAAA,EAAK;AACb,gBAAA,IAAG,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAO,EAAC;AAC9B,gBAAA,IAAA,CAAK,MAAA,CAAO,KAAK,CAAA,GAAI,GAAA;AAAA,cAAK,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACnE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AACrB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,KAAA,EAAO;AACf,gBAAA,IAAG,CAAC,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,aAAW,EAAC;AACtC,gBAAA,IAAA,CAAK,UAAA,CAAW,OAAO,CAAA,GAAI,KAAA;AAAA,cAAO,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC3E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,IAAA,EAAM;AAC/C,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,cACtB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACR,gBAAA,IAAG,CAAC,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,aAAW,EAAC;AACtC,gBAAA,IAAA,CAAK,UAAA,CAAW,IAAI,CAAA,GAAI,MAAA;AAAA,cAAW,GAAO,CAAA;AAAA,YAChE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ,KAAA,EAAO,KAAA,EAAO;AACtB,gBAAA,IAAG,CAAC,IAAA,CAAK,UAAA,EAAY,IAAA,CAAK,aAAa,EAAC;AACxC,gBAAA,IAAI,OAAO,UAAU,WAAA,EAAY;AAC/B,kBAAA,KAAA,GAAQ,MAAA;AAAA,gBACV,CAAA,MACK;AACH,kBAAA,KAAA,GAAQ,MAAM,CAAC,CAAA;AAAA,gBACjB;AACA,gBAAA,IAAA,CAAK,UAAA,CAAW,KAAA,CAAM,WAAA,EAAa,CAAA,GAAI,KAAA;AAAA,cAAM,GAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAClG;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,eAAA,EAAgB;AAAA,cAC5B;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,KAAA,EAAO;AAAC,gBAAA,OAAO,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAC7E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,eAAA,EAAgB;AAAA,cAC5B;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,MAAA,EAAQ;AAAC,gBAAA,OAAO,MAAA,CAAO,KAAK,EAAE,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAC/E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,sBAAA,EAAuB;AACjC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,aAAA,EAAc;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,sBAAA,GAAyB;AAChC,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,EAAC;AACX,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AACA,gBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,kBAAAA,QAAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ;AACvB,gBAAA,KAAA,GAAQ,KAAA,CAAM,IAAA,CAAK,EAAE,CAAA,CAAE,WAAA,EAAY;AACnC,gBAAA,MAAA,GAAS,MAAA,CAAO,KAAK,EAAE,CAAA;AACvB,gBAAA,IAAG,CAAC,IAAA,CAAK,WAAA,EAAa,IAAA,CAAK,cAAc,EAAC;AAC1C,gBAAA,IAAI,CAAC,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA,EAAG;AAC5B,kBAAA,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA,GAAI,CAAC,MAAM,CAAA;AAAA,gBACnC,CAAA,MAAO;AACL,kBAAA,IAAA,CAAK,WAAA,CAAY,KAAK,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AAAA,gBACrC;AAAA,cAAC,GAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACtD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,aAAA,EAAc;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,aAAA,EAAc;AAAA,kBAC1B;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,aAAA,EAAc;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,aAAA,EAAc;AAAA,gBAC1B;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,sBAAA,GAAyB;AAChC,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,kBAAA,EAAmB;AAAA,YAC/B;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,QAAA,EAAS;AACnB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,QAAA,EAAS;AACnB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,aAAA,EAAc;AACxB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,iBAAA,EAAkB;AAAA,YAC9B;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,eAAA,EAAgB;AAC1B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,iBAAA,EAAkB;AAAA,gBAC9B;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,cAAA,EAAe;AAAA,YAC3B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,IAAA,EAAM;AACjC,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,cACtB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,cAAA,EAAe;AACzB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAAA,WAAU,UAAA,EAAW;AAAA,cACvB;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,aAAA,EAAc;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,aAAA,EAAc;AACxB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,aAAA,EAAc;AACxB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAAA,QAAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AAAA,YACxB;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAAA,QAAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AAAA,YACxB;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,aAAA,EAAc;AACxB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAAA,QAAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAAA,QAAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAAA,QAAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAAA,QAAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAAA,QAAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,WAAA,EAAY;AACtB,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAAA,QAAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAAA,QAAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAAA,QAAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAAA,QAAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAAA,QAAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAAA,QAAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,MAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YACtE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,cAAA,EAAe;AAAA,YAC3B;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,cAAA,EAAe;AACzB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,aAAA,EAAc;AACxB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAA,OAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,0BAAA,OAAA,GAAU,GAAA;AACV,0BAAA,GAAA,EAAA;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,0BACrB;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,8BAAA,OAAA,GAAU,GAAA;AACV,8BAAA,GAAA,EAAA;AAAA,4BACF,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAA0B;AACxB,gCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,8BACrB;AAAA,4BACF;AACA,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gCAAA,OAAA,GAAU,GAAA;AACV,gCAAA,GAAA,EAAA;AAAA,8BACF,CAAA,MAAO;AACL,gCAAA,OAAA,GAAU,IAAA;AACV,gCAA0B;AACxB,kCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gCACrB;AAAA,8BACF;AACA,8BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kCAAA,OAAA,GAAU,GAAA;AACV,kCAAA,GAAA,EAAA;AAAA,gCACF,CAAA,MAAO;AACL,kCAAA,OAAA,GAAU,IAAA;AACV,kCAA0B;AACxB,oCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kCACrB;AAAA,gCACF;AACA,gCAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kCAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oCAAA,OAAA,GAAU,GAAA;AACV,oCAAA,GAAA,EAAA;AAAA,kCACF,CAAA,MAAO;AACL,oCAAA,OAAA,GAAU,IAAA;AACV,oCAA0B;AACxB,sCAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oCACrB;AAAA,kCACF;AAAA,gCACF;AAAA,8BACF;AAAA,4BACF;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AAAA,YACvB;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA;AACjD,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,EAAC;AACX,kBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,oBAAAA,QAAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,kBACxB;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AAAA,gBACZ;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,EAAC;AACX,sBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,wBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,wBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,sBACxB;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AAAA,oBACZ;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,WAAA,GAAc,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC5E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,QAAA,EAAU;AACrC,cAAA,OAAA,GAAU,QAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,KAAA,EAAO;AAClC,cAAA,OAAA,GAAU,KAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,SAAA,EAAW;AACtC,cAAA,OAAA,GAAU,SAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,KAAA,EAAO;AAClC,cAAA,OAAA,GAAU,KAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,QAAA,EAAU;AACrC,cAAA,OAAA,GAAU,QAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,UAAA,EAAY;AACvC,cAAA,OAAA,GAAU,UAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,cAC5B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,WAAA,EAAa;AACxC,cAAA,OAAA,GAAU,WAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,aAAe,CAAA;AAAA,cAC7B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,QAAA,EAAU;AACrC,cAAA,OAAA,GAAU,QAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,OAAA,EAAS;AACpC,cAAA,OAAA,GAAU,OAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,aAAA,EAAc;AACxB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AACrB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,aAAA,EAAc;AACxB,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,YAAA,EAAa;AACvB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,OAAA,GAAU,WAAA,EAAY;AAAA,4BACxB;AAAA,0BACF;AAAA,wBACF;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,MAAA,GAAS,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AACzC,gBAAA,OAAO,IAAA,CAAK,MAAA;AAAA,cAAQ,GAAG,IAAI,CAAA;AAAA,YAC/C;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,QAAA,EAAS;AACnB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,QAAA,EAAS;AACnB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,WAAA,EAAa;AACzB,gBAAA,IAAA,CAAK,WAAA,GAAc,QAAA,CAAS,WAAA,CAAY,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACrF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,QAAA,EAAS;AACnB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,UAAA,EAAW;AAAA,sBACvB;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,cAAA,EAAe;AACzB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,aAAA,EAAc;AACxB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,QAAA,EAAS;AACnB,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,UAAA,EAAW;AAAA,wBACvB;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,IAAA,CAAK,aAAA,GAAgB,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC5E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AAChB,gBAAA,IAAA,GAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC1D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,EAAC;AACX,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AACA,gBAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,kBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAAA,WAAU,WAAA,EAAY;AACtB,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAAA,QAAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACN,gBAAA,IAAI,GAAA,EAAK,MAAA;AACT,gBAAA,MAAA,GAAS,KAAK,YAAA,CAAa,MAAA;AAC3B,gBAAA,KAAK,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,MAAA,EAAQ,GAAA,EAAA,EAAO;AACjC,kBAAA,IAAI,IAAA,CAAK,YAAA,CAAa,GAAG,CAAA,CAAE,WAAW,IAAA,EAAM;AAC1C,oBAAA,IAAA,GAAO,IAAA;AACP,oBAAA;AAAA,kBACF;AAAA,gBACF;AACA,gBAAA,IAAI,SAAS,IAAA,EAAM;AACjB,kBAAA,IAAA,GAAO,IAAA,CAAK,YAAA;AAAA,gBACd,CAAA,MAAO;AACL,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YAChC;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,sBAAA,EAAuB;AACjC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,eAAA,EAAgB;AAAA,YAC5B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACN,gBAAA,IAAI,MAAA;AACJ,gBAAA,IAAG,CAAC,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,eAAe,EAAC;AAC5C,gBAAA,IAAI;AACF,kBAAA,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,KAAK,IAAA,CAAK,YAAA,EAAc,KAAK,MAAM,CAAA;AACpE,kBAAA,OAAO,IAAA,CAAK,GAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,YAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,MAAA;AAAA,gBACd,SAAQ,CAAA,EAAG;AACT,kBAAA,MAAA,GAAS,IAAA;AAAA,gBACX;AACA,gBAAA,IAAA,CAAK,aAAa,IAAA,CAAM;AAAA,kBAAE,WAAA,EAAa,GAAA;AAAA,kBACb,QAAA,EAAUA,OAAAA;AAAA,kBACV,QAAA,EAAU;AAAA,iBACX,CAAA;AAAA,cAAE,GAAG,IAAI,CAAA;AAAA,YAC1D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,kBAAA,EAAmB;AAC7B,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,aAAA,EAAc;AACxB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,SAAA,EAAU;AACpB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,yBAAA,EAA0B;AAAA,YACtC;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,YAAA,EAAc;AACpB,gBAAA,IAAI,OAAO,iBAAiB,QAAA,EAAU;AAClC,kBAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AAAA,gBACxB,CAAA,MAAO;AACH,kBAAA,IAAA,CAAK,eAAe,YAAA,CAAa,CAAC,EAAE,MAAA,CAAO,SAAS,KAAK,GAAA,EAAK;AAC1D,oBAAA,OAAO,GAAA,GAAM,GAAA,CAAI,CAAC,CAAA,GAAI,IAAI,CAAC,CAAA;AAAA,kBAC/B,CAAA,EAAG,YAAA,CAAa,CAAC,CAAC,CAAA;AAAA,gBACtB;AAAA,cAAC,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACzC;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,cAChC;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,GAAA,EAAK;AAC9C,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,CAAA,EAAG;AACT,gBAAA,IAAG,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,EAAC;AAChC,gBAAA,IAAA,CAAK,MAAA,CAAO,GAAG,CAAA,GAAI,CAAA;AAAA,cAAG,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACjE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,SAAA,EAAW;AACpD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,OAAA,EAAS;AACf,gBAAA,IAAG,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,EAAC;AAChC,gBAAA,IAAA,CAAK,MAAA,CAAO,SAAS,CAAA,GAAI,OAAA;AAAA,cAAS,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC7E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,cACxB;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,aAAA,EAAe;AACrB,gBAAA,OAAO,QAAA,CAAS,aAAA,CAAc,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACjF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,cAAA,OAAA,GAAU,GAAA;AACV,cAAA,GAAA,EAAA;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,cACrB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,oBAC/C,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACN,gBAAA,OAAO,UAAA,CAAW,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAC,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAChF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,eAAA,EAAgB;AAC1B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ,KAAA,EAAO,KAAA,EAAO;AACpB,gBAAA,IAAG,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,EAAC;AAChC,gBAAA,IAAI,OAAO,UAAU,WAAA,EAAY;AAC/B,kBAAA,KAAA,GAAQ,MAAA;AAAA,gBACV,CAAA,MACK;AACH,kBAAA,KAAA,GAAQ,MAAM,CAAC,CAAA;AAAA,gBACjB;AACA,gBAAA,IAAA,CAAK,MAAA,CAAO,KAAA,CAAM,WAAA,EAAa,CAAA,GAAI,KAAA;AAAA,cAAM,GAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAChG;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AACrB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,cAChC;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,yBAAA,GAA4B;AACnC,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,SAAA,EAAW;AACpD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,gBAC3B;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,kBACxB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,oBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,oBACzB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,kBACxB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,YAChC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,UAAA,EAAY;AACrD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,cAC5B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,UAAA,EAAY;AACrD,kBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,kBAC5B;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,UAAA,EAAY;AACrD,oBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,oBAC5B;AAAA,kBACF;AACA,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAAA,WAAU,WAAA,EAAY;AAAA,kBACxB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,sBAAA,GAAyB;AAChC,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,cACxB;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,MAAA,EAAQ;AACd,gBAAA,IAAA,GAAO,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAC1E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,OAAAA,EAAQ;AACN,gBAAA,IAAA,GAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YACpE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA;AACjD,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,eAAA,EAAgB;AAC1B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,EAAC;AACX,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AACA,kBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,oBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sBAC7B,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,oBAAA,EAAqB;AAAA,YACjC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,cACxB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,gBACzB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,kBACzB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,oBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,oBACzB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA,CAAE,WAAA,OAAkB,aAAA,EAAe;AACzD,sBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA;AAC9B,sBAAA,GAAA,IAAO,EAAA;AAAA,oBACT,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,eAAiB,CAAA;AAAA,sBAC/B;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,qBAAA,EAAsB;AAAA,oBAClC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,SAAA,EAAW;AACpD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,WAAA,EAAa;AACtD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,aAAe,CAAA;AAAA,gBAC7B;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,qBAAA,EAAsB;AAAA,cAClC;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,qBAAA,GAAwB;AAC/B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,aAAA,EAAc;AAAA,YAC1B;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,IAAA,EAAM;AAC/C,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,MAAQ,CAAA;AAAA,cACtB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,qBAAA,EAAsB;AAChC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AAAA,YACxB;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,aAAA,EAAc;AACxB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,YAChC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,cACxB;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,UAAA,EAAY;AACxB,gBAAA,IAAA,CAAK,KAAA,GAAM,QAAA,CAAS,UAAA,CAAW,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAC5E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,OAAA,EAAS;AAAC,gBAAA,IAAA,GAAO,OAAA;AAAA,cAAS,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACxE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,UAAA,EAAY;AACnB,gBAAA,IAAA,CAAK,KAAA,GAAQ,UAAA,CAAW,IAAA,CAAK,EAAE,EAAE,WAAA,EAAY;AAAA,cAAG,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC1F;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAAA,QAAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,kBAAAA,QAAAA,GAAU,GAAA;AACV,kBAAA,GAAA,EAAA;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,kBACrB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,sBAAA,EAAuB;AACjC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,eAAA,EAAgB;AAAA,YAC5B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACd,gBAAA,IAAI,MAAM,IAAA,CAAK,GAAA;AACf,gBAAA,IAAI;AACF,kBAAA,IAAA,GAAO,IAAI,cAAA,CAAe,IAAA,CAAK,KAAK,IAAA,CAAK,YAAA,EAAc,KAAK,MAAM,CAAA;AAClE,kBAAA,IAAI,GAAA,EAAK;AAAC,oBAAA,IAAA,CAAK,QAAA,CAAS,OAAM,GAAG,CAAA;AAAA,kBAAC;AAAA,gBACpC,SAAQ,CAAA,EAAG;AACT,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YACxB;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,YAChC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,GAAA,EAAK;AAAC,gBAAA,IAAA,CAAK,GAAA,GAAM,GAAA;AAAA,cAAK,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACvE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,OAAO,YAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,cACxB;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AAAA,YACZ;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,QAAA,EAAU;AACtB,gBAAA,IAAA,GAAO,QAAA,CAAS,QAAA,CAAS,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACtE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,WAAA,EAAa;AAAC,gBAAA,IAAA,GAAO,WAAA;AAAA,cAAa,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAChF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,sBAAA,GAAyB;AAChC,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA;AAC1D,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,kBAAA,EAAmB;AAC7B,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,kBAAA,EAAmB;AAAA,YAC/B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,aAAA,EAAc;AACxB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,EAAC;AACX,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sBAC7B,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AACA,oBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,sBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,sBAAA,IAAA,GAAO,GAAA;AACP,sBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,wBAC7B,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACR,gBAAA,IAAI;AACF,kBAAA,IAAA,GAAO,IAAI,cAAA,CAAe,IAAA,CAAK,KAAK,IAAA,CAAK,YAAA,EAAc,KAAK,MAAM,CAAA;AAAA,gBACpE,SAAQ,CAAA,EAAG;AACT,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YAC9B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,wBAAA,GAA2B;AAClC,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA;AACjD,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,EAAC;AACX,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AACA,kBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,oBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sBAC7B,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,qBAAA,EAAsB;AAAA,YAClC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,qBAAA,GAAwB;AAC/B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA;AACjD,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,EAAC;AACX,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AACA,kBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,oBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sBAC7B,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,mBAAA,EAAoB;AAAA,gBAChC;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,gBAAA,EAAiB;AAAA,wBAC7B;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,yBAAA,EAA0B;AACpC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,KAAA,EAAO;AAAE,gBAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,cAAO,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAC3E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA;AAC1D,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,EAAC;AACX,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,OAAA,GAAU,QAAA,EAAS;AACnB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,EAAC;AACX,sBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,wBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,wBAAA,OAAA,GAAU,QAAA,EAAS;AAAA,sBACrB;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AAAA,oBACZ;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sBAC7B,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AACA,oBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,sBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,sBAAA,IAAA,GAAO,GAAA;AACP,sBAAA,OAAA,GAAU,QAAA,EAAS;AACnB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,EAAC;AACX,wBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,0BAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,0BAAA,OAAA,GAAU,QAAA,EAAS;AAAA,wBACrB;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AAAA,sBACZ;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,SAAA,EAAU;AACpB,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,wBAC7B,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAO,CAAA;AAAA,sBACjE,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,SAAA,GAAY;AACnB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,cAAA,EAAe;AAAA,YAC3B;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,yBAAA,EAA0B;AACpC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,KAAA,EAAO;AAAE,gBAAA,IAAA,CAAK,KAAA,GAAM,KAAA;AAAA,cAAO,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACzE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,yBAAA,EAA0B;AACpC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,MAAA,EAAQ;AAAE,gBAAA,IAAA,CAAK,MAAA,GAAO,MAAA;AAAA,cAAQ,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC/E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,kBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,kBACxB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAAA,CAAW,SAASC,OAAAA,EAAQ;AAAE,oBAAA,IAAA,CAAK,KAAA,GAAM,IAAA;AAAA,kBAAM,GAAO,CAAA;AAAA,gBACxD;AACA,gBAAA,IAAID,aAAY,IAAA,EAAM;AACpB,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,oBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,oBACzB;AAAA,kBACF;AACA,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAAA,CAAW,SAASC,OAAAA,EAAQ;AAAE,sBAAA,IAAA,CAAK,KAAA,GAAM,KAAA;AAAA,oBAAO,GAAO,CAAA;AAAA,kBACzD;AACA,kBAAA,IAAID,aAAY,IAAA,EAAM;AACpB,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,WAAA,EAAa;AACtD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,aAAe,CAAA;AAAA,cAC7B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,kBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,kBACvB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,UAAA,EAAY;AACrD,oBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,oBAC5B;AAAA,kBACF;AACA,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAAA,WAAU,WAAA,EAAY;AAAA,kBACxB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,SAAA,EAAW;AACnB,gBAAA,IAAA,CAAK,SAAA,GAAU,UAAU,WAAA,EAAY;AAAA,cAAG,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACjF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA;AAC1D,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,EAAC;AACX,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,sBAAA,OAAA,GAAU,GAAA;AACV,sBAAA,GAAA,EAAA;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,sBACrB;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sBAC7B,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AACA,oBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,sBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,sBAAA,IAAA,GAAO,GAAA;AACP,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,wBAC7B,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,UAAA,EAAY;AACrD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,cAC5B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,gBACxB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,cACxB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,SAAA,EAAW;AACjB,gBAAA,IAAA,CAAK,GAAA,KAAQ,IAAA,CAAK,GAAA,GAAI,EAAC,CAAA;AACvB,gBAAA,IAAA,CAAK,GAAA,CAAI,IAAA,CAAK,SAAA,CAAU,WAAA,EAAa,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAChF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,IAAI,GAAA,EAAK,MAAA;AACT,gBAAA,MAAA,GAAS,KAAK,YAAA,CAAa,MAAA;AAC3B,gBAAA,KAAK,GAAA,GAAM,CAAA,EAAG,GAAA,GAAM,MAAA,EAAQ,GAAA,EAAA,EAAO;AACjC,kBAAA,IAAI,IAAA,CAAK,YAAA,CAAa,GAAG,CAAA,CAAE,WAAW,IAAA,EAAM;AAC1C,oBAAA,IAAA,GAAO,IAAA;AACP,oBAAA;AAAA,kBACF;AAAA,gBACF;AACA,gBAAA,IAAI,SAAS,IAAA,EAAM;AACjB,kBAAA,IAAA,GAAO,IAAA,CAAK,YAAA;AAAA,gBACd,CAAA,MAAO;AACL,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YAC1B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,IAAI,MAAA;AACJ,gBAAA,IAAG,CAAC,IAAA,CAAK,YAAA,EAAc,IAAA,CAAK,eAAe,EAAC;AAC5C,gBAAA,IAAI;AACF,kBAAA,MAAA,GAAS,IAAI,cAAA,CAAe,IAAA,CAAK,KAAK,IAAA,CAAK,YAAA,EAAc,KAAK,MAAM,CAAA;AACpE,kBAAA,OAAO,IAAA,CAAK,GAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,YAAA;AACZ,kBAAA,OAAO,IAAA,CAAK,MAAA;AAAA,gBACd,SAAQ,CAAA,EAAG;AACT,kBAAA,MAAA,GAAS,IAAA;AAAA,gBACX;AACA,gBAAA,IAAA,CAAK,aAAa,IAAA,CAAM;AAAA,kBAAE,WAAA,EAAa,GAAA;AAAA,kBACb,QAAA,EAAUA,OAAAA;AAAA,kBACV,QAAA,EAAU;AAAA,iBACX,CAAA;AAAA,cAAE,GAAG,IAAI,CAAA;AAAA,YACpD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AAAA,YACxB;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,kBAAA,EAAmB;AAC7B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,kBAAA,EAAmB;AAC7B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,QAAA,EAAU;AACtB,gBAAA,IAAA,CAAK,QAAA,GAAW,SAAS,WAAA,EAAY;AACrC,gBAAA,IAAI,CAAC,IAAA,CAAK,MAAA,EAAQ,IAAA,CAAK,SAAS,EAAC;AACjC,gBAAA,IAAI,IAAA,CAAK,OAAO,IAAA,IAAQ,IAAA,CAAK,OAAO,IAAA,CAAK,CAAC,MAAM,GAAA,EAAK;AACnD,kBAAA,IAAI,IAAA,GAAO,KAAK,MAAA,CAAO,IAAA;AACvB,kBAAA,IAAA,CAAK,OAAO,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,IAAA,CAAK,SAAO,CAAC,CAAA;AAC3C,kBAAA,OAAO,KAAK,MAAA,CAAO,IAAA;AAAA,gBACrB;AAAA,cACF,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACnC;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,kBAAA,EAAmB;AAC7B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,YAChC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,EAAC;AACX,kBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,oBAAAA,QAAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,kBACxB;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AAAA,gBACZ;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,KAAA,EAAO;AACnB,gBAAA,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cACtC,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACnC;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,wBAAA,GAA2B;AAClC,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,SAAA,EAAW;AACpD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,gBAC3B;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA,CAAE,WAAA,OAAkB,YAAA,EAAc;AACxD,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA;AAC9B,kBAAA,GAAA,IAAO,EAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,cAAgB,CAAA;AAAA,kBAC9B;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,gBACxB;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACN,gBAAA,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YAC1E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,wBAAA,EAAyB;AACnC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,MAAA,EAAQ;AACd,gBAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,cAAQ,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACpG;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,SAAA,EAAW;AACpD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,gBAC3B;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAD,WAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,kBACtC,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,OAAA,EAAS;AACf,kBAAA,IAAI,OAAO,OAAA,KAAY,WAAA,EAAa,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,gBAAS,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,cACvG;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA,CAAE,WAAA,OAAkB,aAAA,EAAe;AACzD,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA;AAC9B,kBAAA,GAAA,IAAO,EAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,eAAiB,CAAA;AAAA,kBAC/B;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAD,WAAU,mBAAA,EAAoB;AAC9B,oBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,oBACtC,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,WAAA,EAAa;AACnB,oBAAA,IAAI,OAAO,WAAA,KAAgB,WAAA,EAAa,IAAA,CAAK,WAAA,GAAc,WAAA;AAAA,kBAAa,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,gBACnH;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,gBAChC;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,wBAAA,GAA2B;AAClC,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA,CAAE,WAAA,OAAkB,aAAA,EAAe;AACzD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA;AAC9B,cAAA,GAAA,IAAO,EAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,eAAiB,CAAA;AAAA,cAC/B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,WAAA,EAAa;AACtD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,aAAe,CAAA;AAAA,gBAC7B;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,UAAA,EAAY;AACrD,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,kBAC5B;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,SAAA,EAAW;AACpD,oBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,WAAa,CAAA;AAAA,oBAC3B;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,sBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,sBAAA,GAAA,IAAO,CAAA;AAAA,oBACT,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAA0B;AACxB,wBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,sBAC1B;AAAA,oBACF;AACA,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA,CAAE,WAAA,OAAkB,YAAA,EAAc;AACxD,wBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,EAAE,CAAA;AAC9B,wBAAA,GAAA,IAAO,EAAA;AAAA,sBACT,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,cAAgB,CAAA;AAAA,wBAC9B;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,WAAA,EAAa;AACtD,0BAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,0BAAA,GAAA,IAAO,CAAA;AAAA,wBACT,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAA0B;AACxB,4BAAA,WAAA,CAAY,aAAe,CAAA;AAAA,0BAC7B;AAAA,wBACF;AACA,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,OAAA,GAAU,WAAA,EAAY;AAAA,wBACxB;AAAA,sBACF;AAAA,oBACF;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,QAAA,GAAW;AAClB,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,sBAAA,EAAuB;AACjC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,eAAA,EAAgB;AAAA,YAC5B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,cAAA,EAAe;AACzB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AAChB,gBAAA,IAAI,MAAM,IAAA,CAAK,GAAA;AACf,gBAAA,IAAI;AACF,kBAAA,IAAA,GAAO,IAAI,cAAA,CAAe,IAAA,CAAK,KAAK,IAAA,CAAK,YAAA,EAAc,KAAK,MAAM,CAAA;AAClE,kBAAA,IAAI,GAAA,EAAK;AAAC,oBAAA,IAAA,CAAK,QAAA,CAAS,OAAM,GAAG,CAAA;AAAA,kBAAC;AAAA,gBACpC,SAAQ,CAAA,EAAG;AACT,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YACtB;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,YAChC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,SAAA,GAAY;AACnB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,WAAA,EAAY;AACtB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA;AACjD,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,SAAA,EAAU;AACpB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,aAAA,EAAc;AACxB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,EAAC;AACX,kBAAA,IAAA,GAAO,GAAA;AACP,kBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,oBAC7B,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AACA,kBAAA,OAAO,YAAY,IAAA,EAAM;AACvB,oBAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,oBAAA,IAAA,GAAO,GAAA;AACP,oBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,sBAC7B,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,aAAA,EAAc;AACxB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,kBAAA,EAAmB;AAC7B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,oBAChC;AAAA,kBACF;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,SAAA,EAAU;AACpB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,aAAA,EAAe;AACvB,gBAAA,IAAA,CAAK,GAAA,GAAM,aAAA;AAAA,cAAe,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACnE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,SAAA,EAAW;AACnB,gBAAA,IAAA,CAAK,KAAA,GAAQ,SAAA;AAAA,cAAW,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACjE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,UAAA,EAAY;AACrD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,cAC5B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,iBAAA,EAAkB;AAC5B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAAA,WAAU,iBAAA,EAAkB;AAAA,gBAC9B;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,YAAA,EAAc;AACtB,gBAAA,IAAA,CAAK,QAAA,GAAW,YAAA;AAAA,cAAc,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACvE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,QAAA,EAAU;AACnD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,UAAA,EAAY;AACpB,gBAAA,IAAA,CAAK,MAAA,GAAS,UAAA;AAAA,cAAY,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACnE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,OAAA,EAAS;AAClD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,KAAA,EAAO;AACf,gBAAA,IAAA,CAAK,KAAA,GAAQ,QAAA,CAAS,KAAA,CAAM,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YAC7E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AAAA,YACxB;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,YAAA,EAAc;AACtB,gBAAA,IAAA,CAAK,QAAA,GAAW,YAAA;AAAA,cAAc,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACpE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,eAAA,GAAkB;AACzB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,cACvB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,gBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,gBAAA,GAAA,IAAO,CAAA;AAAA,cACT,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,gBACvB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,kBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,kBACvB;AAAA,gBACF;AACA,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,MAAA,EAAQ;AACjD,oBAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,QAAU,CAAA;AAAA,oBACxB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AAAA,kBACxB;AAAA,gBACF;AAAA,cACF;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,SAAQ,aAAA,EAAe;AACvB,gBAAA,IAAA,CAAK,SAAA,GAAY,aAAA;AAAA,cAAe,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACtE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,cAAA,EAAe;AACzB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,cAAA,EAAe;AACzB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,cAAA,EAAe;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACR,gBAAA,IAAA,CAAK,IAAA,GAAO,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YACvE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA,EAAS,OAAA,EAASD,QAAAA,EAAS,OAAA,EAAS,OAAA;AACxC,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,kBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,WAAA,EAAY;AACtB,oBAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAO,CAAA;AAAA,oBACxD,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,gBAAA,EAAkB;AAC1B,gBAAA,IAAA,CAAK,IAAA,GAAO,QAAA,CAAS,gBAAA,CAAiB,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACvF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,SAAA,GAAY;AACnB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAAA,QAAAA,GAAUA,QAAAA,KAAY,IAAA,GAAOA,QAAAA,GAAU,EAAA;AACvC,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,GAAA,EAAK;AACb,gBAAA,OAAO,QAAA,CAAS,GAAA,CAAI,IAAA,CAAK,EAAE,CAAC,CAAA;AAAA,cAAG,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACrE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,sBAAA,GAAyB;AAChC,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,qBAAA,GAAwB;AAC/B,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,iBAAA,EAAkB;AAC5B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,iBAAA,GAAoB;AAC3B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,OAAA,EAAS;AAAE,gBAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAAA,cAAS,CAAA,EAAG,MAAM,OAAO,CAAA;AAAA,YACjF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,YAChC;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,mBAAA,GAAsB;AAC7B,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,WAAA,EAAa;AACtD,cAAA,OAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,aAAe,CAAA;AAAA,cAC7B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,kBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,kBAAA,GAAA,IAAO,CAAA;AAAA,gBACT,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAA0B;AACxB,oBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,kBACvB;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,MAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA,CAAE,WAAA,OAAkB,KAAA,EAAO;AAChD,oBAAAA,QAAAA,GAAU,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAC7B,oBAAA,GAAA,IAAO,CAAA;AAAA,kBACT,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,OAAS,CAAA;AAAA,oBACvB;AAAA,kBACF;AAAA,gBACF;AACA,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,mBAAA,EAAqB;AAAE,gBAAA,IAAA,CAAK,SAAA,GAAY,oBAAoB,WAAA,EAAY;AAAA,cAAG,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC5H;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,sBAAA,GAAyB;AAChC,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,kBAAA,EAAmB;AAC7B,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,SAAA,EAAU;AAAA,cACtB;AAAA,YACF;AACA,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,eAAA,EAAgB;AAC1B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,SAAA,EAAU;AAAA,gBACtB;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,kBAAA,GAAqB;AAC5B,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,OAAA,GAAU,EAAC;AACX,YAAA,OAAA,GAAU,WAAA,EAAY;AACtB,YAAA,OAAO,YAAY,IAAA,EAAM;AACvB,cAAA,OAAA,CAAQ,KAAK,OAAO,CAAA;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AAAA,YACxB;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,OAAA,EAAS;AACpC,cAAA,OAAA,GAAU,OAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,SAAW,CAAA;AAAA,cACzB;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AACrB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,SAAS,OAAA,EAAS,OAAA;AAC5E,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,oBAAA,OAAA,GAAU,GAAA;AACV,oBAAA,GAAA,EAAA;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAA0B;AACxB,sBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,oBACrB;AAAA,kBACF;AACA,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,oBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,sBAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,wBAAA,OAAA,GAAU,GAAA;AACV,wBAAA,GAAA,EAAA;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAA0B;AACxB,0BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,wBACrB;AAAA,sBACF;AACA,sBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,wBAAA,OAAA,GAAU,UAAA,EAAW;AACrB,wBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,0BAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,4BAAA,OAAA,GAAU,GAAA;AACV,4BAAA,GAAA,EAAA;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAA0B;AACxB,8BAAA,WAAA,CAAY,KAAO,CAAA;AAAA,4BACrB;AAAA,0BACF;AACA,0BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,4BAAA,OAAA,GAAU,WAAA,EAAY;AACtB,4BAAA,IAAI,YAAY,IAAA,EAAM;AACpB,8BAAA,OAAA,GAAU,CAAC,SAAS,OAAA,EAASA,QAAAA,EAAS,SAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAA,EAAS,OAAO,CAAA;AAAA,4BAC5F,CAAA,MAAO;AACL,8BAAA,OAAA,GAAU,IAAA;AACV,8BAAA,GAAA,GAAM,IAAA;AAAA,4BACR;AAAA,0BACF,CAAA,MAAO;AACL,4BAAA,OAAA,GAAU,IAAA;AACV,4BAAA,GAAA,GAAM,IAAA;AAAA,0BACR;AAAA,wBACF,CAAA,MAAO;AACL,0BAAA,OAAA,GAAU,IAAA;AACV,0BAAA,GAAA,GAAM,IAAA;AAAA,wBACR;AAAA,sBACF,CAAA,MAAO;AACL,wBAAA,OAAA,GAAU,IAAA;AACV,wBAAA,GAAA,GAAM,IAAA;AAAA,sBACR;AAAA,oBACF,CAAA,MAAO;AACL,sBAAA,OAAA,GAAU,IAAA;AACV,sBAAA,GAAA,GAAM,IAAA;AAAA,oBACR;AAAA,kBACF,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,IAAA,EAAM;AAClB,gBAAA,IAAA,GAAO,KAAA,CAAM,SAAA,CAAU,GAAA,GAAI,CAAA,EAAGA,OAAM,CAAA;AAAA,cAAG,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC5E;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,YAAA,EAAa;AACvB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,YAAA,EAAa;AACvB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,YAAA,EAAa;AACvB,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC/C,CAAA,MAAO;AACL,oBAAA,OAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,UAAA,GAAa;AACpB,YAAA,IAAI,OAAA,EAAS,OAAA;AACb,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AACrB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,WAAA,GAAc;AACrB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,UAAA,EAAW;AACrB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA,EAAS,SAASA,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,sBAAA,EAAuB;AACjC,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,eAAA,EAAgB;AAAA,YAC5B;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAC9B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACd,gBAAA,IAAI;AACF,kBAAA,IAAA,GAAO,IAAI,cAAA,CAAe,IAAA,CAAK,KAAK,IAAA,CAAK,YAAA,EAAc,KAAK,MAAM,CAAA;AAAA,gBACpE,SAAQ,CAAA,EAAG;AACT,kBAAA,IAAA,GAAO,EAAA;AAAA,gBACT;AAAA,cAAC,GAAO,CAAA;AAAA,YACxB;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,OAAA,EAAS,SAASD,QAAAA,EAAS,OAAA;AAC/B,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,aAAA,EAAc;AACxB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,EAAC;AACX,cAAA,IAAA,GAAO,GAAA;AACP,cAAAA,WAAU,UAAA,EAAW;AACrB,cAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAAA,QAAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAOA,aAAY,IAAA,EAAM;AACvB,gBAAA,OAAA,CAAQ,KAAKA,QAAO,CAAA;AACpB,gBAAA,IAAA,GAAO,GAAA;AACP,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,oBAAA,EAAqB;AAC/B,kBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,oBAAAA,QAAAA,GAAU,CAACA,QAAAA,EAAS,OAAO,CAAA;AAAA,kBAC7B,CAAA,MAAO;AACL,oBAAAA,QAAAA,GAAU,IAAA;AACV,oBAAA,GAAA,GAAM,IAAA;AAAA,kBACR;AAAA,gBACF,CAAA,MAAO;AACL,kBAAAA,QAAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,aAAA,GAAgB;AACvB,YAAA,IAAI,SAAS,OAAA,EAASA,QAAAA;AACtB,YAAA,IAAI,MAAM,IAAA,EAAM,IAAA;AAChB,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,OAAA,GAAU,UAAA,EAAW;AACrB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,IAAA,GAAO,GAAA;AACP,cAAA,IAAI,KAAA,CAAM,UAAA,CAAW,GAAG,CAAA,KAAM,EAAA,EAAI;AAChC,gBAAA,OAAA,GAAU,GAAA;AACV,gBAAA,GAAA,EAAA;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAA0B;AACxB,kBAAA,WAAA,CAAY,KAAO,CAAA;AAAA,gBACrB;AAAA,cACF;AACA,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,UAAA,EAAW;AACrB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,SAASA,QAAO,CAAA;AAAA,gBAC7B,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AACA,cAAA,OAAA,GAAU,OAAA,KAAY,OAAO,OAAA,GAAU,EAAA;AACvC,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,CAAC,SAAS,OAAO,CAAA;AAAA,cAC7B,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,OAAAA,EAAQ;AACZ,gBAAA,IAAA,CAAK,OAAA,GAAU,KAAA,CAAM,SAAA,CAAU,GAAA,EAAKA,OAAM,CAAA;AAAA,cAAG,GAAG,IAAI,CAAA;AAAA,YACtE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAC9B,YAAA,IAAI,OAAA;AACJ,YAAA,OAAA,GAAU,YAAA,EAAa;AACvB,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,cAAA,EAAe;AACzB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAA,OAAA,GAAU,gBAAA,EAAiB;AAC3B,gBAAA,IAAI,YAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,mBAAA,EAAoB;AAAA,gBAChC;AAAA,cACF;AAAA,YACF;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,YAAA,GAAe;AACtB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,QAAA,EAAU;AACrC,cAAA,OAAA,GAAU,QAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,UAAY,CAAA;AAAA,cAC1B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,MAAA,EAAQ;AAClB,gBAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,cAAQ,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YAC7D;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,cAAA,GAAiB;AACxB,YAAA,IAAI,SAAS,OAAA,EAASD,QAAAA;AACtB,YAAA,IAAI,IAAA,EAAM,IAAA;AACV,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,CAAC,MAAM,UAAA,EAAY;AACvC,cAAA,OAAA,GAAU,UAAA;AACV,cAAA,GAAA,IAAO,CAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,YAAc,CAAA;AAAA,cAC5B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAU,WAAA,EAAY;AACtB,cAAA,IAAI,YAAY,IAAA,EAAM;AACpB,gBAAAA,WAAU,WAAA,EAAY;AACtB,gBAAA,IAAIA,aAAY,IAAA,EAAM;AACpB,kBAAA,OAAA,GAAU,CAAC,OAAA,EAAS,OAAA,EAASA,QAAO,CAAA;AAAA,gBACtC,CAAA,MAAO;AACL,kBAAA,OAAA,GAAU,IAAA;AACV,kBAAA,GAAA,GAAM,IAAA;AAAA,gBACR;AAAA,cACF,CAAA,MAAO;AACL,gBAAA,OAAA,GAAU,IAAA;AACV,gBAAA,GAAA,GAAM,IAAA;AAAA,cACR;AAAA,YACF,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASC,SAAQ,QAAA,EAAU;AACpB,gBAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAAA,cAAU,CAAA,EAAG,IAAA,EAAM,OAAA,CAAQ,CAAC,CAAC,CAAA;AAAA,YACjE;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAA,GAAmB;AAC1B,YAAA,IAAI,OAAA;AACJ,YAAA,IAAI,IAAA;AACJ,YAAA,IAAA,GAAO,GAAA;AACP,YAAA,IAAI,KAAA,CAAM,MAAA,CAAO,GAAA,EAAK,EAAE,MAAM,YAAA,EAAc;AAC1C,cAAA,OAAA,GAAU,YAAA;AACV,cAAA,GAAA,IAAO,EAAA;AAAA,YACT,CAAA,MAAO;AACL,cAAA,OAAA,GAAU,IAAA;AACV,cAA0B;AACxB,gBAAA,WAAA,CAAY,cAAgB,CAAA;AAAA,cAC9B;AAAA,YACF;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,OAAA,GAAA,CAAW,SAASA,OAAAA,EAAQ;AACV,gBAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAAA,cAAM,GAAO,CAAA;AAAA,YACnD;AACA,YAAA,IAAI,YAAY,IAAA,EAAM;AACpB,cAAA,GAAA,GAAM,IAAA;AAAA,YACR;AACA,YAAA,OAAO,OAAA;AAAA,UACT;AACA,UAAA,SAAS,gBAAgB,QAAA,EAAU;AACjC,YAAA,QAAA,CAAS,IAAA,EAAK;AACd,YAAA,IAAI,YAAA,GAAe,IAAA;AACnB,YAAA,IAAI,gBAAgB,EAAC;AACrB,YAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,QAAQ,CAAA,EAAA,EAAK;AACxC,cAAA,IAAI,QAAA,CAAS,CAAC,CAAA,KAAM,YAAA,EAAc;AAChC,gBAAA,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,CAAC,CAAC,CAAA;AAC9B,gBAAA,YAAA,GAAe,SAAS,CAAC,CAAA;AAAA,cAC3B;AAAA,YACF;AACA,YAAA,OAAO,aAAA;AAAA,UACT;AACA,UAAA,SAAS,oBAAA,GAAuB;AAO9B,YAAA,IAAI,IAAA,GAAO,CAAA;AACX,YAAA,IAAI,MAAA,GAAS,CAAA;AACb,YAAA,IAAI,MAAA,GAAS,KAAA;AACb,YAAA,KAAA,IAAS,CAAA,GAAI,GAAG,CAAA,GAAI,IAAA,CAAK,IAAI,GAAA,EAAK,oBAAoB,GAAG,CAAA,EAAA,EAAK;AAC5D,cAAA,IAAI,EAAA,GAAK,KAAA,CAAM,MAAA,CAAO,CAAC,CAAA;AACvB,cAAA,IAAI,OAAO,IAAA,EAAM;AACf,gBAAA,IAAI,CAAC,MAAA,EAAQ;AAAE,kBAAA,IAAA,EAAA;AAAA,gBAAQ;AACvB,gBAAA,MAAA,GAAS,CAAA;AACT,gBAAA,MAAA,GAAS,KAAA;AAAA,cACX,WAAW,EAAA,KAAO,IAAA,IAAQ,EAAA,KAAO,QAAA,IAAY,OAAO,QAAA,EAAU;AAC5D,gBAAA,IAAA,EAAA;AACA,gBAAA,MAAA,GAAS,CAAA;AACT,gBAAA,MAAA,GAAS,IAAA;AAAA,cACX,CAAA,MAAO;AACL,gBAAA,MAAA,EAAA;AACA,gBAAA,MAAA,GAAS,KAAA;AAAA,cACX;AAAA,YACF;AACA,YAAA,OAAO,EAAE,MAAY,MAAA,EAAe;AAAA,UACtC;AACE,UAAA,IAAI,GAAA,GAAM,WAAA,EAAA;AACV,UAAA,IAAI,cAAA,GAAiB,sBAAA,EAAA;AACrB,UAAA,IAAI,OAAO,EAAC;AACd,UAAA,IAAIC,OAAAA,GAAS,cAAA,CAAe,SAAS,CAAA,EAAE;AAyBvC,UAAA,IAAIA,OAAAA,KAAW,IAAA,IAAQ,GAAA,KAAQ,KAAA,CAAM,MAAA,EAAQ;AAC3C,YAAA,IAAI,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,GAAA,EAAK,oBAAoB,CAAA;AAC/C,YAAA,IAAI,QAAQ,MAAA,GAAS,KAAA,CAAM,SAAS,KAAA,CAAM,MAAA,CAAO,MAAM,CAAA,GAAI,IAAA;AAC3D,YAAA,IAAI,gBAAgB,oBAAA,EAAqB;AACzC,YAAA,IAAI,IAAA,CAAK,WAAA;AAAA,cACP,gBAAgB,yBAAyB,CAAA;AAAA,cACzC,KAAA;AAAA,cACA,MAAA;AAAA,cACA,aAAA,CAAc,IAAA;AAAA,cACd,aAAA,CAAc;AAAA,aAChB;AACA,YAAA,OAAO,EAAA;AAAA,UACT;AACA,UAAA,OAAO,IAAA;AAAA,QACT,CAAA;AAAA;AAAA,QAEA,UAAU,WAAW;AAAE,UAAA,OAAO,IAAA,CAAK,OAAA;AAAA,QAAS;AAAA,OAC9C;AAEA,MAAA,MAAA,CAAO,cAAc,SAAS,QAAA,EAAU,KAAA,EAAO,MAAA,EAAQ,MAAM,MAAA,EAAQ;AACnE,QAAA,SAAS,YAAA,CAAaC,WAAUC,MAAAA,EAAO;AACrC,UAAA,IAAI,iBAAA,EAAmB,cAAA;AACvB,UAAA,QAAQD,UAAS,MAAA;AAAQ,YACvB,KAAK,CAAA;AACH,cAAA,iBAAA,GAAoB,cAAA;AACpB,cAAA;AAAA,YACF,KAAK,CAAA;AACH,cAAA,iBAAA,GAAoBA,UAAS,CAAC,CAAA;AAC9B,cAAA;AAAA,YACF;AACE,cAAA,iBAAA,GAAoBA,SAAAA,CAAS,KAAA,CAAM,CAAA,EAAGA,SAAAA,CAAS,SAAS,CAAC,CAAA,CAAE,IAAA,CAAK,IAAI,CAAA,GAChE,MAAA,GACAA,SAAAA,CAASA,SAAAA,CAAS,SAAS,CAAC,CAAA;AAAA;AAEpC,UAAA,cAAA,GAAiBC,MAAAA,GAAQ,KAAA,CAAMA,MAAK,CAAA,GAAI,cAAA;AACxC,UAAA,OAAO,WAAA,GAAc,iBAAA,GAAoB,OAAA,GAAU,cAAA,GAAiB,SAAA;AAAA,QACtE;AACA,QAAA,IAAA,CAAK,IAAA,GAAO,aAAA;AACZ,QAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,OAAA,GAAU,YAAA,CAAa,QAAA,EAAU,KAAK,CAAA;AAC3C,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAAA,MAChB,CAAA;AACA,MAAA,MAAA,CAAO,WAAA,CAAY,YAAY,KAAA,CAAM,SAAA;AACrC,MAAA,OAAO,MAAA;AAAA,IACT,CAAA,GAAG;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACp/XH,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,qEAAA,CAAAL,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAWhB,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,GAAA,CACvB;AAAA;AAAA;AAAA;AAAA;AAAA,MAKE,OAAO,MAAM,GAAA,EACb;AACE,QAAA,GAAA,GAAM,OAAA,CAAQ,KAAA,CAAM,GAAA,EAAK,SAAS,CAAA;AAElC,QAAA,IAAI,QAAQ,EAAA,EACZ;AACE,UAAA,OAAO,GAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,WAAA,CAAY,MAAA,EAAQ,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,aAAa,EAAC,EAAG,OAAA,GAAU,EAAC,EAClE;AAEE,QAAA,IAAI,CAAC,IAAA,EACL;AACE,UAAA,MAAM,IAAI,UAAU,qCAAqC,CAAA;AAAA,QAC3D;AAGA,QAAA,IAAA,CAAK,cAAc,EAAC;AACpB,QAAA,IAAA,CAAK,WAAW,EAAC;AAEjB,QAAA,IAAA,CAAK,OAAA,GAAU,UAAU,OAAA,CAAQ,GAAA;AACjC,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAEb,QAAA,KAAA,MAAW,SAAS,UAAA,EACpB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,UAAA,EAAY,KAAK,CAAA,EAC1D;AACE,YAAA,IAAA,CAAK,QAAA,CAAS,KAAA,EAAO,UAAA,CAAW,KAAK,CAAC,CAAA;AAAA,UACxC;AAAA,QACF;AAEA,QAAA,KAAA,MAAW,UAAU,OAAA,EACrB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,OAAA,EAAS,MAAM,CAAA,EACxD;AACE,YAAA,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,OAAA,CAAQ,MAAM,CAAC,CAAA;AAAA,UACxC;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,MAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACd;AAAA,MAEA,IAAI,OAAO,KAAA,EACX;AACE,QAAA,IAAA,CAAK,OAAA,GAAU,MAAM,WAAA,EAAY;AAAA,MACnC;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAK,KAAA,EACT;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAK,KAAA,EACT;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,MAAM,WAAA,EAAY;AAAA,MACjC;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAK,KAAA,EACT;AACE,QAAA,IAAA,CAAK,QAAQ,KAAA,KAAU,CAAA,GAAI,QAAS,QAAA,CAAS,KAAA,EAAO,EAAE,CAAA,IAAK,IAAA;AAAA,MAC7D;AAAA,MAEA,QAAA,CAAS,KAAK,KAAA,EACd;AACE,QAAA,IAAI,GAAA,EACJ;AACE,UAAA,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,CAAA,GAAK,OAAO,KAAA,KAAU,WAAA,IAAe,KAAA,KAAU,IAAA,GAAQ,IAAA,GAAO,KAAA,CAAM,QAAA,EAAS;AAAA,QACjH;AAAA,MACF;AAAA,MAEA,SAAS,GAAA,EACT;AACE,QAAA,IAAI,GAAA,EACJ;AACE,UAAA,OAAO,IAAA,CAAK,WAAA,CAAY,GAAA,CAAI,WAAA,EAAa,CAAA;AAAA,QAC3C;AAAA,MACF;AAAA,MAEA,SAAS,GAAA,EACT;AACE,QAAA,IAAI,GAAA,EACJ;AACE,UAAA,OAAQ,KAAK,WAAA,CAAY,cAAA,CAAe,IAAI,WAAA,EAAa,KAAK,IAAA,IAAS,KAAA;AAAA,QACzE;AAAA,MACF;AAAA,MAEA,YAAY,SAAA,EACZ;AACE,QAAA,SAAA,GAAY,UAAU,WAAA,EAAY;AAClC,QAAA,IAAI,IAAA,CAAK,WAAA,CAAY,cAAA,CAAe,SAAS,CAAA,EAC7C;AACE,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA;AAExC,UAAA,OAAO,IAAA,CAAK,YAAY,SAAS,CAAA;AAEjC,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,WAAA,GACA;AACE,QAAA,IAAA,CAAK,cAAc,EAAC;AAAA,MACtB;AAAA,MAEA,SAAA,CAAU,MAAM,KAAA,EAChB;AACE,QAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA,GAAK,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,KAAA,GAAQ,CAAE,KAAM,CAAA;AAAA,MAClF;AAAA,MAEA,UAAU,IAAA,EACV;AACE,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,OAAO,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA;AAAA,QAC5C;AAAA,MACF;AAAA,MAEA,UAAU,IAAA,EACV;AACE,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,OAAQ,IAAA,CAAK,SAAS,cAAA,CAAe,KAAA,CAAM,UAAU,IAAI,CAAC,KAAK,IAAA,IAAS,KAAA;AAAA,QAC1E;AAAA,MACF;AAAA,MAEA,aAAa,MAAA,EACb;AACE,QAAA,MAAA,GAAS,KAAA,CAAM,UAAU,MAAM,CAAA;AAC/B,QAAA,IAAI,IAAA,CAAK,QAAA,CAAS,cAAA,CAAe,MAAM,CAAA,EACvC;AACE,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA;AAElC,UAAA,OAAO,IAAA,CAAK,SAAS,MAAM,CAAA;AAE3B,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,YAAA,GACA;AACE,QAAA,IAAA,CAAK,WAAW,EAAC;AAAA,MACnB;AAAA,MAEA,KAAA,GACA;AACE,QAAA,OAAO,IAAI,GAAA;AAAA,UACT,IAAA,CAAK,OAAA;AAAA,UACL,IAAA,CAAK,KAAA;AAAA,UACL,IAAA,CAAK,KAAA;AAAA,UACL,IAAA,CAAK,KAAA;AAAA,UACL,KAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,WAAW,CAAC,CAAA;AAAA,UAC3C,KAAK,KAAA,CAAM,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAC;AAAA,SAAC;AAAA,MAC7C;AAAA,MAEA,QAAA,GACA;AACE,QAAA,MAAM,UAAU,EAAC;AAEjB,QAAA,IAAI,GAAA,GAAM,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,CAAA;AAEzB,QAAA,IAAI,KAAK,KAAA,EACT;AACE,UAAA,GAAA,IAAO,CAAA,EAAG,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACxC;AACA,QAAA,GAAA,IAAO,IAAA,CAAK,KAAA;AACZ,QAAA,IAAI,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,KAAA,KAAU,CAAA,EACjC;AACE,UAAA,GAAA,IAAO,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,CAAA;AAAA,QACvB;AAEA,QAAA,KAAA,MAAW,SAAA,IAAa,KAAK,WAAA,EAC7B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,WAAA,EAAa,SAAS,CAAA,EACpE;AACE,YAAA,GAAA,IAAO,IAAI,SAAS,CAAA,CAAA;AAEpB,YAAA,IAAI,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA,KAAM,IAAA,EACpC;AACE,cAAA,GAAA,IAAO,CAAA,CAAA,EAAI,IAAA,CAAK,WAAA,CAAY,SAAS,CAAC,CAAA,CAAA;AAAA,YACxC;AAAA,UACF;AAAA,QACF;AAEA,QAAA,KAAA,MAAW,MAAA,IAAU,KAAK,QAAA,EAC1B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA,EAC9D;AACE,YAAA,KAAA,MAAW,IAAA,IAAQ,IAAA,CAAK,QAAA,CAAS,MAAM,CAAA,EACvC;AACE,cAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,EAAG,MAAM,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,CAAA;AAAA,YAClC;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EACrB;AACE,UAAA,GAAA,IAAO,CAAA,CAAA,EAAI,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAC,CAAA,CAAA;AAAA,QAC9B;AAEA,QAAA,OAAO,GAAA;AAAA,MACT;AAAA,MAEA,MAAM,SAAA,EACN;AACE,QAAA,IAAI,GAAA,GAAM,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,CAAA;AAEzB,QAAA,IAAI,KAAK,KAAA,EACT;AACE,UAAA,GAAA,IAAO,CAAA,EAAG,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,KAAK,CAAC,CAAA,CAAA,CAAA;AAAA,QACxC;AACA,QAAA,GAAA,IAAO,IAAA,CAAK,KAAA;AACZ,QAAA,IAAI,SAAA,KAAc,IAAA,CAAK,KAAA,IAAS,IAAA,CAAK,UAAU,CAAA,CAAA,EAC/C;AACE,UAAA,GAAA,IAAO,CAAA,CAAA,EAAI,KAAK,KAAK,CAAA,CAAA;AAAA,QACvB;AAEA,QAAA,OAAO,GAAA;AAAA,MACT;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvQA,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uEAAA,CAAAA,SAAA,EAAA;AAAA,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAEhB,IAAAA,SAAA,CAAQ,kBAAkB,CAAC,MAAA,KAAW,SAAS,kBAAA,CAAmB,MAAM,CAAC,CAAA,CAAE,MAAA;AAG3E,IAAA,IAAM,UAAA,GAAaA,SAAA,CAAQ,UAAA,GAAa,CAAC,EAAA,KACzC;AACE,MAAA,IAAI,OAAO,MAAA,EACX;AACE,QAAA,OAAQ,OAAO,SAAA,CAAU,QAAA,CAAS,KAAK,EAAE,CAAA,KAAM,sBAAsB,IAAA,GAAO,KAAA;AAAA,MAC9E,CAAA,MAEA;AACE,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAEA,IAAAA,SAAA,CAAQ,QAAA,GAAW,CAAC,GAAA,KACpB;AACE,MAAA,IAAI,QAAQ,MAAA,EACZ;AACE,QAAA,OAAQ,OAAO,SAAA,CAAU,QAAA,CAAS,KAAK,GAAG,CAAA,KAAM,oBAAoB,IAAA,GAAO,KAAA;AAAA,MAC7E,CAAA,MAEA;AACE,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF,CAAA;AAEA,IAAAA,SAAA,CAAQ,SAAA,GAAY,CAAC,GAAA,KAAQ,CAAC,KAAA,CAAM,GAAG,CAAA,IAAM,UAAA,CAAW,GAAG,CAAA,KAAM,QAAA,CAAS,GAAA,EAAK,EAAE,CAAA;AAEjF,IAAAA,SAAA,CAAQ,OAAA,GAAU,CAAC,KAAA,KACnB;AACE,MAAA,OAAQ,UAAU,IAAA,IACd,KAAA,KAAU,EAAA,IACV,KAAA,KAAU,UACT,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,IAAK,MAAM,MAAA,KAAW,CAAA,IACzC,OAAO,KAAA,KAAW,QAAA,IAAY,MAAM,KAAK,CAAA;AAAA,IAChD,CAAA;AAEA,IAAAA,SAAA,CAAQ,UAAA,GAAa,SAAS,GAAA,EAAA,GAAQ,WAAA,EACtC;AACE,MAAA,KAAA,MAAW,cAAc,WAAA,EACzB;AACE,QAAA,IAAI,UAAA,CAAW,GAAA,CAAI,UAAU,CAAC,CAAA,EAC9B;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAGA,IAAA,IAAM,oBAAoBA,SAAA,CAAQ,iBAAA,GAAoB,CAAC,IAAA,EAAM,OAAO,EAAA,KACpE;AACE,MAAA,IAAI,CAAA,EAAG,GAAG,KAAA,GAAQ,EAAA;AAElB,MAAA,KAAK,CAAA,GAAE,CAAA,EAAG,CAAA,GAAI,IAAA,EAAM,CAAA,EAAA,EACpB;AACE,QAAA,CAAA,GAAK,IAAA,CAAK,MAAA,EAAO,GAAI,IAAA,GAAQ,CAAA;AAC7B,QAAA,KAAA,IAAS,CAAA,CAAE,SAAS,IAAI,CAAA;AAAA,MAC1B;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAAA,SAAA,CAAQ,MAAA,GAAS,MAAM,iBAAA,CAAkB,EAAE,CAAA;AAG3C,IAAAA,SAAA,CAAQ,UAAU,MAClB;AACE,MAAA,MAAM,IAAA,GAAO,sCAAA,CAAuC,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAA,KACtE;AACE,QAAA,MAAM,CAAA,GAAI,IAAA,CAAK,MAAA,EAAO,GAAE,EAAA,GAAG,CAAA,EAAG,CAAA,GAAI,CAAA,KAAM,GAAA,GAAM,CAAA,GAAM,CAAA,GAAE,CAAA,GAAK,CAAA;AAG3D,QAAA,OAAO,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA,MACtB,CAAC,CAAA;AAED,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAEA,IAAAA,SAAA,CAAQ,QAAA,GAAW,CAAC,IAAA,KACpB;AACE,MAAA,IAAI,CAAC,IAAA,EACL;AACE,QAAA;AAAA,MACF,CAAA,MAEA;AACE,QAAA,IAAA,GAAO,OAAA,CAAQ,KAAA,CAAM,IAAA,EAAM,MAAM,CAAA;AACjC,QAAA,IAAI,SAAS,EAAA,EACb;AACE,UAAA,OAAO,IAAA,CAAK,SAAA;AAAA,QACd;AAAA,MACF;AAAA,IACF,CAAA;AAQA,IAAA,IAAM,UAAA,GAAaA,SAAA,CAAQ,UAAA,GAAa,CAAC,IAAA,KACvC,mBAAmB,kBAAA,CAAmB,IAAI,CAAC,CAAA,CACxC,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA,CACpB,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA,CACpB,OAAA,CAAQ,SAAS,GAAG,CAAA,CACpB,OAAA,CAAQ,OAAA,EAAS,GAAG,CAAA;AASzB,IAAAA,SAAA,CAAQ,eAAA,GAAkB,CAAC,MAAA,EAAQ,MAAA,KACnC;AAEE,MAAA,IAAI,CAAC,MAAA,EACL;AACE,QAAA;AAAA,MAEF,CAAA,MAAA,IACS,kBAAkB,GAAA,EAC3B;AACE,QAAA,OAAO,MAAA;AAAA,MAKT,CAAA,MAAA,IACS,OAAO,MAAA,KAAW,QAAA,EAC3B;AACE,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,KAAA,CAAM,GAAG,CAAA;AACrC,QAAA,IAAI,WAAA;AACJ,QAAA,IAAI,aAAA;AAEJ,QAAA,QAAQ,aAAa,MAAA;AACrB,UACE,KAAK,CAAA;AACH,YAAA,IAAI,CAAC,MAAA,EACL;AACE,cAAA;AAAA,YACF;AACA,YAAA,WAAA,GAAc,MAAA;AACd,YAAA,aAAA,GAAgB,MAAA;AAChB,YAAA;AAAA,UACF,KAAK,CAAA;AACH,YAAA,WAAA,GAAc,aAAa,CAAC,CAAA;AAC5B,YAAA,aAAA,GAAgB,aAAa,CAAC,CAAA;AAC9B,YAAA;AAAA,UACF;AACE,YAAA,WAAA,GAAc,YAAA,CAAa,MAAM,CAAA,EAAG,YAAA,CAAa,SAAO,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA;AACnE,YAAA,aAAA,GAAgB,YAAA,CAAa,YAAA,CAAa,MAAA,GAAO,CAAC,CAAA;AAAA;AAItD,QAAA,WAAA,GAAc,WAAA,CAAY,OAAA,CAAQ,gBAAA,EAAkB,EAAE,CAAA;AAGtD,QAAA,IAAI,yBAAA,CAA0B,IAAA,CAAK,WAAW,CAAA,EAC9C;AACE,UAAA,WAAA,GAAc,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW,EAAE,CAAA;AAAA,QACjD;AAGA,QAAA,MAAA,GAAS,CAAA,EAAG,QAAQ,GAAG,CAAA,CAAA,EAAI,WAAW,WAAW,CAAC,IAAI,aAAa,CAAA,CAAA;AAGnE,QAAA,IAAI,GAAA;AAEJ,QAAA,IAAK,GAAA,GAAM,GAAA,CAAI,KAAA,CAAM,MAAM,CAAA,EAC3B;AACE,UAAA,OAAO,GAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA;AAAA,QACF;AAAA,MACF,CAAA,MAEA;AACE,QAAA;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAAA,SAAA,CAAQ,SAAA,GAAY,CAAC,MAAA,KACrB;AACE,MAAA,MAAM,UAAA,GAAa;AAAA,QACjB,SAAA,EAAqB,SAAA;AAAA,QACrB,MAAA,EAAqB,MAAA;AAAA,QACrB,kBAAA,EAAqB;AAAA,OACvB;AAEA,MAAA,MAAM,IAAA,GAAO,OAAO,WAAA,EAAY,CAC7B,QAAQ,IAAA,EAAM,GAAG,CAAA,CACjB,KAAA,CAAM,GAAG,CAAA;AACZ,MAAA,IAAI,KAAA,GAAQ,EAAA;AACZ,MAAA,MAAM,QAAQ,IAAA,CAAK,MAAA;AACnB,MAAA,IAAI,IAAA;AAEJ,MAAA,KAAK,IAAA,GAAO,CAAA,EAAG,IAAA,GAAO,KAAA,EAAO,IAAA,EAAA,EAC7B;AACE,QAAA,IAAI,SAAS,CAAA,EACb;AACE,UAAA,KAAA,IAAQ,GAAA;AAAA,QACV;AACA,QAAA,KAAA,IAAS,IAAA,CAAK,IAAI,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,CAAE,WAAA,EAAY,GAAE,IAAA,CAAK,IAAI,CAAA,CAAE,SAAA,CAAU,CAAC,CAAA;AAAA,MACpE;AACA,MAAA,IAAI,UAAA,CAAW,KAAK,CAAA,EACpB;AACE,QAAA,KAAA,GAAQ,WAAW,KAAK,CAAA;AAAA,MAC1B;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AAEA,IAAAA,SAAA,CAAQ,aAAA,GAAgB,CAAC,WAAA,KACzB;AACE,MAAA,KAAA,MAAW,KAAA,IAAS,QAAQ,gBAAA,EAC5B;AACE,QAAA,IAAI,QAAQ,gBAAA,CAAiB,KAAK,EAAE,OAAA,CAAQ,WAAW,MAAM,EAAA,EAC7D;AACE,UAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,QAC7B;AAAA,MACF;AAEA,MAAA,OAAO,QAAQ,MAAA,CAAO,gBAAA;AAAA,IACxB,CAAA;AAKA,IAAAA,SAAA,CAAQ,qBAAqB,MAC7B;AACE,MAAA,SAAS,QAAA,CAAS,MAAM,EAAA,EACxB;AACE,QAAA,OAAO,IAAA,CAAK,MAAO,IAAA,CAAK,MAAA,MAAY,EAAA,GAAG,IAAA,GAAK,KAAM,IAAI,CAAA;AAAA,MACxD;AAEA,MAAA,OAAO,CAAA,QAAA,EAAW,QAAA,CAAS,CAAA,EAAG,GAAG,CAAC,CAAA,CAAA;AAAA,IACpC,CAAA;AAGA,IAAAA,SAAA,CAAQ,YAAA,GAAe,CAAC,MAAA,KACxB;AACE,MAAA,SAAS,UAAA,CAAW,QAAQ,UAAA,EAC5B;AACE,QAAA,OAAQ,MAAA,IAAQ,UAAA,GAAe,MAAA,KAAU,EAAA,GAAG,UAAA;AAAA,MAC9C;AAEA,MAAA,SAAS,WAAA,CAAY,IAAI,EAAA,EACzB;AACE,QAAA,MAAM,MAAO,EAAA,GAAK,UAAA;AAClB,QAAA,MAAM,MAAO,EAAA,GAAK,UAAA;AAClB,QAAA,MAAM,MAAO,EAAA,GAAK,UAAA;AAClB,QAAA,MAAM,MAAO,EAAA,GAAK,UAAA;AAClB,QAAA,MAAM,OAAA,GAAA,CAAW,EAAA,GAAK,UAAA,KAAa,EAAA,GAAK,UAAA,CAAA;AAExC,QAAA,IAAI,MAAM,GAAA,EACV;AACE,UAAA,OAAQ,OAAA,GAAU,aAAa,GAAA,GAAM,GAAA;AAAA,QACvC;AACA,QAAA,IAAI,MAAM,GAAA,EACV;AACE,UAAA,IAAI,UAAU,UAAA,EACd;AACE,YAAA,OAAQ,OAAA,GAAU,aAAa,GAAA,GAAM,GAAA;AAAA,UACvC,CAAA,MAEA;AACE,YAAA,OAAQ,OAAA,GAAU,aAAa,GAAA,GAAM,GAAA;AAAA,UACvC;AAAA,QACF,CAAA,MAEA;AACE,UAAA,OAAQ,UAAU,GAAA,GAAM,GAAA;AAAA,QAC1B;AAAA,MACF;AAEA,MAAA,SAAS,GAAA,CAAIM,EAAAA,EAAG,CAAA,EAAG,CAAA,EACnB;AACE,QAAA,OAAQA,EAAAA,GAAI,CAAA,GAAO,CAACA,EAAAA,GAAK,CAAA;AAAA,MAC3B;AAEA,MAAA,SAAS,GAAA,CAAIA,EAAAA,EAAG,CAAA,EAAG,CAAA,EACnB;AACE,QAAA,OAAQA,EAAAA,GAAI,CAAA,GAAM,CAAA,GAAK,CAAC,CAAA;AAAA,MAC1B;AAEA,MAAA,SAAS,GAAA,CAAIA,EAAAA,EAAG,CAAA,EAAG,CAAA,EACnB;AACE,QAAA,OAAQA,KAAI,CAAA,GAAI,CAAA;AAAA,MAClB;AAEA,MAAA,SAAS,GAAA,CAAIA,EAAAA,EAAG,CAAA,EAAG,CAAA,EACnB;AACE,QAAA,OAAQ,CAAA,IAAKA,KAAK,CAAC,CAAA,CAAA;AAAA,MACrB;AAEA,MAAA,SAAS,KAAKC,EAAAA,EAAGC,EAAAA,EAAGC,IAAGC,EAAAA,EAAGJ,EAAAA,EAAG,GAAG,EAAA,EAChC;AACE,QAAAC,EAAAA,GAAI,WAAA,CAAYA,EAAAA,EAAG,WAAA,CAAY,WAAA,CAAY,GAAA,CAAIC,EAAAA,EAAGC,EAAAA,EAAGC,EAAC,CAAA,EAAGJ,EAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAEhE,QAAA,OAAO,WAAA,CAAY,UAAA,CAAWC,EAAAA,EAAG,CAAC,GAAGC,EAAC,CAAA;AAAA,MACxC;AAEA,MAAA,SAAS,KAAKD,EAAAA,EAAGC,EAAAA,EAAGC,IAAGC,EAAAA,EAAGJ,EAAAA,EAAG,GAAG,EAAA,EAChC;AACE,QAAAC,EAAAA,GAAI,WAAA,CAAYA,EAAAA,EAAG,WAAA,CAAY,WAAA,CAAY,GAAA,CAAIC,EAAAA,EAAGC,EAAAA,EAAGC,EAAC,CAAA,EAAGJ,EAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAEhE,QAAA,OAAO,WAAA,CAAY,UAAA,CAAWC,EAAAA,EAAG,CAAC,GAAGC,EAAC,CAAA;AAAA,MACxC;AAEA,MAAA,SAAS,KAAKD,EAAAA,EAAGC,EAAAA,EAAGC,IAAGC,EAAAA,EAAGJ,EAAAA,EAAG,GAAG,EAAA,EAChC;AACE,QAAAC,EAAAA,GAAI,WAAA,CAAYA,EAAAA,EAAG,WAAA,CAAY,WAAA,CAAY,GAAA,CAAIC,EAAAA,EAAGC,EAAAA,EAAGC,EAAC,CAAA,EAAGJ,EAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAEhE,QAAA,OAAO,WAAA,CAAY,UAAA,CAAWC,EAAAA,EAAG,CAAC,GAAGC,EAAC,CAAA;AAAA,MACxC;AAEA,MAAA,SAAS,KAAKD,EAAAA,EAAGC,EAAAA,EAAGC,IAAGC,EAAAA,EAAGJ,EAAAA,EAAG,GAAG,EAAA,EAChC;AACE,QAAAC,EAAAA,GAAI,WAAA,CAAYA,EAAAA,EAAG,WAAA,CAAY,WAAA,CAAY,GAAA,CAAIC,EAAAA,EAAGC,EAAAA,EAAGC,EAAC,CAAA,EAAGJ,EAAC,CAAA,EAAG,EAAE,CAAC,CAAA;AAEhE,QAAA,OAAO,WAAA,CAAY,UAAA,CAAWC,EAAAA,EAAG,CAAC,GAAGC,EAAC,CAAA;AAAA,MACxC;AAEA,MAAA,SAAS,mBAAmB,GAAA,EAC5B;AACE,QAAA,IAAI,UAAA;AACJ,QAAA,MAAM,iBAAiB,GAAA,CAAI,MAAA;AAC3B,QAAA,MAAM,uBAAqB,cAAA,GAAiB,CAAA;AAC5C,QAAA,MAAM,oBAAA,GAAA,CAAsB,oBAAA,GAAsB,oBAAA,GAAuB,EAAA,IAAK,EAAA;AAC9E,QAAA,MAAM,cAAA,GAAA,CAAkB,uBAAqB,CAAA,IAAG,EAAA;AAChD,QAAA,MAAM,UAAA,GAAa,IAAI,KAAA,CAAM,cAAA,GAAe,CAAC,CAAA;AAC7C,QAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,QAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,QAAA,OAAO,aAAa,cAAA,EACpB;AACE,UAAA,UAAA,GAAA,CAAc,UAAA,GAAY,aAAa,CAAA,IAAI,CAAA;AAC3C,UAAA,aAAA,GAAiB,aAAa,CAAA,GAAG,CAAA;AACjC,UAAA,UAAA,CAAW,UAAU,IAAK,UAAA,CAAW,UAAU,IAC1C,GAAA,CAAI,UAAA,CAAW,UAAU,CAAA,IAAG,aAAA;AACjC,UAAA,UAAA,EAAA;AAAA,QACF;AACA,QAAA,UAAA,GAAA,CAAc,UAAA,GAAY,aAAa,CAAA,IAAI,CAAA;AAC3C,QAAA,aAAA,GAAiB,aAAa,CAAA,GAAG,CAAA;AACjC,QAAA,UAAA,CAAW,UAAU,CAAA,GAAI,UAAA,CAAW,UAAU,IAAK,GAAA,IAAM,aAAA;AACzD,QAAA,UAAA,CAAW,cAAA,GAAe,CAAC,CAAA,GAAI,cAAA,IAAgB,CAAA;AAC/C,QAAA,UAAA,CAAW,cAAA,GAAe,CAAC,CAAA,GAAI,cAAA,KAAiB,EAAA;AAEhD,QAAA,OAAO,UAAA;AAAA,MACT;AAEA,MAAA,SAAS,UAAU,MAAA,EACnB;AACE,QAAA,IAAI,cAAA,GAAe,EAAA,EAAI,mBAAA,GAAoB,EAAA,EAAI,KAAA,EAAO,MAAA;AAEtD,QAAA,KAAK,MAAA,GAAS,CAAA,EAAG,MAAA,IAAQ,CAAA,EAAG,MAAA,EAAA,EAC5B;AACE,UAAA,KAAA,GAAS,MAAA,KAAU,SAAO,CAAA,GAAM,GAAA;AAChC,UAAA,mBAAA,GAAsB,CAAA,CAAA,EAAI,KAAA,CAAM,QAAA,CAAS,EAAE,CAAC,CAAA,CAAA;AAC5C,UAAA,cAAA,GAAiB,iBACf,mBAAA,CAAoB,MAAA,CAAO,mBAAA,CAAoB,MAAA,GAAO,GAAG,CAAC,CAAA;AAAA,QAC9D;AAEA,QAAA,OAAO,cAAA;AAAA,MACT;AAEA,MAAA,SAAS,WAAW,GAAA,EACpB;AACE,QAAA,IAAI,OAAA,GAAU,EAAA;AAEd,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,GAAA,CAAI,QAAQ,CAAA,EAAA,EAChC;AACE,UAAA,MAAMC,EAAAA,GAAI,GAAA,CAAI,UAAA,CAAW,CAAC,CAAA;AAE1B,UAAA,IAAIA,KAAI,GAAA,EACR;AACE,YAAA,OAAA,IAAW,MAAA,CAAO,aAAaA,EAAC,CAAA;AAAA,UAClC,CAAA,MAAA,IACUA,EAAAA,GAAI,GAAA,IAASA,EAAAA,GAAI,IAAA,EAC3B;AACE,YAAA,OAAA,IAAW,MAAA,CAAO,YAAA,CAAcA,EAAAA,IAAK,CAAA,GAAK,GAAG,CAAA;AAC7C,YAAA,OAAA,IAAW,MAAA,CAAO,YAAA,CAAcA,EAAAA,GAAI,EAAA,GAAM,GAAG,CAAA;AAAA,UAC/C,CAAA,MAEA;AACE,YAAA,OAAA,IAAW,MAAA,CAAO,YAAA,CAAcA,EAAAA,IAAK,EAAA,GAAM,GAAG,CAAA;AAC9C,YAAA,OAAA,IAAW,MAAA,CAAO,YAAA,CAAeA,EAAAA,IAAK,CAAA,GAAK,KAAM,GAAG,CAAA;AACpD,YAAA,OAAA,IAAW,MAAA,CAAO,YAAA,CAAcA,EAAAA,GAAI,EAAA,GAAM,GAAG,CAAA;AAAA,UAC/C;AAAA,QACF;AAEA,QAAA,OAAO,OAAA;AAAA,MACT;AAEA,MAAA,IAAI,IAAE,EAAC;AACP,MAAA,IAAI,GAAG,EAAA,EAAI,EAAA,EAAI,IAAI,EAAA,EAAI,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA;AAChC,MAAA,MAAM,MAAI,CAAA,EAAG,GAAA,GAAI,EAAA,EAAI,GAAA,GAAI,IAAI,GAAA,GAAI,EAAA;AACjC,MAAA,MAAM,MAAI,CAAA,EAAG,GAAA,GAAI,CAAA,EAAG,GAAA,GAAI,IAAI,GAAA,GAAI,EAAA;AAChC,MAAA,MAAM,MAAI,CAAA,EAAG,GAAA,GAAI,EAAA,EAAI,GAAA,GAAI,IAAI,GAAA,GAAI,EAAA;AACjC,MAAA,MAAM,MAAI,CAAA,EAAG,GAAA,GAAI,EAAA,EAAI,GAAA,GAAI,IAAI,GAAA,GAAI,EAAA;AAEjC,MAAA,MAAA,GAAS,WAAW,MAAM,CAAA;AAE1B,MAAA,CAAA,GAAI,mBAAmB,MAAM,CAAA;AAE7B,MAAA,CAAA,GAAI,UAAA;AAAY,MAAA,CAAA,GAAI,UAAA;AAAY,MAAA,CAAA,GAAI,UAAA;AAAY,MAAA,CAAA,GAAI,SAAA;AAEpD,MAAA,KAAK,IAAE,CAAA,EAAG,CAAA,GAAE,CAAA,CAAE,MAAA,EAAQ,KAAG,EAAA,EACzB;AACE,QAAA,EAAA,GAAG,CAAA;AAAG,QAAA,EAAA,GAAG,CAAA;AAAG,QAAA,EAAA,GAAG,CAAA;AAAG,QAAA,EAAA,GAAG,CAAA;AACrB,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,SAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,SAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,QAAS,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,SAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,SAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,QAAS,CAAA;AACzC,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,SAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,EAAE,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC3C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,SAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,IAAA,CAAK,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,EAAE,CAAA,GAAE,CAAC,CAAA,EAAG,GAAA,EAAK,UAAU,CAAA;AAC1C,QAAA,CAAA,GAAE,WAAA,CAAY,GAAG,EAAE,CAAA;AACnB,QAAA,CAAA,GAAE,WAAA,CAAY,GAAG,EAAE,CAAA;AACnB,QAAA,CAAA,GAAE,WAAA,CAAY,GAAG,EAAE,CAAA;AACnB,QAAA,CAAA,GAAE,WAAA,CAAY,GAAG,EAAE,CAAA;AAAA,MACrB;AAEA,MAAA,MAAM,IAAA,GAAO,SAAA,CAAU,CAAC,CAAA,GAAE,SAAA,CAAU,CAAC,CAAA,GAAE,SAAA,CAAU,CAAC,CAAA,GAAE,SAAA,CAAU,CAAC,CAAA;AAE/D,MAAA,OAAO,KAAK,WAAA,EAAY;AAAA,IAC1B,CAAA;AAEA,IAAAT,SAAA,CAAQ,gBAAA,GAAmB,CAAC,MAAA,KAC5B;AACE,MAAA,IAAI,CAAC,MAAA,EACL;AACE,QAAA;AAAA,MACF;AAIA,MAAA,IACA;AACE,QAAA,IAAI,MAAA;AAEJ,QAAA,IAAI,OAAO,SAAA,EACX;AACE,UAAA,MAAA,GAAS,OAAO,SAAA,EAAU;AAC1B,UAAA,KAAA,MAAW,SAAS,MAAA,EACpB;AACE,YAAA,KAAA,CAAM,IAAA,EAAK;AAAA,UACb;AAAA,QACF,CAAA,MAEA;AACE,UAAA,MAAA,GAAS,OAAO,cAAA,EAAe;AAC/B,UAAA,KAAA,MAAW,SAAS,MAAA,EACpB;AACE,YAAA,KAAA,CAAM,IAAA,EAAK;AAAA,UACb;AACA,UAAA,MAAA,GAAS,OAAO,cAAA,EAAe;AAC/B,UAAA,KAAA,MAAW,SAAS,MAAA,EACpB;AACE,YAAA,KAAA,CAAM,IAAA,EAAK;AAAA,UACb;AAAA,QACF;AAAA,MACF,SAEO,KAAA,EACP;AAGE,QAAA,IAAI,OAAO,MAAA,CAAO,IAAA,KAAS,cAAc,OAAO,MAAA,CAAO,SAAS,QAAA,EAChE;AACE,UAAA,MAAA,CAAO,IAAA,EAAK;AAAA,QACd;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAAA,SAAA,CAAQ,UAAA,GAAa,CAAC,KAAA,KACtB;AACE,MAAA,OAAQ,KAAA,IAAS,KAAA,CAAM,KAAA,EAAM,IAAM,EAAC;AAAA,IACtC,CAAA;AAEA,IAAAA,SAAA,CAAQ,WAAA,GAAc,CAAC,GAAA,EAAK,QAAA,GAAW,EAAC,KACxC;AACE,MAAA,OAAQ,OAAO,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,GAAG,CAAA,IAAM,QAAA;AAAA,IAC5C,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACviBA,IAAA,UAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4DAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAIA,IAAA,IAAI,CAAA,GAAI,GAAA;AACR,IAAA,IAAI,IAAI,CAAA,GAAI,EAAA;AACZ,IAAA,IAAI,IAAI,CAAA,GAAI,EAAA;AACZ,IAAA,IAAI,IAAI,CAAA,GAAI,EAAA;AACZ,IAAA,IAAI,IAAI,CAAA,GAAI,CAAA;AACZ,IAAA,IAAI,IAAI,CAAA,GAAI,MAAA;AAgBZ,IAAA,MAAA,CAAO,OAAA,GAAU,SAAU,GAAA,EAAK,OAAA,EAAS;AACvC,MAAA,OAAA,GAAU,WAAW,EAAC;AACtB,MAAA,IAAI,OAAO,OAAO,GAAA;AAClB,MAAA,IAAI,IAAA,KAAS,QAAA,IAAY,GAAA,CAAI,MAAA,GAAS,CAAA,EAAG;AACvC,QAAA,OAAO,MAAM,GAAG,CAAA;AAAA,MAClB,CAAA,MAAA,IAAW,IAAA,KAAS,QAAA,IAAY,QAAA,CAAS,GAAG,CAAA,EAAG;AAC7C,QAAA,OAAO,QAAQ,IAAA,GAAO,OAAA,CAAQ,GAAG,CAAA,GAAI,SAAS,GAAG,CAAA;AAAA,MACnD;AACA,MAAA,MAAM,IAAI,KAAA;AAAA,QACR,uDAAA,GACE,IAAA,CAAK,SAAA,CAAU,GAAG;AAAA,OACtB;AAAA,IACF,CAAA;AAUA,IAAA,SAAS,MAAM,GAAA,EAAK;AAClB,MAAA,GAAA,GAAM,OAAO,GAAG,CAAA;AAChB,MAAA,IAAI,GAAA,CAAI,SAAS,GAAA,EAAK;AACpB,QAAA;AAAA,MACF;AACA,MAAA,IAAI,QAAQ,kIAAA,CAAmI,IAAA;AAAA,QAC7I;AAAA,OACF;AACA,MAAA,IAAI,CAAC,KAAA,EAAO;AACV,QAAA;AAAA,MACF;AACA,MAAA,IAAI,CAAA,GAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AAC3B,MAAA,IAAI,IAAA,GAAA,CAAQ,KAAA,CAAM,CAAC,CAAA,IAAK,MAAM,WAAA,EAAY;AAC1C,MAAA,QAAQ,IAAA;AAAM,QACZ,KAAK,OAAA;AAAA,QACL,KAAK,MAAA;AAAA,QACL,KAAK,KAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAO,CAAA,GAAI,CAAA;AAAA,QACb,KAAK,OAAA;AAAA,QACL,KAAK,MAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAO,CAAA,GAAI,CAAA;AAAA,QACb,KAAK,MAAA;AAAA,QACL,KAAK,KAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAO,CAAA,GAAI,CAAA;AAAA,QACb,KAAK,OAAA;AAAA,QACL,KAAK,MAAA;AAAA,QACL,KAAK,KAAA;AAAA,QACL,KAAK,IAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAO,CAAA,GAAI,CAAA;AAAA,QACb,KAAK,SAAA;AAAA,QACL,KAAK,QAAA;AAAA,QACL,KAAK,MAAA;AAAA,QACL,KAAK,KAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAO,CAAA,GAAI,CAAA;AAAA,QACb,KAAK,SAAA;AAAA,QACL,KAAK,QAAA;AAAA,QACL,KAAK,MAAA;AAAA,QACL,KAAK,KAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAO,CAAA,GAAI,CAAA;AAAA,QACb,KAAK,cAAA;AAAA,QACL,KAAK,aAAA;AAAA,QACL,KAAK,OAAA;AAAA,QACL,KAAK,MAAA;AAAA,QACL,KAAK,IAAA;AACH,UAAA,OAAO,CAAA;AAAA,QACT;AACE,UAAA,OAAO,MAAA;AAAA;AACX,IACF;AAUA,IAAA,SAAS,SAAS,EAAA,EAAI;AACpB,MAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AACvB,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,CAAC,CAAA,GAAI,GAAA;AAAA,MAC9B;AACA,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,CAAC,CAAA,GAAI,GAAA;AAAA,MAC9B;AACA,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,CAAC,CAAA,GAAI,GAAA;AAAA,MAC9B;AACA,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,IAAA,CAAK,KAAA,CAAM,EAAA,GAAK,CAAC,CAAA,GAAI,GAAA;AAAA,MAC9B;AACA,MAAA,OAAO,EAAA,GAAK,IAAA;AAAA,IACd;AAUA,IAAA,SAAS,QAAQ,EAAA,EAAI;AACnB,MAAA,IAAI,KAAA,GAAQ,IAAA,CAAK,GAAA,CAAI,EAAE,CAAA;AACvB,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,MAAA,CAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,KAAK,CAAA;AAAA,MACnC;AACA,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,MAAA,CAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,MAAM,CAAA;AAAA,MACpC;AACA,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,MAAA,CAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA;AAAA,MACtC;AACA,MAAA,IAAI,SAAS,CAAA,EAAG;AACd,QAAA,OAAO,MAAA,CAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,QAAQ,CAAA;AAAA,MACtC;AACA,MAAA,OAAO,EAAA,GAAK,KAAA;AAAA,IACd;AAMA,IAAA,SAAS,MAAA,CAAO,EAAA,EAAI,KAAA,EAAO,CAAA,EAAG,IAAA,EAAM;AAClC,MAAA,IAAI,QAAA,GAAW,SAAS,CAAA,GAAI,GAAA;AAC5B,MAAA,OAAO,IAAA,CAAK,MAAM,EAAA,GAAK,CAAC,IAAI,GAAA,GAAM,IAAA,IAAQ,WAAW,GAAA,GAAM,EAAA,CAAA;AAAA,IAC7D;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjKA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4FAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAMA,IAAA,SAAS,MAAM,GAAA,EAAK;AACnB,MAAA,WAAA,CAAY,KAAA,GAAQ,WAAA;AACpB,MAAA,WAAA,CAAY,OAAA,GAAU,WAAA;AACtB,MAAA,WAAA,CAAY,MAAA,GAAS,MAAA;AACrB,MAAA,WAAA,CAAY,OAAA,GAAU,OAAA;AACtB,MAAA,WAAA,CAAY,MAAA,GAAS,MAAA;AACrB,MAAA,WAAA,CAAY,OAAA,GAAU,OAAA;AACtB,MAAA,WAAA,CAAY,QAAA,GAAW,UAAA,EAAA;AACvB,MAAA,WAAA,CAAY,OAAA,GAAU,OAAA;AAEtB,MAAA,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,CAAE,OAAA,CAAQ,CAAA,GAAA,KAAO;AAC/B,QAAA,WAAA,CAAY,GAAG,CAAA,GAAI,GAAA,CAAI,GAAG,CAAA;AAAA,MAC3B,CAAC,CAAA;AAMD,MAAA,WAAA,CAAY,QAAQ,EAAC;AACrB,MAAA,WAAA,CAAY,QAAQ,EAAC;AAOrB,MAAA,WAAA,CAAY,aAAa,EAAC;AAQ1B,MAAA,SAAS,YAAY,SAAA,EAAW;AAC/B,QAAA,IAAI,IAAA,GAAO,CAAA;AAEX,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,SAAA,CAAU,QAAQ,CAAA,EAAA,EAAK;AAC1C,UAAA,IAAA,GAAA,CAAS,IAAA,IAAQ,CAAA,IAAK,IAAA,GAAQ,SAAA,CAAU,WAAW,CAAC,CAAA;AACpD,UAAA,IAAA,IAAQ,CAAA;AAAA,QACT;AAEA,QAAA,OAAO,WAAA,CAAY,OAAO,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,GAAI,WAAA,CAAY,OAAO,MAAM,CAAA;AAAA,MACrE;AACA,MAAA,WAAA,CAAY,WAAA,GAAc,WAAA;AAS1B,MAAA,SAAS,YAAY,SAAA,EAAW;AAC/B,QAAA,IAAI,QAAA;AACJ,QAAA,IAAI,cAAA,GAAiB,IAAA;AACrB,QAAA,IAAI,eAAA;AACJ,QAAA,IAAI,YAAA;AAEJ,QAAA,SAAS,SAAS,IAAA,EAAM;AAEvB,UAAA,IAAI,CAAC,MAAM,OAAA,EAAS;AACnB,YAAA;AAAA,UACD;AAEA,UAAA,MAAM,IAAA,GAAO,KAAA;AAGb,UAAA,MAAM,IAAA,GAAO,MAAA,iBAAO,IAAI,IAAA,EAAM,CAAA;AAC9B,UAAA,MAAM,EAAA,GAAK,QAAQ,QAAA,IAAY,IAAA,CAAA;AAC/B,UAAA,IAAA,CAAK,IAAA,GAAO,EAAA;AACZ,UAAA,IAAA,CAAK,IAAA,GAAO,QAAA;AACZ,UAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,UAAA,QAAA,GAAW,IAAA;AAEX,UAAA,IAAA,CAAK,CAAC,CAAA,GAAI,WAAA,CAAY,MAAA,CAAO,IAAA,CAAK,CAAC,CAAC,CAAA;AAEpC,UAAA,IAAI,OAAO,IAAA,CAAK,CAAC,CAAA,KAAM,QAAA,EAAU;AAEhC,YAAA,IAAA,CAAK,QAAQ,IAAI,CAAA;AAAA,UAClB;AAGA,UAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,UAAA,IAAA,CAAK,CAAC,IAAI,IAAA,CAAK,CAAC,EAAE,OAAA,CAAQ,eAAA,EAAiB,CAAC,KAAA,EAAO,MAAA,KAAW;AAE7D,YAAA,IAAI,UAAU,IAAA,EAAM;AACnB,cAAA,OAAO,GAAA;AAAA,YACR;AACA,YAAA,KAAA,EAAA;AACA,YAAA,MAAM,SAAA,GAAY,WAAA,CAAY,UAAA,CAAW,MAAM,CAAA;AAC/C,YAAA,IAAI,OAAO,cAAc,UAAA,EAAY;AACpC,cAAA,MAAM,GAAA,GAAM,KAAK,KAAK,CAAA;AACtB,cAAA,KAAA,GAAQ,SAAA,CAAU,IAAA,CAAK,IAAA,EAAM,GAAG,CAAA;AAGhC,cAAA,IAAA,CAAK,MAAA,CAAO,OAAO,CAAC,CAAA;AACpB,cAAA,KAAA,EAAA;AAAA,YACD;AACA,YAAA,OAAO,KAAA;AAAA,UACR,CAAC,CAAA;AAGD,UAAA,WAAA,CAAY,UAAA,CAAW,IAAA,CAAK,IAAA,EAAM,IAAI,CAAA;AAEtC,UAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,GAAA,IAAO,WAAA,CAAY,GAAA;AACtC,UAAA,KAAA,CAAM,KAAA,CAAM,MAAM,IAAI,CAAA;AAAA,QACvB;AAEA,QAAA,KAAA,CAAM,SAAA,GAAY,SAAA;AAClB,QAAA,KAAA,CAAM,SAAA,GAAY,YAAY,SAAA,EAAU;AACxC,QAAA,KAAA,CAAM,KAAA,GAAQ,WAAA,CAAY,WAAA,CAAY,SAAS,CAAA;AAC/C,QAAA,KAAA,CAAM,MAAA,GAAS,MAAA;AACf,QAAA,KAAA,CAAM,UAAU,WAAA,CAAY,OAAA;AAE5B,QAAA,MAAA,CAAO,cAAA,CAAe,OAAO,SAAA,EAAW;AAAA,UACvC,UAAA,EAAY,IAAA;AAAA,UACZ,YAAA,EAAc,KAAA;AAAA,UACd,KAAK,MAAM;AACV,YAAA,IAAI,mBAAmB,IAAA,EAAM;AAC5B,cAAA,OAAO,cAAA;AAAA,YACR;AACA,YAAA,IAAI,eAAA,KAAoB,YAAY,UAAA,EAAY;AAC/C,cAAA,eAAA,GAAkB,WAAA,CAAY,UAAA;AAC9B,cAAA,YAAA,GAAe,WAAA,CAAY,QAAQ,SAAS,CAAA;AAAA,YAC7C;AAEA,YAAA,OAAO,YAAA;AAAA,UACR,CAAA;AAAA,UACA,KAAK,CAAA,CAAA,KAAK;AACT,YAAA,cAAA,GAAiB,CAAA;AAAA,UAClB;AAAA,SACA,CAAA;AAGD,QAAA,IAAI,OAAO,WAAA,CAAY,IAAA,KAAS,UAAA,EAAY;AAC3C,UAAA,WAAA,CAAY,KAAK,KAAK,CAAA;AAAA,QACvB;AAEA,QAAA,OAAO,KAAA;AAAA,MACR;AAEA,MAAA,SAAS,MAAA,CAAO,WAAW,SAAA,EAAW;AACrC,QAAA,MAAM,QAAA,GAAW,YAAY,IAAA,CAAK,SAAA,IAAa,OAAO,SAAA,KAAc,WAAA,GAAc,GAAA,GAAM,SAAA,CAAA,GAAa,SAAS,CAAA;AAC9G,QAAA,QAAA,CAAS,MAAM,IAAA,CAAK,GAAA;AACpB,QAAA,OAAO,QAAA;AAAA,MACR;AASA,MAAA,SAAS,OAAO,UAAA,EAAY;AAC3B,QAAA,WAAA,CAAY,KAAK,UAAU,CAAA;AAC3B,QAAA,WAAA,CAAY,UAAA,GAAa,UAAA;AAEzB,QAAA,WAAA,CAAY,QAAQ,EAAC;AACrB,QAAA,WAAA,CAAY,QAAQ,EAAC;AAErB,QAAA,MAAM,SAAS,OAAO,UAAA,KAAe,QAAA,GAAW,UAAA,GAAa,IAC3D,IAAA,EAAK,CACL,OAAA,CAAQ,MAAA,EAAQ,GAAG,CAAA,CACnB,KAAA,CAAM,GAAG,CAAA,CACT,OAAO,OAAO,CAAA;AAEhB,QAAA,KAAA,MAAW,MAAM,KAAA,EAAO;AACvB,UAAA,IAAI,EAAA,CAAG,CAAC,CAAA,KAAM,GAAA,EAAK;AAClB,YAAA,WAAA,CAAY,KAAA,CAAM,IAAA,CAAK,EAAA,CAAG,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,UACnC,CAAA,MAAO;AACN,YAAA,WAAA,CAAY,KAAA,CAAM,KAAK,EAAE,CAAA;AAAA,UAC1B;AAAA,QACD;AAAA,MACD;AAUA,MAAA,SAAS,eAAA,CAAgB,QAAQ,QAAA,EAAU;AAC1C,QAAA,IAAI,WAAA,GAAc,CAAA;AAClB,QAAA,IAAI,aAAA,GAAgB,CAAA;AACpB,QAAA,IAAI,SAAA,GAAY,EAAA;AAChB,QAAA,IAAI,UAAA,GAAa,CAAA;AAEjB,QAAA,OAAO,WAAA,GAAc,OAAO,MAAA,EAAQ;AACnC,UAAA,IAAI,aAAA,GAAgB,QAAA,CAAS,MAAA,KAAW,QAAA,CAAS,aAAa,CAAA,KAAM,MAAA,CAAO,WAAW,CAAA,IAAK,QAAA,CAAS,aAAa,CAAA,KAAM,GAAA,CAAA,EAAM;AAE5H,YAAA,IAAI,QAAA,CAAS,aAAa,CAAA,KAAM,GAAA,EAAK;AACpC,cAAA,SAAA,GAAY,aAAA;AACZ,cAAA,UAAA,GAAa,WAAA;AACb,cAAA,aAAA,EAAA;AAAA,YACD,CAAA,MAAO;AACN,cAAA,WAAA,EAAA;AACA,cAAA,aAAA,EAAA;AAAA,YACD;AAAA,UACD,CAAA,MAAA,IAAW,cAAc,EAAA,EAAI;AAE5B,YAAA,aAAA,GAAgB,SAAA,GAAY,CAAA;AAC5B,YAAA,UAAA,EAAA;AACA,YAAA,WAAA,GAAc,UAAA;AAAA,UACf,CAAA,MAAO;AACN,YAAA,OAAO,KAAA;AAAA,UACR;AAAA,QACD;AAGA,QAAA,OAAO,gBAAgB,QAAA,CAAS,MAAA,IAAU,QAAA,CAAS,aAAa,MAAM,GAAA,EAAK;AAC1E,UAAA,aAAA,EAAA;AAAA,QACD;AAEA,QAAA,OAAO,kBAAkB,QAAA,CAAS,MAAA;AAAA,MACnC;AAQA,MAAA,SAAS,OAAA,GAAU;AAClB,QAAA,MAAM,UAAA,GAAa;AAAA,UAClB,GAAG,WAAA,CAAY,KAAA;AAAA,UACf,GAAG,WAAA,CAAY,KAAA,CAAM,GAAA,CAAI,CAAA,SAAA,KAAa,MAAM,SAAS;AAAA,SACtD,CAAE,KAAK,GAAG,CAAA;AACV,QAAA,WAAA,CAAY,OAAO,EAAE,CAAA;AACrB,QAAA,OAAO,UAAA;AAAA,MACR;AASA,MAAA,SAAS,QAAQ,IAAA,EAAM;AACtB,QAAA,KAAA,MAAW,IAAA,IAAQ,YAAY,KAAA,EAAO;AACrC,UAAA,IAAI,eAAA,CAAgB,IAAA,EAAM,IAAI,CAAA,EAAG;AAChC,YAAA,OAAO,KAAA;AAAA,UACR;AAAA,QACD;AAEA,QAAA,KAAA,MAAW,EAAA,IAAM,YAAY,KAAA,EAAO;AACnC,UAAA,IAAI,eAAA,CAAgB,IAAA,EAAM,EAAE,CAAA,EAAG;AAC9B,YAAA,OAAO,IAAA;AAAA,UACR;AAAA,QACD;AAEA,QAAA,OAAO,KAAA;AAAA,MACR;AASA,MAAA,SAAS,OAAO,GAAA,EAAK;AACpB,QAAA,IAAI,eAAe,KAAA,EAAO;AACzB,UAAA,OAAO,GAAA,CAAI,SAAS,GAAA,CAAI,OAAA;AAAA,QACzB;AACA,QAAA,OAAO,GAAA;AAAA,MACR;AAMA,MAAA,SAAS,OAAA,GAAU;AAClB,QAAA,OAAA,CAAQ,KAAK,uIAAuI,CAAA;AAAA,MACrJ;AAEA,MAAA,WAAA,CAAY,MAAA,CAAO,WAAA,CAAY,IAAA,EAAM,CAAA;AAErC,MAAA,OAAO,WAAA;AAAA,IACR;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,KAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACnSjB,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6FAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAMA,IAAAA,SAAA,CAAQ,UAAA,GAAa,UAAA;AACrB,IAAAA,SAAA,CAAQ,IAAA,GAAO,IAAA;AACf,IAAAA,SAAA,CAAQ,IAAA,GAAO,IAAA;AACf,IAAAA,SAAA,CAAQ,SAAA,GAAY,SAAA;AACpB,IAAAA,SAAA,CAAQ,UAAU,YAAA,EAAa;AAC/B,IAAAA,SAAA,CAAQ,0BAAW,CAAA,MAAM;AACxB,MAAA,IAAI,MAAA,GAAS,KAAA;AAEb,MAAA,OAAO,MAAM;AACZ,QAAA,IAAI,CAAC,MAAA,EAAQ;AACZ,UAAA,MAAA,GAAS,IAAA;AACT,UAAA,OAAA,CAAQ,KAAK,uIAAuI,CAAA;AAAA,QACrJ;AAAA,MACD,CAAA;AAAA,IACD,CAAA,GAAG;AAMH,IAAAA,SAAA,CAAQ,MAAA,GAAS;AAAA,MAChB,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACD;AAWA,IAAA,SAAS,SAAA,GAAY;AAIpB,MAAA,IAAI,OAAO,MAAA,KAAW,WAAA,IAAe,MAAA,CAAO,OAAA,KAAY,MAAA,CAAO,OAAA,CAAQ,IAAA,KAAS,UAAA,IAAc,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAA,EAAS;AACrH,QAAA,OAAO,IAAA;AAAA,MACR;AAGA,MAAA,IAAI,OAAO,SAAA,KAAc,WAAA,IAAe,SAAA,CAAU,SAAA,IAAa,SAAA,CAAU,SAAA,CAAU,WAAA,EAAY,CAAE,KAAA,CAAM,uBAAuB,CAAA,EAAG;AAChI,QAAA,OAAO,KAAA;AAAA,MACR;AAEA,MAAA,IAAI,CAAA;AAKJ,MAAA,OAAQ,OAAO,QAAA,KAAa,WAAA,IAAe,QAAA,CAAS,eAAA,IAAmB,SAAS,eAAA,CAAgB,KAAA,IAAS,QAAA,CAAS,eAAA,CAAgB,KAAA,CAAM,gBAAA;AAAA,MAEtI,OAAO,MAAA,KAAW,WAAA,IAAe,MAAA,CAAO,OAAA,KAAY,MAAA,CAAO,OAAA,CAAQ,OAAA,IAAY,MAAA,CAAO,OAAA,CAAQ,SAAA,IAAa,MAAA,CAAO,OAAA,CAAQ,KAAA,CAAA;AAAA;AAAA,MAG1H,OAAO,SAAA,KAAc,WAAA,IAAe,UAAU,SAAA,KAAc,CAAA,GAAI,UAAU,SAAA,CAAU,WAAA,EAAY,CAAE,KAAA,CAAM,gBAAgB,CAAA,CAAA,IAAM,QAAA,CAAS,EAAE,CAAC,CAAA,EAAG,EAAE,CAAA,IAAK,EAAA;AAAA,MAEpJ,OAAO,SAAA,KAAc,WAAA,IAAe,SAAA,CAAU,SAAA,IAAa,UAAU,SAAA,CAAU,WAAA,EAAY,CAAE,KAAA,CAAM,oBAAoB,CAAA;AAAA,IAC1H;AAQA,IAAA,SAAS,WAAW,IAAA,EAAM;AACzB,MAAA,IAAA,CAAK,CAAC,CAAA,GAAA,CAAK,IAAA,CAAK,SAAA,GAAY,IAAA,GAAO,MAClC,IAAA,CAAK,SAAA,IACJ,IAAA,CAAK,SAAA,GAAY,KAAA,GAAQ,GAAA,CAAA,GAC1B,KAAK,CAAC,CAAA,IACL,IAAA,CAAK,SAAA,GAAY,KAAA,GAAQ,GAAA,CAAA,GAC1B,MAAM,MAAA,CAAO,OAAA,CAAQ,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA;AAExC,MAAA,IAAI,CAAC,KAAK,SAAA,EAAW;AACpB,QAAA;AAAA,MACD;AAEA,MAAA,MAAM,CAAA,GAAI,YAAY,IAAA,CAAK,KAAA;AAC3B,MAAA,IAAA,CAAK,MAAA,CAAO,CAAA,EAAG,CAAA,EAAG,CAAA,EAAG,gBAAgB,CAAA;AAKrC,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,IAAI,KAAA,GAAQ,CAAA;AACZ,MAAA,IAAA,CAAK,CAAC,CAAA,CAAE,OAAA,CAAQ,aAAA,EAAe,CAAA,KAAA,KAAS;AACvC,QAAA,IAAI,UAAU,IAAA,EAAM;AACnB,UAAA;AAAA,QACD;AACA,QAAA,KAAA,EAAA;AACA,QAAA,IAAI,UAAU,IAAA,EAAM;AAGnB,UAAA,KAAA,GAAQ,KAAA;AAAA,QACT;AAAA,MACD,CAAC,CAAA;AAED,MAAA,IAAA,CAAK,MAAA,CAAO,KAAA,EAAO,CAAA,EAAG,CAAC,CAAA;AAAA,IACxB;AAUA,IAAAA,SAAA,CAAQ,GAAA,GAAM,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,QAAQ,MAAM;AAAA,IAAC,CAAA,CAAA;AAQtD,IAAA,SAAS,KAAK,UAAA,EAAY;AACzB,MAAA,IAAI;AACH,QAAA,IAAI,UAAA,EAAY;AACf,UAAAA,SAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAA,EAAS,UAAU,CAAA;AAAA,QAC5C,CAAA,MAAO;AACN,UAAAA,SAAA,CAAQ,OAAA,CAAQ,WAAW,OAAO,CAAA;AAAA,QACnC;AAAA,MACD,SAAS,KAAA,EAAO;AAAA,MAGhB;AAAA,IACD;AAQA,IAAA,SAAS,IAAA,GAAO;AACf,MAAA,IAAI,CAAA;AACJ,MAAA,IAAI;AACH,QAAA,CAAA,GAAIA,SAAA,CAAQ,QAAQ,OAAA,CAAQ,OAAO,KAAKA,SAAA,CAAQ,OAAA,CAAQ,QAAQ,OAAO,CAAA;AAAA,MACxE,SAAS,KAAA,EAAO;AAAA,MAGhB;AAGA,MAAA,IAAI,CAAC,CAAA,IAAK,OAAO,OAAA,KAAY,WAAA,IAAe,SAAS,OAAA,EAAS;AAC7D,QAAA,CAAA,GAAI,QAAQ,GAAA,CAAI,KAAA;AAAA,MACjB;AAEA,MAAA,OAAO,CAAA;AAAA,IACR;AAaA,IAAA,SAAS,YAAA,GAAe;AACvB,MAAA,IAAI;AAGH,QAAA,OAAO,YAAA;AAAA,MACR,SAAS,KAAA,EAAO;AAAA,MAGhB;AAAA,IACD;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,iBAAoBA,SAAO,CAAA;AAE5C,IAAA,IAAM,EAAC,UAAA,EAAU,GAAI,MAAA,CAAO,OAAA;AAM5B,IAAA,UAAA,CAAW,CAAA,GAAI,SAAU,CAAA,EAAG;AAC3B,MAAA,IAAI;AACH,QAAA,OAAO,IAAA,CAAK,UAAU,CAAC,CAAA;AAAA,MACxB,SAAS,KAAA,EAAO;AACf,QAAA,OAAO,iCAAiC,KAAA,CAAM,OAAA;AAAA,MAC/C;AAAA,IACD,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/QA,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,CAAC,IAAA,EAAM,IAAA,GAAO,QAAQ,IAAA,KAAS;AAC/C,MAAA,MAAM,MAAA,GAAS,KAAK,UAAA,CAAW,GAAG,IAAI,EAAA,GAAM,IAAA,CAAK,MAAA,KAAW,CAAA,GAAI,GAAA,GAAM,IAAA;AACtE,MAAA,MAAM,QAAA,GAAW,IAAA,CAAK,OAAA,CAAQ,MAAA,GAAS,IAAI,CAAA;AAC3C,MAAA,MAAM,kBAAA,GAAqB,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA;AAC5C,MAAA,OAAO,QAAA,KAAa,EAAA,KAAO,kBAAA,KAAuB,EAAA,IAAM,QAAA,GAAW,kBAAA,CAAA;AAAA,IACpE,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACPA,IAAA,sBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oFAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AACA,IAAA,IAAM,EAAA,GAAK,UAAQ,IAAI,CAAA;AACvB,IAAA,IAAM,GAAA,GAAM,UAAQ,KAAK,CAAA;AACzB,IAAA,IAAM,OAAA,GAAU,gBAAA,EAAA;AAEhB,IAAA,IAAM,EAAC,KAAG,GAAI,OAAA;AAEd,IAAA,IAAI,cAAA;AACJ,IAAA,IAAI,OAAA,CAAQ,UAAU,CAAA,IACrB,OAAA,CAAQ,WAAW,CAAA,IACnB,OAAA,CAAQ,aAAa,CAAA,IACrB,OAAA,CAAQ,aAAa,CAAA,EAAG;AACxB,MAAA,cAAA,GAAiB,CAAA;AAAA,IAClB,CAAA,MAAA,IAAW,OAAA,CAAQ,OAAO,CAAA,IACzB,OAAA,CAAQ,QAAQ,CAAA,IAChB,OAAA,CAAQ,YAAY,CAAA,IACpB,OAAA,CAAQ,cAAc,CAAA,EAAG;AACzB,MAAA,cAAA,GAAiB,CAAA;AAAA,IAClB;AAEA,IAAA,SAAS,aAAA,GAAgB;AACxB,MAAA,IAAI,iBAAiB,GAAA,EAAK;AACzB,QAAA,IAAI,GAAA,CAAI,gBAAgB,MAAA,EAAQ;AAC/B,UAAA,OAAO,CAAA;AAAA,QACR;AAEA,QAAA,IAAI,GAAA,CAAI,gBAAgB,OAAA,EAAS;AAChC,UAAA,OAAO,CAAA;AAAA,QACR;AAEA,QAAA,OAAO,GAAA,CAAI,WAAA,CAAY,MAAA,KAAW,CAAA,GAAI,CAAA,GAAI,IAAA,CAAK,GAAA,CAAI,MAAA,CAAO,QAAA,CAAS,GAAA,CAAI,WAAA,EAAa,EAAE,GAAG,CAAC,CAAA;AAAA,MAC3F;AAAA,IACD;AAEA,IAAA,SAAS,eAAe,KAAA,EAAO;AAC9B,MAAA,IAAI,UAAU,CAAA,EAAG;AAChB,QAAA,OAAO,KAAA;AAAA,MACR;AAEA,MAAA,OAAO;AAAA,QACN,KAAA;AAAA,QACA,QAAA,EAAU,IAAA;AAAA,QACV,QAAQ,KAAA,IAAS,CAAA;AAAA,QACjB,QAAQ,KAAA,IAAS;AAAA,OAClB;AAAA,IACD;AAEA,IAAA,SAAS,aAAA,CAAc,YAAY,EAAC,WAAA,EAAa,aAAa,IAAA,EAAI,GAAI,EAAC,EAAG;AACzE,MAAA,MAAM,mBAAmB,aAAA,EAAc;AACvC,MAAA,IAAI,qBAAqB,MAAA,EAAW;AACnC,QAAA,cAAA,GAAiB,gBAAA;AAAA,MAClB;AAEA,MAAA,MAAM,UAAA,GAAa,aAAa,cAAA,GAAiB,gBAAA;AAEjD,MAAA,IAAI,eAAe,CAAA,EAAG;AACrB,QAAA,OAAO,CAAA;AAAA,MACR;AAEA,MAAA,IAAI,UAAA,EAAY;AACf,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,IACtB,OAAA,CAAQ,YAAY,CAAA,IACpB,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AAC5B,UAAA,OAAO,CAAA;AAAA,QACR;AAEA,QAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AACzB,UAAA,OAAO,CAAA;AAAA,QACR;AAAA,MACD;AAEA,MAAA,IAAI,UAAA,IAAc,CAAC,WAAA,IAAe,UAAA,KAAe,MAAA,EAAW;AAC3D,QAAA,OAAO,CAAA;AAAA,MACR;AAEA,MAAA,MAAM,MAAM,UAAA,IAAc,CAAA;AAE1B,MAAA,IAAI,GAAA,CAAI,SAAS,MAAA,EAAQ;AACxB,QAAA,OAAO,GAAA;AAAA,MACR;AAEA,MAAA,IAAI,OAAA,CAAQ,aAAa,OAAA,EAAS;AAGjC,QAAA,MAAM,SAAA,GAAY,EAAA,CAAG,OAAA,EAAQ,CAAE,MAAM,GAAG,CAAA;AACxC,QAAA,IACC,MAAA,CAAO,SAAA,CAAU,CAAC,CAAC,CAAA,IAAK,EAAA,IACxB,MAAA,CAAO,SAAA,CAAU,CAAC,CAAC,CAAA,IAAK,KAAA,EACvB;AACD,UAAA,OAAO,OAAO,SAAA,CAAU,CAAC,CAAC,CAAA,IAAK,QAAQ,CAAA,GAAI,CAAA;AAAA,QAC5C;AAEA,QAAA,OAAO,CAAA;AAAA,MACR;AAEA,MAAA,IAAI,QAAQ,GAAA,EAAK;AAChB,QAAA,IAAI,CAAC,QAAA,EAAU,UAAA,EAAY,UAAA,EAAY,WAAA,EAAa,kBAAkB,WAAA,EAAa,OAAO,CAAA,CAAE,IAAA,CAAK,UAAQ,IAAA,IAAQ,GAAG,CAAA,IAAK,GAAA,CAAI,YAAY,UAAA,EAAY;AACpJ,UAAA,OAAO,CAAA;AAAA,QACR;AAEA,QAAA,OAAO,GAAA;AAAA,MACR;AAEA,MAAA,IAAI,sBAAsB,GAAA,EAAK;AAC9B,QAAA,OAAO,+BAAA,CAAgC,IAAA,CAAK,GAAA,CAAI,gBAAgB,IAAI,CAAA,GAAI,CAAA;AAAA,MACzE;AAEA,MAAA,IAAI,GAAA,CAAI,cAAc,WAAA,EAAa;AAClC,QAAA,OAAO,CAAA;AAAA,MACR;AAEA,MAAA,IAAI,kBAAkB,GAAA,EAAK;AAC1B,QAAA,MAAM,OAAA,GAAU,MAAA,CAAO,QAAA,CAAA,CAAU,GAAA,CAAI,oBAAA,IAAwB,EAAA,EAAI,KAAA,CAAM,GAAG,CAAA,CAAE,CAAC,CAAA,EAAG,EAAE,CAAA;AAElF,QAAA,QAAQ,IAAI,YAAA;AAAc,UACzB,KAAK,WAAA;AACJ,YAAA,OAAO,OAAA,IAAW,IAAI,CAAA,GAAI,CAAA;AAAA,UAC3B,KAAK,gBAAA;AACJ,YAAA,OAAO,CAAA;AAAA;AAET,MACD;AAEA,MAAA,IAAI,gBAAA,CAAiB,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AACpC,QAAA,OAAO,CAAA;AAAA,MACR;AAEA,MAAA,IAAI,6DAAA,CAA8D,IAAA,CAAK,GAAA,CAAI,IAAI,CAAA,EAAG;AACjF,QAAA,OAAO,CAAA;AAAA,MACR;AAEA,MAAA,IAAI,eAAe,GAAA,EAAK;AACvB,QAAA,OAAO,CAAA;AAAA,MACR;AAEA,MAAA,OAAO,GAAA;AAAA,IACR;AAEA,IAAA,SAAS,eAAA,CAAgB,MAAA,EAAQ,OAAA,GAAU,EAAC,EAAG;AAC9C,MAAA,MAAM,KAAA,GAAQ,cAAc,MAAA,EAAQ;AAAA,QACnC,WAAA,EAAa,UAAU,MAAA,CAAO,KAAA;AAAA,QAC9B,GAAG;AAAA,OACH,CAAA;AAED,MAAA,OAAO,eAAe,KAAK,CAAA;AAAA,IAC5B;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MAChB,aAAA,EAAe,eAAA;AAAA,MACf,MAAA,EAAQ,gBAAgB,EAAC,KAAA,EAAO,IAAI,MAAA,CAAO,CAAC,GAAE,CAAA;AAAA,MAC9C,MAAA,EAAQ,gBAAgB,EAAC,KAAA,EAAO,IAAI,MAAA,CAAO,CAAC,GAAE;AAAA,KAC/C;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvJA,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0FAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAIA,IAAA,IAAM,GAAA,GAAM,UAAQ,KAAK,CAAA;AACzB,IAAA,IAAM,IAAA,GAAO,UAAQ,MAAM,CAAA;AAM3B,IAAAA,SAAA,CAAQ,IAAA,GAAO,IAAA;AACf,IAAAA,SAAA,CAAQ,GAAA,GAAM,GAAA;AACd,IAAAA,SAAA,CAAQ,UAAA,GAAa,UAAA;AACrB,IAAAA,SAAA,CAAQ,IAAA,GAAO,IAAA;AACf,IAAAA,SAAA,CAAQ,IAAA,GAAO,IAAA;AACf,IAAAA,SAAA,CAAQ,SAAA,GAAY,SAAA;AACpB,IAAAA,SAAA,CAAQ,UAAU,IAAA,CAAK,SAAA;AAAA,MACtB,MAAM;AAAA,MAAC,CAAA;AAAA,MACP;AAAA,KACD;AAMA,IAAAA,SAAA,CAAQ,SAAS,CAAC,CAAA,EAAG,GAAG,CAAA,EAAG,CAAA,EAAG,GAAG,CAAC,CAAA;AAElC,IAAA,IAAI;AAGH,MAAA,MAAM,aAAA,GAAgB,sBAAA,EAAA;AAEtB,MAAA,IAAI,aAAA,IAAA,CAAkB,aAAA,CAAc,MAAA,IAAU,aAAA,EAAe,SAAS,CAAA,EAAG;AACxE,QAAAA,SAAA,CAAQ,MAAA,GAAS;AAAA,UAChB,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,EAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA,GAAA;AAAA,UACA;AAAA,SACD;AAAA,MACD;AAAA,IACD,SAAS,KAAA,EAAO;AAAA,IAEhB;AAQA,IAAAA,SAAA,CAAQ,cAAc,MAAA,CAAO,IAAA,CAAK,QAAQ,GAAG,CAAA,CAAE,OAAO,CAAA,GAAA,KAAO;AAC5D,MAAA,OAAO,UAAA,CAAW,KAAK,GAAG,CAAA;AAAA,IAC3B,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,KAAK,GAAA,KAAQ;AAEvB,MAAA,MAAM,IAAA,GAAO,GAAA,CACX,SAAA,CAAU,CAAC,CAAA,CACX,WAAA,EAAY,CACZ,OAAA,CAAQ,WAAA,EAAa,CAAC,CAAA,EAAG,CAAA,KAAM;AAC/B,QAAA,OAAO,EAAE,WAAA,EAAY;AAAA,MACtB,CAAC,CAAA;AAGF,MAAA,IAAI,GAAA,GAAM,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AACzB,MAAA,IAAI,0BAAA,CAA2B,IAAA,CAAK,GAAG,CAAA,EAAG;AACzC,QAAA,GAAA,GAAM,IAAA;AAAA,MACP,CAAA,MAAA,IAAW,4BAAA,CAA6B,IAAA,CAAK,GAAG,CAAA,EAAG;AAClD,QAAA,GAAA,GAAM,KAAA;AAAA,MACP,CAAA,MAAA,IAAW,QAAQ,MAAA,EAAQ;AAC1B,QAAA,GAAA,GAAM,IAAA;AAAA,MACP,CAAA,MAAO;AACN,QAAA,GAAA,GAAM,OAAO,GAAG,CAAA;AAAA,MACjB;AAEA,MAAA,GAAA,CAAI,IAAI,CAAA,GAAI,GAAA;AACZ,MAAA,OAAO,GAAA;AAAA,IACR,CAAA,EAAG,EAAE,CAAA;AAML,IAAA,SAAS,SAAA,GAAY;AACpB,MAAA,OAAO,QAAA,IAAYA,SAAA,CAAQ,WAAA,GAC1B,OAAA,CAAQA,SAAA,CAAQ,WAAA,CAAY,MAAM,CAAA,GAClC,GAAA,CAAI,MAAA,CAAO,OAAA,CAAQ,MAAA,CAAO,EAAE,CAAA;AAAA,IAC9B;AAQA,IAAA,SAAS,WAAW,IAAA,EAAM;AACzB,MAAA,MAAM,EAAC,SAAA,EAAW,IAAA,EAAM,SAAA,EAAAW,YAAS,GAAI,IAAA;AAErC,MAAA,IAAIA,UAAAA,EAAW;AACd,QAAA,MAAM,IAAI,IAAA,CAAK,KAAA;AACf,QAAA,MAAM,SAAA,GAAY,QAAA,IAAc,CAAA,GAAI,CAAA,GAAI,IAAI,MAAA,GAAS,CAAA,CAAA;AACrD,QAAA,MAAM,MAAA,GAAS,CAAA,EAAA,EAAK,SAAS,CAAA,GAAA,EAAM,IAAI,CAAA,QAAA,CAAA;AAEvC,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,MAAA,GAAS,IAAA,CAAK,CAAC,CAAA,CAAE,KAAA,CAAM,IAAI,CAAA,CAAE,IAAA,CAAK,IAAA,GAAO,MAAM,CAAA;AACzD,QAAA,IAAA,CAAK,IAAA,CAAK,YAAY,IAAA,GAAO,MAAA,CAAO,QAAQ,QAAA,CAAS,IAAA,CAAK,IAAI,CAAA,GAAI,SAAW,CAAA;AAAA,MAC9E,CAAA,MAAO;AACN,QAAA,IAAA,CAAK,CAAC,CAAA,GAAI,OAAA,KAAY,IAAA,GAAO,GAAA,GAAM,KAAK,CAAC,CAAA;AAAA,MAC1C;AAAA,IACD;AAEA,IAAA,SAAS,OAAA,GAAU;AAClB,MAAA,IAAIX,SAAA,CAAQ,YAAY,QAAA,EAAU;AACjC,QAAA,OAAO,EAAA;AAAA,MACR;AACA,MAAA,OAAA,iBAAO,IAAI,IAAA,EAAK,EAAE,WAAA,EAAY,GAAI,GAAA;AAAA,IACnC;AAMA,IAAA,SAAS,OAAO,IAAA,EAAM;AACrB,MAAA,OAAO,OAAA,CAAQ,MAAA,CAAO,KAAA,CAAM,IAAA,CAAK,iBAAA,CAAkBA,UAAQ,WAAA,EAAa,GAAG,IAAI,CAAA,GAAI,IAAI,CAAA;AAAA,IACxF;AAQA,IAAA,SAAS,KAAK,UAAA,EAAY;AACzB,MAAA,IAAI,UAAA,EAAY;AACf,QAAA,OAAA,CAAQ,IAAI,KAAA,GAAQ,UAAA;AAAA,MACrB,CAAA,MAAO;AAGN,QAAA,OAAO,QAAQ,GAAA,CAAI,KAAA;AAAA,MACpB;AAAA,IACD;AASA,IAAA,SAAS,IAAA,GAAO;AACf,MAAA,OAAO,QAAQ,GAAA,CAAI,KAAA;AAAA,IACpB;AASA,IAAA,SAAS,KAAK,KAAA,EAAO;AACpB,MAAA,KAAA,CAAM,cAAc,EAAC;AAErB,MAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAKA,SAAA,CAAQ,WAAW,CAAA;AAC5C,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACrC,QAAA,KAAA,CAAM,WAAA,CAAY,KAAK,CAAC,CAAC,IAAIA,SAAA,CAAQ,WAAA,CAAY,IAAA,CAAK,CAAC,CAAC,CAAA;AAAA,MACzD;AAAA,IACD;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,iBAAoBA,SAAO,CAAA;AAE5C,IAAA,IAAM,EAAC,UAAA,EAAU,GAAI,MAAA,CAAO,OAAA;AAM5B,IAAA,UAAA,CAAW,CAAA,GAAI,SAAU,CAAA,EAAG;AAC3B,MAAA,IAAA,CAAK,WAAA,CAAY,SAAS,IAAA,CAAK,SAAA;AAC/B,MAAA,OAAO,KAAK,OAAA,CAAQ,CAAA,EAAG,IAAA,CAAK,WAAW,EACrC,KAAA,CAAM,IAAI,CAAA,CACV,GAAA,CAAI,SAAO,GAAA,CAAI,IAAA,EAAM,CAAA,CACrB,KAAK,GAAG,CAAA;AAAA,IACX,CAAA;AAMA,IAAA,UAAA,CAAW,CAAA,GAAI,SAAU,CAAA,EAAG;AAC3B,MAAA,IAAA,CAAK,WAAA,CAAY,SAAS,IAAA,CAAK,SAAA;AAC/B,MAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,CAAA,EAAG,IAAA,CAAK,WAAW,CAAA;AAAA,IACxC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtQA,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2FAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAKA,IAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,IAAA,KAAS,cAAc,OAAA,CAAQ,OAAA,KAAY,IAAA,IAAQ,OAAA,CAAQ,MAAA,EAAQ;AAChH,MAAA,MAAA,CAAO,OAAA,GAAU,eAAA,EAAA;AAAA,IAClB,CAAA,MAAO;AACN,MAAA,MAAA,CAAO,OAAA,GAAU,YAAA,EAAA;AAAA,IAClB;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACTA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,KAAA,GAAQ,WAAA,EAAA;AAEd,IAAA,IAAM,QAAA,GAAW,OAAA;AAEjB,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,MAAA,CACvB;AAAA,MACE,YAAY,MAAA,EACZ;AACE,QAAA,IAAI,MAAA,EACJ;AACE,UAAA,IAAA,CAAK,SAAS,KAAA,CAAM,OAAA,CAAQ,GAAG,QAAQ,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAA;AACnD,UAAA,IAAA,CAAK,QAAQ,KAAA,CAAM,OAAA,CAAQ,GAAG,QAAQ,CAAA,MAAA,EAAS,MAAM,CAAA,CAAE,CAAA;AACvD,UAAA,IAAA,CAAK,SAAS,KAAA,CAAM,OAAA,CAAQ,GAAG,QAAQ,CAAA,OAAA,EAAU,MAAM,CAAA,CAAE,CAAA;AAAA,QAC3D,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,QAAQ,CAAA;AACpC,UAAA,IAAA,CAAK,KAAA,GAAQ,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,QAAQ,CAAA,KAAA,CAAO,CAAA;AAC7C,UAAA,IAAA,CAAK,MAAA,GAAS,KAAA,CAAM,OAAA,CAAQ,CAAA,EAAG,QAAQ,CAAA,MAAA,CAAQ,CAAA;AAAA,QACjD;AAEA,QAAA,IAAA,CAAK,MAAA,CAAO,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,KAAK,OAAO,CAAA;AAC3C,QAAA,IAAA,CAAK,KAAA,CAAM,GAAA,GAAM,OAAA,CAAQ,IAAA,CAAK,KAAK,OAAO,CAAA;AAC1C,QAAA,IAAA,CAAK,MAAA,CAAO,GAAA,GAAM,OAAA,CAAQ,KAAA,CAAM,KAAK,OAAO,CAAA;AAAA,MAE9C;AAAA,MAEA,IAAI,KAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzCA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yFAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAI,OAAA,GAAU,OAAO,OAAA,GAAU;AAAA,MAC7B,GAAG,CAAC;AAAA,QACF,IAAA,EAAM,SAAA;AAAA,QACN,GAAA,EAAK;AAAA,OACN,CAAA;AAAA,MACD,GAAG,CAAC;AAAA;AAAA;AAAA,QAGF,IAAA,EAAM,QAAA;AAAA,QACN,GAAA,EAAK,uCAAA;AAAA,QACL,OAAO,CAAC,UAAA,EAAY,aAAa,gBAAA,EAAkB,SAAA,EAAW,SAAS,SAAS,CAAA;AAAA,QAChF,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA;AAAA,MAED,CAAA,EAAG,CAAC,EAAE,IAAA,EAAM,QAAQ,CAAA;AAAA,MACpB,CAAA,EAAG,CAAC,EAAE,IAAA,EAAM,eAAe,CAAA;AAAA,MAC3B,CAAA,EAAG,CAAC,EAAE,IAAA,EAAM,OAAO,CAAA;AAAA,MACnB,CAAA,EAAG,CAAC,EAAE,IAAA,EAAM,SAAS,CAAA;AAAA,MACrB,CAAA,EAAG,CAAC,EAAE,IAAA,EAAM,SAAS,CAAA;AAAA,MACrB,CAAA,EAAG,CAAC,EAAE,IAAA,EAAM,aAAa,CAAA;AAAA;AAAA,MACzB,CAAA,EAAG,CAAC,EAAE,IAAA,EAAM,WAAW,CAAA;AAAA;AAAA;AAAA,MAEvB,GAAG,CAAC;AAAA;AAAA,QAEF,IAAA,EAAM,QAAA;AAAA,QACN,GAAA,EAAK,cAAA;AAAA,QACL,KAAA,EAAO,CAAC,OAAA,EAAS,MAAM,CAAA;AAAA,QACvB,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,MACD,GAAG,CAAC;AAAA;AAAA,QAEF,IAAA,EAAM,YAAA;AAAA,QACN,GAAA,EAAK,kBAAA;AAAA,QACL,KAAA,EAAO,CAAC,SAAA,EAAW,IAAI,CAAA;AAAA,QACvB,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,MACD,GAAG,CAAC;AAAA;AAAA,QAEF,IAAA,EAAM,WAAA;AAAA,QACN,GAAA,EAAK,2BAAA;AAAA,QACL,KAAA,EAAO,CAAC,MAAA,EAAQ,OAAO,CAAA;AAAA,QACvB,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,MACD,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA,QAIF,GAAA,EAAK,iCAAA;AAAA,QACL,KAAA,EAAO,CAAC,MAAA,EAAQ,MAAA,EAAQ,YAAY,UAAU,CAAA;AAAA,QAC9C,MAAA,EAAQ;AAAA,OACT,CAAA;AAAA,MACD,CAAA,EAAG;AAAA,QACD;AAAA;AAAA,UAEE,IAAA,EAAM,KAAA;AAAA,UACN,GAAA,EAAK,wDAAA;AAAA,UACL,KAAA,EAAO,CAAC,SAAA,EAAW,OAAA,EAAS,QAAQ,UAAU,CAAA;AAAA,UAC9C,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAQ,CAAA,CAAE,QAAA,GACN,oBAAA,GACA,CAAA,CAAE,OACA,iBAAA,GACA,cAAA;AAAA,UACR;AAAA,SACF;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAM,MAAA;AAAA,UACN,GAAA,EAAK,uBAAA;AAAA,UACL,KAAA,EAAO,CAAC,SAAA,EAAW,QAAQ,CAAA;AAAA,UAC3B,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,SAAA;AAAA,UACN,GAAA,EAAK,eAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,MAAA;AAAA,UACN,GAAA,EAAK,qCAAA;AAAA,UACL,KAAA,EAAO,CAAC,MAAA,EAAQ,SAAA,EAAW,SAAS,SAAS,CAAA;AAAA,UAC7C,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAQ,CAAA,CAAE,OAAA,IAAW,IAAA,GACjB,oBAAA,GACA,SAAA;AAAA,UACN;AAAA,SACF;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,cAAA;AAAA,UACN,GAAA,EAAK,iCAAA;AAAA,UACL,KAAA,EAAO,CAAC,SAAA,EAAW,OAAO,CAAA;AAAA,UAC1B,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,QAAA;AAAA,UACN,GAAA,EAAK,4CAAA;AAAA,UACL,KAAA,EAAO,CAAC,SAAA,EAAW,MAAA,EAAQ,SAAS,CAAA;AAAA,UACpC,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAQ,CAAA,CAAE,OAAA,IAAW,IAAA,GACjB,kBAAA,GACA,eAAA;AAAA,UACN;AAAA,SACF;AAAA,QACA;AAAA;AAAA;AAAA;AAAA,UAIE,IAAA,EAAM,KAAA;AAAA,UACN,GAAA,EAAK,sFAAA;AAAA,UACL,OAAO,CAAC,OAAA,EAAS,WAAA,EAAa,aAAA,EAAe,OAAO,QAAQ,CAAA;AAAA,UAC5D,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OACE,WAAA,IACC,CAAA,CAAE,SAAA,GAAY,KAAA,GAAQ,IAAA,CAAA,IACtB,CAAA,CAAE,aAAa,CAAA,GAAI,KAAA,GAAQ,IAAA,CAAA,GAC5B,KAAA,IACC,CAAA,CAAE,SAAS,KAAA,GAAQ,EAAA,CAAA;AAAA,UAExB;AAAA,SACF;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,kBAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,QAAA;AAAA,UACN,GAAA,EAAK,yCAAA;AAAA,UACL,KAAA,EAAO,CAAC,IAAA,EAAM,OAAA,EAAS,UAAU,eAAe,CAAA;AAAA,UAChD,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAQ,CAAA,CAAE,aAAA,IAAiB,IAAA,GACvB,oBAAA,GACA,iBAAA;AAAA,UACN;AAAA,SACF;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,OAAA;AAAA,UACN,GAAA,EAAK,cAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,gBAAA;AAAA,UACN,GAAA,EAAK,4BAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,KAAA;AAAA,UACN,GAAA,EAAK,eAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,MAAA;AAAA,UACN,GAAA,EAAK,YAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,OAAA;AAAA,UACN,GAAA,EAAK,wBAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,UAAA;AAAA,UACN,GAAA,EAAK,2BAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,WAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,SAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,UAAA;AAAA,UACN,GAAA,EAAK,kBAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,QAAA;AAAA,UACN,GAAA,EAAK,gBAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,aAAA;AAAA,UACN,GAAA,EAAK,0BAAA;AAAA,UACL,KAAA,EAAO,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,UACtB,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,UAME,IAAA,EAAK,YAAA;AAAA,UACL,GAAA,EAAK,8KAAA;AAAA,UACL,KAAA,EAAO,CAAC,YAAA,EAAc,WAAA,EAAa,aAAa,UAAA,EAAY,IAAA,EAAM,MAAA,EAAQ,MAAA,EAAQ,OAAA,EAAS,OAAA,EAAS,SAAA,EAAW,YAAA,EAAc,cAAc,cAAc,CAAA;AAAA,UACzJ,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,IAAI,GAAA,GAAM,oCAAA;AAEV,YAAA,GAAA,IAAQ,CAAA,CAAE,KAAA,IAAS,IAAA,GAAQ,oBAAA,GAAuB,MAAA;AAGlD,YAAA,GAAA,IAAQ,CAAA,CAAE,OAAA,IAAW,IAAA,GAAQ,aAAA,GAAgB,IAAA;AAE7C,YAAA,IAAI,CAAA,CAAE,cAAc,IAAA,EAAM;AACxB,cAAA,GAAA,IAAO,gBAAA;AAAA,YACT;AAEA,YAAA,GAAA,IAAQ,CAAA,CAAE,YAAY,CAAA,IAAK,IAAA,GAAQ,gBAAA,GAAmB,IAAA;AACtD,YAAA,GAAA,IAAQ,CAAA,CAAE,cAAc,CAAA,IAAK,IAAA,GAAQ,kBAAA,GAAqB,IAAA;AAC1D,YAAA,OAAO,GAAA;AAAA,UACT;AAAA,SACF;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,iBAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,kBAAA;AAAA,UACN,GAAA,EAAK,yBAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,YAAA;AAAA,UACN,GAAA,EAAK,oBAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,OAAA;AAAA,UACN,GAAA,EAAK,iCAAA;AAAA,UACL,KAAA,EAAO,CAAC,IAAA,EAAM,WAAA,EAAa,OAAO,CAAA;AAAA,UAClC,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,IAAI,GAAA,GAAM,SAAA;AACV,YAAA,IAAI,CAAA,CAAE,aAAa,IAAA,EAAM;AACvB,cAAA,GAAA,IAAO,KAAA;AACP,cAAA,IAAI,CAAA,CAAE,SAAS,IAAA,EAAM;AACnB,gBAAA,GAAA,IAAO,KAAA;AAAA,cACT;AAAA,YACF;AACA,YAAA,OAAO,GAAA;AAAA,UACT;AAAA,SACF;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAM,YAAA;AAAA;AAAA,UAEN,GAAA,EAAK,kEAAA;AAAA,UACL,KAAA,EAAO,CAAC,WAAA,EAAa,OAAO,CAAA;AAAA,UAC5B,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,cAAA;AAAA,UACN,GAAA,EAAK,+BAAA;AAAA,UACL,KAAA,EAAO,CAAC,UAAA,EAAY,OAAO,CAAA;AAAA,UAC3B,MAAA,EAAQ;AAAA;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,QAAA;AAAA,UACN,GAAA,EAAK,mBAAA;AAAA,UACL,KAAA,EAAO,CAAC,MAAA,EAAQ,MAAM,CAAA;AAAA,UACtB,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,SAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,WAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,SAAA;AAAA,UACN,GAAA,EAAK,qCAAA;AAAA,UACL,KAAA,EAAO,CAAC,eAAA,EAAiB,KAAA,EAAO,gBAAgB,CAAA;AAAA,UAChD,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAQ,CAAA,CAAE,cAAA,IAAkB,IAAA,GACxB,kBAAA,GACA,eAAA;AAAA,UACN;AAAA,SACF;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,aAAA;AAAA,UACN,GAAA,EAAK,yBAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,MAAA;AAAA,UACN,GAAA,EAAK,qCAAA;AAAA,UACL,KAAA,EAAO,CAAC,IAAA,EAAM,WAAA,EAAa,QAAQ,CAAA;AAAA,UACnC,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAQ,CAAA,CAAE,SAAU,cAAA,GAAiB,WAAA;AAAA,UACvC;AAAA,SACF;AAAA,QACA;AAAA;AAAA;AAAA;AAAA,UAIE,IAAA,EAAM,YAAA;AAAA,UACN,KAAK,IAAI,MAAA;AAAA;AAAA,YAEP;AAAA,WAKF;AAAA,UACA,OAAO,CAAC,IAAA,EAAM,MAAA,EAAQ,QAAA,EAAU,QAAQ,QAAQ,CAAA;AAAA,UAChD,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAO,oBAAA,IAAwB,CAAA,CAAE,IAAA,GAAO,QAAA,GAAW,EAAA,CAAA;AAAA,UACrD;AAAA,SACF;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAM,WAAA;AAAA,UACN,KAAK,IAAI,MAAA;AAAA;AAAA,YAEP;AAAA,WAOF;AAAA,UACA,KAAA,EAAO,CAAC,MAAA,EAAQ,OAAA,EAAS,QAAQ,OAAO,CAAA;AAAA,UACxC,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAO,iBAAA,IAAqB,CAAA,CAAE,IAAA,GAAO,QAAA,GAAW,EAAA,CAAA;AAAA,UAClD;AAAA,SACF;AAAA,QACA;AAAA;AAAA;AAAA;AAAA;AAAA,UAKE,IAAA,EAAM,cAAA;AAAA,UACN,GAAA,EAAK,iCAAA;AAAA,UACL,KAAA,EAAO,CAAC,OAAO,CAAA;AAAA,UACf,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAM,WAAA;AAAA,UACN,GAAA,EAAK,6BAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAM,cAAA;AAAA,UACN,GAAA,EAAK,4DAAA;AAAA,UACL,OAAO,CAAC,YAAA,EAAc,SAAA,EAAW,cAAA,EAAgB,eAAe,SAAS,CAAA;AAAA,UACzE,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,YAAA;AAAA,UACN,GAAA,EAAK;AAAA,SACP;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,OAAA;AAAA,UACN,GAAA,EAAK,aAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAM,UAAA;AAAA,UACN,GAAA,EAAK,mBAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAM,gBAAA;AAAA,UACN,GAAA,EAAK,0BAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAK,aAAA;AAAA,UACL,GAAA,EAAK,iCAAA;AAAA,UACL,KAAA,EAAO,CAAC,QAAA,EAAU,WAAW,CAAA;AAAA,UAC7B,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,OAAO,cAAA,IAAkB,CAAA,CAAE,SAAA,IAAa,IAAA,GAAO,KAAA,GAAQ,EAAA,CAAA;AAAA,UACzD;AAAA,SACF;AAAA,QACA;AAAA;AAAA;AAAA,UAGE,IAAA,EAAK,UAAA;AAAA,UACL,GAAA,EAAK,uEAAA;AAAA,UACL,OAAO,CAAC,IAAA,EAAM,gBAAA,EAAkB,iBAAA,EAAmB,iBAAiB,iBAAiB,CAAA;AAAA,UACrF,MAAA,EAAQ,SAAU,CAAA,EAAG;AACnB,YAAA,IAAI,GAAA,GAAM,WAAA;AACV,YAAA,GAAA,IAAQ,CAAA,CAAE,EAAA,IAAM,IAAA,GAAO,UAAA,GAAa,MAAA;AACpC,YAAA,GAAA,IAAQ,CAAA,CAAE,eAAA,IAAmB,IAAA,GAAO,KAAA,GAAQ,EAAA;AAC5C,YAAA,GAAA,IAAQ,CAAA,CAAE,aAAA,IAAiB,IAAA,GAAO,UAAA,GAAa,EAAA;AAC/C,YAAA,GAAA,IAAQ,CAAA,CAAE,eAAA,IAAmB,IAAA,GAAO,KAAA,GAAQ,EAAA;AAC5C,YAAA,OAAO,GAAA;AAAA,UACT;AAAA,SACF;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,UAAA;AAAA,UACN,GAAA,EAAK,eAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,SAAA;AAAA,UACN,GAAA,EAAK,eAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA;AAAA,QAEA;AAAA;AAAA,UAEE,IAAA,EAAM,eAAA;AAAA,UACN,GAAA,EAAK,gCAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,YAAA;AAAA,UACN,GAAA,EAAK,eAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,YAAA;AAAA,UACN,GAAA,EAAK,eAAA;AAAA,UACL,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,aAAA;AAAA,UACN,GAAA,EAAK,uCAAA;AAAA,UACL,KAAA,EAAO,CAAC,IAAA,EAAM,SAAS,CAAA;AAAA,UACvB,MAAA,EAAQ;AAAA,SACV;AAAA,QACA;AAAA;AAAA,UAEE,IAAA,EAAM,SAAA;AAAA,UACN,KAAA,EAAO,CAAC,OAAO;AAAA;AACjB;AACF,KACF;AAGA,IAAA,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAU,GAAA,EAAK;AAC1C,MAAA,IAAI,IAAA,GAAO,QAAQ,GAAG,CAAA;AACtB,MAAA,IAAA,CAAK,OAAA,CAAQ,SAAU,GAAA,EAAK;AAC1B,QAAA,IAAI,CAAC,IAAI,GAAA,EAAK;AACZ,UAAA,GAAA,CAAI,GAAA,GAAM,MAAA;AAAA,QACZ;AACA,QAAA,IAAI,CAAC,IAAI,MAAA,EAAQ;AACf,UAAA,GAAA,CAAI,MAAA,GAAS,IAAA;AAAA,QACf;AAAA,MACF,CAAC,CAAA;AAAA,IACH,CAAC,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7eD,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wFAAA,CAAAA,SAAA,EAAA;AAAA,IAAA,IAAI,UAAA,GAAa,SAAU,CAAA,EAAG;AAC5B,MAAA,OAAO,MAAA,CAAO,OAAO,CAAC,CAAC,MAAM,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,CAAA;AAAA,IAC/C,CAAA;AAEA,IAAA,IAAI,gBAAA,GAAmB,SAAU,KAAA,EAAO,QAAA,EAAU,OAAO,OAAA,EAAS;AAChE,MAAA,IAAI,OAAA,IAAW,CAAC,KAAA,EAAO;AACrB,QAAA,QAAA,CAAS,OAAO,CAAA,GAAI,UAAA,CAAW,KAAA,CAAM,CAAC,CAAC,CAAA;AAAA,MACzC,CAAA,MACK;AACH,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AACxC,UAAA,IAAI,KAAA,CAAM,CAAA,GAAE,CAAC,CAAA,IAAK,IAAA,EAAM;AACtB,YAAA,QAAA,CAAS,KAAA,CAAM,CAAC,CAAC,CAAA,GAAI,WAAW,KAAA,CAAM,CAAA,GAAE,CAAC,CAAC,CAAA;AAAA,UAC5C;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,QAAA,GAAW,SAAU,GAAA,EAAK,QAAA,EAAU,OAAA,EAAS;AAC/C,MAAA,IAAI,UAAA,GAAa,GAAA,CAAI,IAAA,IAAQ,GAAA,CAAI,KAAA;AACjC,MAAA,IAAI,IAAI,IAAA,IAAQ,CAAC,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG;AACnC,QAAA,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,GAAI,EAAC;AAAA,MACxB,WACS,UAAA,IAAc,CAAC,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,EAAG;AAC1C,QAAA,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,GAAI,EAAC;AAAA,MACxB;AACA,MAAA,IAAI,WAAA,GAAc,GAAA,CAAI,IAAA,GACpB,EAAC;AAAA;AAAA,QACD,UAAA,GAAa,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,GAAI;AAAA,OAAA;AAEpC,MAAA,gBAAA,CAAiB,OAAA,CAAQ,MAAM,GAAA,CAAI,GAAG,GAAG,WAAA,EAAa,GAAA,CAAI,KAAA,EAAO,GAAA,CAAI,IAAI,CAAA;AAEzE,MAAA,IAAI,IAAI,IAAA,EAAM;AACZ,QAAA,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,CAAE,IAAA,CAAK,WAAW,CAAA;AAAA,MACrC;AAAA,IACF,CAAA;AAEA,IAAA,IAAI,OAAA,GAAU,eAAA,EAAA;AACd,IAAA,IAAI,SAAA,GAAY,MAAA,CAAO,SAAA,CAAU,IAAA,CAAK,KAAK,eAAe,CAAA;AAE1D,IAAAA,SAAA,CAAQ,KAAA,GAAQ,SAAU,GAAA,EAAK;AAC7B,MAAA,IAAI,UAAU,EAAC,EACX,KAAA,GAAQ,IACR,QAAA,GAAW,OAAA;AAGf,MAAA,GAAA,CAAI,KAAA,CAAM,cAAc,CAAA,CAAE,MAAA,CAAO,SAAS,CAAA,CAAE,OAAA,CAAQ,SAAU,CAAA,EAAG;AAC/D,QAAA,IAAI,IAAA,GAAO,EAAE,CAAC,CAAA;AACd,QAAA,IAAI,OAAA,GAAU,CAAA,CAAE,KAAA,CAAM,CAAC,CAAA;AACvB,QAAA,IAAI,SAAS,GAAA,EAAK;AAChB,UAAA,KAAA,CAAM,IAAA,CAAK,EAAC,GAAA,EAAK,IAAI,IAAA,EAAM,IAAG,CAAA;AAC9B,UAAA,QAAA,GAAW,KAAA,CAAM,KAAA,CAAM,MAAA,GAAO,CAAC,CAAA;AAAA,QACjC;AAEA,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAA,CAAK,OAAA,CAAQ,IAAI,KAAK,EAAC,EAAG,MAAA,EAAQ,CAAA,IAAK,CAAA,EAAG;AACxD,UAAA,IAAI,GAAA,GAAM,OAAA,CAAQ,IAAI,CAAA,CAAE,CAAC,CAAA;AACzB,UAAA,IAAI,GAAA,CAAI,GAAA,CAAI,IAAA,CAAK,OAAO,CAAA,EAAG;AACzB,YAAA,OAAO,QAAA,CAAS,GAAA,EAAK,QAAA,EAAU,OAAO,CAAA;AAAA,UACxC;AAAA,QACF;AAAA,MACF,CAAC,CAAA;AAED,MAAA,OAAA,CAAQ,KAAA,GAAQ,KAAA;AAChB,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAEA,IAAA,IAAI,YAAA,GAAe,SAAU,GAAA,EAAK,IAAA,EAAM;AACtC,MAAA,IAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,OAAA,EAAS,CAAC,CAAA;AAC7B,MAAA,IAAI,CAAA,CAAE,WAAW,CAAA,EAAG;AAClB,QAAA,GAAA,CAAI,EAAE,CAAC,CAAC,IAAI,UAAA,CAAW,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,MAC7B,WAAW,CAAA,CAAE,MAAA,KAAW,CAAA,IAAK,IAAA,CAAK,SAAS,CAAA,EAAG;AAC5C,QAAA,GAAA,CAAI,CAAA,CAAE,CAAC,CAAC,CAAA,GAAI,MAAA;AAAA,MACd;AACA,MAAA,OAAO,GAAA;AAAA,IACT,CAAA;AAEA,IAAAA,SAAA,CAAQ,WAAA,GAAc,SAAU,GAAA,EAAK;AACnC,MAAA,OAAO,IAAI,KAAA,CAAM,MAAM,EAAE,MAAA,CAAO,YAAA,EAAc,EAAE,CAAA;AAAA,IAClD,CAAA;AAGA,IAAAA,SAAA,CAAQ,kBAAkBA,SAAA,CAAQ,WAAA;AAElC,IAAAA,SAAA,CAAQ,aAAA,GAAgB,SAAU,GAAA,EAAK;AACrC,MAAA,OAAO,IAAI,QAAA,EAAS,CAAE,MAAM,GAAG,CAAA,CAAE,IAAI,MAAM,CAAA;AAAA,IAC7C,CAAA;AAEA,IAAAA,SAAA,CAAQ,qBAAA,GAAwB,SAAU,GAAA,EAAK;AAC7C,MAAA,IAAI,aAAa,EAAC;AAClB,MAAA,IAAI,QAAQ,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA,CAAE,IAAI,UAAU,CAAA;AACzC,MAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AACxC,QAAA,UAAA,CAAW,IAAA,CAAK;AAAA,UACd,SAAA,EAAW,MAAM,CAAC,CAAA;AAAA,UAClB,EAAA,EAAI,KAAA,CAAM,CAAA,GAAI,CAAC,CAAA;AAAA,UACf,IAAA,EAAM,KAAA,CAAM,CAAA,GAAI,CAAC;AAAA,SAClB,CAAA;AAAA,MACH;AACA,MAAA,OAAO,UAAA;AAAA,IACT,CAAA;AAEA,IAAAA,SAAA,CAAQ,oBAAA,GAAuB,SAAU,GAAA,EAAK;AAC5C,MAAA,OAAO,IAAI,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,SAAU,IAAA,EAAM;AACxC,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,IAAA,CAAK,MAAA,GAAO,CAAC,CAAA,CAAE,KAAA,CAAM,GAAG,CAAA,CAAE,MAAA,CAAO,YAAA,EAAc,EAAE,CAAA;AAAA,MAC5E,CAAC,CAAA;AAAA,IACH,CAAA;AAEA,IAAAA,SAAA,CAAQ,wBAAA,GAA2B,SAAU,GAAA,EAAK;AAChD,MAAA,OAAO,IAAI,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,SAAU,MAAA,EAAQ;AAC1C,QAAA,OAAO,OAAO,KAAA,CAAM,GAAG,CAAA,CAAE,GAAA,CAAI,SAAU,MAAA,EAAQ;AAC7C,UAAA,IAAI,MAAM,MAAA,GAAS,KAAA;AAEnB,UAAA,IAAI,MAAA,CAAO,CAAC,CAAA,KAAM,GAAA,EAAK;AACrB,YAAA,IAAA,GAAO,WAAW,MAAM,CAAA;AAAA,UAC1B,CAAA,MAAO;AACL,YAAA,IAAA,GAAO,WAAW,MAAA,CAAO,SAAA,CAAU,CAAA,EAAG,MAAA,CAAO,MAAM,CAAC,CAAA;AACpD,YAAA,MAAA,GAAS,IAAA;AAAA,UACX;AAEA,UAAA,OAAO;AAAA,YACL,IAAA;AAAA,YACA;AAAA,WACF;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAAA,IACH,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3HA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wFAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAI,OAAA,GAAU,eAAA,EAAA;AAGd,IAAA,IAAI,YAAA,GAAe,UAAA;AACnB,IAAA,IAAI,MAAA,GAAS,SAAU,SAAA,EAAW;AAChC,MAAA,IAAI,CAAA,GAAI,CAAA;AACR,MAAA,IAAI,IAAA,GAAO,SAAA;AACX,MAAA,IAAI,MAAM,IAAA,CAAK,MAAA;AACf,MAAA,OAAO,SAAA,CAAU,OAAA,CAAQ,YAAA,EAAc,SAAU,CAAA,EAAG;AAClD,QAAA,IAAI,KAAK,GAAA,EAAK;AACZ,UAAA,OAAO,CAAA;AAAA,QACT;AACA,QAAA,IAAI,GAAA,GAAM,KAAK,CAAC,CAAA;AAChB,QAAA,CAAA,IAAK,CAAA;AACL,QAAA,QAAQ,CAAA;AAAG,UACX,KAAK,IAAA;AACH,YAAA,OAAO,GAAA;AAAA,UACT,KAAK,IAAA;AACH,YAAA,OAAO,OAAO,GAAG,CAAA;AAAA,UACnB,KAAK,IAAA;AACH,YAAA,OAAO,OAAO,GAAG,CAAA;AAAA,UACnB,KAAK,IAAA;AACH,YAAA,OAAO,EAAA;AAAA;AACT,MACF,CAAC,CAAA;AAAA,IAEH,CAAA;AAEA,IAAA,IAAI,QAAA,GAAW,SAAU,IAAA,EAAM,GAAA,EAAK,QAAA,EAAU;AAC5C,MAAA,IAAI,GAAA,GAAM,GAAA,CAAI,MAAA,YAAkB,QAAA,GAC7B,IAAI,MAAA,CAAO,GAAA,CAAI,IAAA,GAAO,QAAA,GAAW,QAAA,CAAS,GAAA,CAAI,IAAI,CAAC,IACpD,GAAA,CAAI,MAAA;AAEN,MAAA,IAAI,IAAA,GAAO,CAAC,IAAA,GAAO,GAAA,GAAM,GAAG,CAAA;AAC5B,MAAA,IAAI,IAAI,KAAA,EAAO;AACb,QAAA,KAAA,IAAS,IAAI,CAAA,EAAG,CAAA,GAAI,IAAI,KAAA,CAAM,MAAA,EAAQ,KAAK,CAAA,EAAG;AAC5C,UAAA,IAAI,CAAA,GAAI,GAAA,CAAI,KAAA,CAAM,CAAC,CAAA;AACnB,UAAA,IAAI,IAAI,IAAA,EAAM;AACZ,YAAA,IAAA,CAAK,KAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,UACjC,CAAA,MACK;AACH,YAAA,IAAA,CAAK,KAAK,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,CAAC,CAAC,CAAC,CAAA;AAAA,UAClC;AAAA,QACF;AAAA,MACF,CAAA,MACK;AACH,QAAA,IAAA,CAAK,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,IAAI,CAAC,CAAA;AAAA,MAC9B;AACA,MAAA,OAAO,MAAA,CAAO,KAAA,CAAM,IAAA,EAAM,IAAI,CAAA;AAAA,IAChC,CAAA;AAIA,IAAA,IAAI,iBAAA,GAAoB;AAAA,MACtB,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MACf,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MACf,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK,GAAA;AAAA,MAAK;AAAA,KACtB;AACA,IAAA,IAAI,iBAAA,GAAoB,CAAC,GAAA,EAAK,GAAA,EAAK,KAAK,GAAG,CAAA;AAG3C,IAAA,MAAA,CAAO,OAAA,GAAU,SAAU,OAAA,EAAS,IAAA,EAAM;AACxC,MAAA,IAAA,GAAO,QAAQ,EAAC;AAEhB,MAAA,IAAI,OAAA,CAAQ,WAAW,IAAA,EAAM;AAC3B,QAAA,OAAA,CAAQ,OAAA,GAAU,CAAA;AAAA,MACpB;AACA,MAAA,IAAI,OAAA,CAAQ,QAAQ,IAAA,EAAM;AACxB,QAAA,OAAA,CAAQ,IAAA,GAAO,GAAA;AAAA,MACjB;AACA,MAAA,OAAA,CAAQ,KAAA,CAAM,OAAA,CAAQ,SAAU,KAAA,EAAO;AACrC,QAAA,IAAI,KAAA,CAAM,YAAY,IAAA,EAAM;AAC1B,UAAA,KAAA,CAAM,QAAA,GAAW,EAAA;AAAA,QACnB;AAAA,MACF,CAAC,CAAA;AAED,MAAA,IAAI,UAAA,GAAa,KAAK,UAAA,IAAc,iBAAA;AACpC,MAAA,IAAI,UAAA,GAAa,KAAK,UAAA,IAAc,iBAAA;AACpC,MAAA,IAAI,MAAM,EAAC;AAGX,MAAA,UAAA,CAAW,OAAA,CAAQ,SAAU,IAAA,EAAM;AACjC,QAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,OAAA,CAAQ,SAAU,GAAA,EAAK;AACnC,UAAA,IAAI,IAAI,IAAA,IAAQ,OAAA,IAAW,QAAQ,GAAA,CAAI,IAAI,KAAK,IAAA,EAAM;AACpD,YAAA,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,OAAO,CAAC,CAAA;AAAA,UACvC,CAAA,MAAA,IACS,IAAI,IAAA,IAAQ,OAAA,IAAW,QAAQ,GAAA,CAAI,IAAI,KAAK,IAAA,EAAM;AACzD,YAAA,OAAA,CAAQ,GAAA,CAAI,IAAI,CAAA,CAAE,OAAA,CAAQ,SAAU,EAAA,EAAI;AACtC,cAAA,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,EAAE,CAAC,CAAA;AAAA,YAClC,CAAC,CAAA;AAAA,UACH;AAAA,QACF,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAGD,MAAA,OAAA,CAAQ,KAAA,CAAM,OAAA,CAAQ,SAAU,KAAA,EAAO;AACrC,QAAA,GAAA,CAAI,IAAA,CAAK,SAAS,GAAA,EAAK,OAAA,CAAQ,EAAE,CAAC,CAAA,EAAG,KAAK,CAAC,CAAA;AAE3C,QAAA,UAAA,CAAW,OAAA,CAAQ,SAAU,IAAA,EAAM;AACjC,UAAA,OAAA,CAAQ,IAAI,CAAA,CAAE,OAAA,CAAQ,SAAU,GAAA,EAAK;AACnC,YAAA,IAAI,IAAI,IAAA,IAAQ,KAAA,IAAS,MAAM,GAAA,CAAI,IAAI,KAAK,IAAA,EAAM;AAChD,cAAA,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,KAAK,CAAC,CAAA;AAAA,YACrC,CAAA,MAAA,IACS,IAAI,IAAA,IAAQ,KAAA,IAAS,MAAM,GAAA,CAAI,IAAI,KAAK,IAAA,EAAM;AACrD,cAAA,KAAA,CAAM,GAAA,CAAI,IAAI,CAAA,CAAE,OAAA,CAAQ,SAAU,EAAA,EAAI;AACpC,gBAAA,GAAA,CAAI,IAAA,CAAK,QAAA,CAAS,IAAA,EAAM,GAAA,EAAK,EAAE,CAAC,CAAA;AAAA,cAClC,CAAC,CAAA;AAAA,YACH;AAAA,UACF,CAAC,CAAA;AAAA,QACH,CAAC,CAAA;AAAA,MACH,CAAC,CAAA;AAED,MAAA,OAAO,GAAA,CAAI,IAAA,CAAK,MAAM,CAAA,GAAI,MAAA;AAAA,IAC5B,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjHA,IAAA,WAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uFAAA,CAAAA,SAAA,EAAA;AAAA,IAAA,IAAI,MAAA,GAAS,cAAA,EAAA;AACb,IAAA,IAAI,MAAA,GAAS,cAAA,EAAA;AACb,IAAA,IAAI,OAAA,GAAU,eAAA,EAAA;AAEd,IAAAA,SAAA,CAAQ,OAAA,GAAU,OAAA;AAClB,IAAAA,SAAA,CAAQ,KAAA,GAAQ,MAAA;AAChB,IAAAA,SAAA,CAAQ,QAAQ,MAAA,CAAO,KAAA;AACvB,IAAAA,SAAA,CAAQ,cAAc,MAAA,CAAO,WAAA;AAC7B,IAAAA,SAAA,CAAQ,kBAAkB,MAAA,CAAO,eAAA;AACjC,IAAAA,SAAA,CAAQ,gBAAgB,MAAA,CAAO,aAAA;AAC/B,IAAAA,SAAA,CAAQ,wBAAwB,MAAA,CAAO,qBAAA;AACvC,IAAAA,SAAA,CAAQ,uBAAuB,MAAA,CAAO,oBAAA;AACtC,IAAAA,SAAA,CAAQ,2BAA2B,MAAA,CAAO,wBAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACZ1C,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,aAAA,GAAgB,WAAA,EAAA;AACtB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,cAAA,GAAiB,sBAAA,EAAA;AACvB,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAEhB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,YAAY,CAAA;AAYtC,IAAA,IAAM,eAAA,GAAN,MAAM,gBAAA,CACN;AAAA,MACE,YAAY,MAAA,EAAQ,IAAA,EAAM,EAAA,EAAI,MAAA,EAAQ,cAAc,IAAA,EACpD;AAEE,QAAA,IAAI,CAAC,MAAA,IAAU,CAAC,IAAA,IAAQ,CAAC,EAAA,EACzB;AACE,UAAA,OAAO,IAAA;AAAA,QACT;AAEA,QAAA,MAAA,GAAS,UAAU,EAAC;AAEpB,QAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,QAAA,IAAA,CAAK,UAAU,EAAC;AAChB,QAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,YAAY,CAAA;AAEjD,QAAA,IAAI,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,aAAA,EAC1B;AACE,UAAA,IAAA,CAAK,eAAe,IAAA,CAAK,YAAA,CAAa,OAAO,IAAA,CAAK,EAAA,CAAG,cAAc,aAAa,CAAA;AAAA,QAClF;AAKA,QAAA,IAAI,OAAO,SAAA,EACX;AACE,UAAA,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,MAAA,CAAO,SAAS,CAAA;AAAA,QAC1C,CAAA,MAAA,IACS,EAAA,CAAG,aAAA,CAAc,mBAAA,EAC1B;AACE,UAAA,IAAA,CAAK,UAAU,OAAA,EAAS,CAAA,CAAA,EAAI,EAAA,CAAG,SAAA,CAAU,OAAO,CAAA,IAAA,CAAM,CAAA;AAAA,QACxD;AAIA,QAAA,IAAA,CAAK,SAAA,CAAU,OAAO,EAAE,CAAA;AAGxB,QAAA,IAAA,CAAK,SAAA,CAAU,cAAA,EAAgB,OAAA,CAAQ,YAAY,CAAA;AAGnD,QAAA,MAAM,MAAA,GAAS,OAAO,MAAA,IAAU,IAAA;AAChC,QAAA,MAAM,YAAY,MAAA,CAAO,MAAA,GAAS,EAAE,GAAA,EAAK,MAAA,CAAO,QAAO,GAAI,IAAA;AAC3D,QAAA,MAAM,kBAAkB,OAAO,MAAA,CAAO,eAAA,KAAoB,WAAA,GAAc,OAAO,eAAA,GAAkB,IAAA;AAEjG,QAAA,IAAA,CAAK,EAAA,GAAK,IAAI,cAAA,CAAe,MAAA,EAAQ,iBAAiB,SAAS,CAAA;AAC/D,QAAA,IAAA,CAAK,SAAA,CAAU,IAAA,EAAM,IAAA,CAAK,EAAA,CAAG,UAAU,CAAA;AAGvC,QAAA,MAAM,QAAA,GAAW,MAAA,CAAO,QAAA,IAAY,EAAA,CAAG,aAAA,CAAc,GAAA;AACrD,QAAA,MAAM,cAAc,EAAE,GAAA,EAAK,OAAO,QAAA,IAAY,KAAA,CAAM,QAAO,EAAE;AAC7D,QAAA,IAAI,YAAA;AAEJ,QAAA,IAAI,OAAO,MAAA,CAAO,iBAAA,KAAsB,WAAA,EACxC;AACE,UAAA,YAAA,GAAe,MAAA,CAAO,iBAAA;AAAA,QACxB,CAAA,MAAA,IACS,EAAA,CAAG,aAAA,CAAc,YAAA,EAC1B;AACE,UAAA,YAAA,GAAe,GAAG,aAAA,CAAc,YAAA;AAAA,QAClC,CAAA,MAEA;AACE,UAAA,YAAA,GAAe,IAAA;AAAA,QACjB;AAEA,QAAA,IAAA,CAAK,IAAA,GAAO,IAAI,cAAA,CAAe,QAAA,EAAU,cAAc,WAAW,CAAA;AAClE,QAAA,IAAA,CAAK,SAAA,CAAU,MAAA,EAAQ,IAAA,CAAK,IAAA,CAAK,UAAU,CAAA;AAG3C,QAAA,MAAM,OAAA,GAAU,OAAO,OAAA,IACpB,EAAA,CAAG,cAAc,QAAA,GAAW,KAAA,CAAM,kBAAkB,EAAE,CAAA;AAEzD,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,SAAA,CAAU,WAAW,OAAO,CAAA;AAGjC,QAAA,MAAM,IAAA,GAAO,OAAO,IAAA,IAAQ,IAAA,CAAK,MAAM,IAAA,CAAK,MAAA,KAAW,GAAK,CAAA;AAE5D,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,UAAU,MAAA,EAAQ,CAAA,EAAG,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAE,CAAA;AAAA,MAC5C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAA,CAAU,MAAM,KAAA,EAChB;AAEE,QAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,SAAS,GAAG,CAAA;AAElD,QAAA,KAAA,IAAS,MAAI,CAAA,EAAG,GAAA,GAAI,IAAA,CAAK,YAAA,CAAa,QAAQ,GAAA,EAAA,EAC9C;AACE,UAAA,IAAI,OAAO,IAAA,CAAK,IAAA,CAAK,YAAA,CAAa,GAAG,CAAC,CAAA,EACtC;AACE,YAAA,IAAA,CAAK,YAAA,CAAa,MAAA,CAAO,GAAA,EAAK,CAAC,CAAA;AAAA,UACjC;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA,GAAK,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAK,KAAA,GAAQ,CAAE,KAAM,CAAA;AAAA,MACjF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,UAAU,IAAA,EACV;AACE,QAAA,MAAM,UAAU,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA;AAElD,QAAA,IAAI,OAAA,EACJ;AACE,UAAA,IAAI,OAAA,CAAQ,CAAC,CAAA,EACb;AACE,YAAA,OAAO,QAAQ,CAAC,CAAA;AAAA,UAClB;AAAA,QACF,CAAA,MAEA;AACE,UAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,SAAS,GAAG,CAAA;AAElD,UAAA,KAAA,MAAW,MAAA,IAAU,KAAK,YAAA,EAC1B;AACE,YAAA,IAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EACtB;AACE,cAAA,OAAO,MAAA,CAAO,UAAU,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,GAAE,CAAC,EAAE,IAAA,EAAK;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAEA,QAAA;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,WAAW,IAAA,EACX;AACE,QAAA,MAAM,UAAU,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA;AAClD,QAAA,MAAM,SAAS,EAAC;AAEhB,QAAA,IAAI,OAAA,EACJ;AACE,UAAA,KAAA,MAAW,UAAU,OAAA,EACrB;AACE,YAAA,MAAA,CAAO,KAAK,MAAM,CAAA;AAAA,UACpB;AAEA,UAAA,OAAO,MAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,SAAS,GAAG,CAAA;AAElD,UAAA,KAAA,MAAW,MAAA,IAAU,KAAK,YAAA,EAC1B;AACE,YAAA,IAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EACtB;AACE,cAAA,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,MAAA,CAAO,OAAA,CAAQ,GAAG,CAAA,GAAE,CAAC,CAAA,CAAE,IAAA,EAAM,CAAA;AAAA,YAC5D;AAAA,UACF;AAEA,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,UAAU,IAAA,EACV;AACE,QAAA,IAAI,KAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA,EACtC;AACE,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA,MAAM,SAAS,IAAI,MAAA,CAAO,CAAA,KAAA,EAAQ,IAAI,SAAS,GAAG,CAAA;AAElD,UAAA,KAAA,MAAW,MAAA,IAAU,KAAK,YAAA,EAC1B;AACE,YAAA,IAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAA,EACtB;AACE,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAEA,QAAA,OAAO,KAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,SAAS,KAAA,EACT;AACE,QAAA,IAAI,CAAC,KAAA,IAAS,IAAA,CAAK,GAAA,EACnB;AACE,UAAA,OAAO,IAAA,CAAK,GAAA;AAAA,QACd,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,GAAA,GAAM,aAAA,CAAc,KAAA,CAAM,IAAA,CAAK,QAAQ,EAAE,CAAA;AAE9C,UAAA,OAAO,IAAA,CAAK,GAAA;AAAA,QACd;AAAA,MACF;AAAA,MAEA,QAAA,GACA;AACE,QAAA,IAAI,MAAM,CAAA,EAAG,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA;AAAA,CAAA;AAErC,QAAA,KAAA,MAAW,UAAA,IAAc,KAAK,OAAA,EAC9B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,OAAA,EAAS,UAAU,CAAA,EACjE;AACE,YAAA,KAAA,MAAW,WAAA,IAAe,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA,EACjD;AACE,cAAA,GAAA,IAAO,CAAA,EAAG,UAAU,CAAA,EAAA,EAAK,WAAW,CAAA;AAAA,CAAA;AAAA,YACtC;AAAA,UACF;AAAA,QACF;AAEA,QAAA,KAAA,MAAW,MAAA,IAAU,KAAK,YAAA,EAC1B;AACE,UAAA,GAAA,IAAO,CAAA,EAAG,MAAA,CAAO,IAAA,EAAM,CAAA;AAAA,CAAA;AAAA,QACzB;AAGA,QAAA,MAAM,YAAY,EAAC;AAEnB,QAAA,QAAQ,KAAK,MAAA;AACb,UACE,KAAK,OAAA,CAAQ,QAAA;AACX,YAAA,SAAA,CAAU,IAAA,CAAK,QAAQ,MAAM,CAAA;AAC7B,YAAA;AAAA,UACF,KAAK,OAAA,CAAQ,MAAA;AACX,YAAA,IAAI,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,cAAA,EAC1B;AACE,cAAA,SAAA,CAAU,KAAK,OAAO,CAAA;AAAA,YACxB;AACA,YAAA,IAAI,KAAK,EAAA,CAAG,OAAA,CAAQ,YAAY,IAAA,CAAK,EAAA,CAAG,QAAQ,SAAA,EAChD;AACE,cAAA,SAAA,CAAU,KAAK,MAAM,CAAA;AAAA,YACvB;AACA,YAAA,SAAA,CAAU,IAAA,CAAK,OAAO,UAAU,CAAA;AAChC,YAAA;AAAA,UACF,KAAK,OAAA,CAAQ,MAAA;AACX,YAAA,IAAI,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,cAAA,EAC1B;AACE,cAAA,SAAA,CAAU,KAAK,OAAO,CAAA;AAAA,YACxB;AACA,YAAA,SAAA,CAAU,KAAK,KAAK,CAAA;AACpB,YAAA;AAAA;AAGJ,QAAA,SAAA,CAAU,KAAK,UAAU,CAAA;AAEzB,QAAA,MAAM,SAAA,GAAY,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,cAAc,OAAA,CAAQ,UAAA;AAG9D,QAAA,GAAA,IAAO,CAAA,OAAA,EAAU,QAAQ,eAAe,CAAA;AAAA,CAAA;AACxC,QAAA,GAAA,IAAO,cAAc,SAAS,CAAA;AAAA,CAAA;AAC9B,QAAA,GAAA,IAAO,eAAe,SAAS,CAAA;AAAA,CAAA;AAE/B,QAAA,IAAI,KAAK,IAAA,EACT;AACE,UAAA,MAAM,MAAA,GAAS,KAAA,CAAM,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA;AAE9C,UAAA,GAAA,IAAO,mBAAmB,MAAM,CAAA;AAAA;AAAA,CAAA;AAChC,UAAA,GAAA,IAAO,IAAA,CAAK,IAAA;AAAA,QACd,CAAA,MAEA;AACE,UAAA,GAAA,IAAO,2BAAA;AAAA,QACT;AAEA,QAAA,OAAO,GAAA;AAAA,MACT;AAAA,MAEA,KAAA,GACA;AACE,QAAA,MAAM,OAAA,GAAU,IAAI,gBAAA,CAAgB,IAAA,CAAK,QAAQ,IAAA,CAAK,IAAA,EAAM,KAAK,EAAE,CAAA;AAEnE,QAAA,MAAA,CAAO,KAAK,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAS,IAAA,EAC3C;AACE,UAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,GAAI,KAAK,OAAA,CAAQ,IAAI,EAAE,KAAA,EAAM;AAAA,QACnD,GAAG,IAAI,CAAA;AAEP,QAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,IAAA;AACpB,QAAA,OAAA,CAAQ,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,YAAY,CAAA;AACzD,QAAA,OAAA,CAAQ,KAAK,IAAA,CAAK,EAAA;AAClB,QAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,IAAA;AACpB,QAAA,OAAA,CAAQ,UAAU,IAAA,CAAK,OAAA;AACvB,QAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,IAAA;AAEpB,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,IAAM,4BAAA,GAAN,MAAM,6BAAA,SAAqC,eAAA,CAC3C;AAAA,MACE,WAAA,CAAY,IAAA,EAAM,EAAA,EAAI,MAAA,EAAQ,cAAc,IAAA,EAC5C;AACE,QAAA,KAAA,CAAM,QAAQ,MAAA,EAAQ,IAAA,EAAM,EAAA,EAAI,MAAA,EAAQ,cAAc,IAAI,CAAA;AAE1D,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,MACrB;AAAA,MAEA,OAAO,MAAA,EACP;AACE,QAAA,IAAA,CAAK,WAAA,CAAY,OAAO,MAAM,CAAA;AAAA,MAChC;AAAA,MAEA,KAAA,GACA;AACE,QAAA,MAAM,UAAU,IAAI,6BAAA,CAA6B,IAAA,CAAK,IAAA,EAAM,KAAK,EAAE,CAAA;AAEnE,QAAA,MAAA,CAAO,KAAK,IAAA,CAAK,OAAO,CAAA,CAAE,OAAA,CAAQ,SAAS,IAAA,EAC3C;AACE,UAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA,GAAI,KAAK,OAAA,CAAQ,IAAI,EAAE,KAAA,EAAM;AAAA,QACnD,GAAG,IAAI,CAAA;AAEP,QAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,IAAA;AACpB,QAAA,OAAA,CAAQ,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,YAAY,CAAA;AACzD,QAAA,OAAA,CAAQ,KAAK,IAAA,CAAK,EAAA;AAClB,QAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,IAAA;AACpB,QAAA,OAAA,CAAQ,UAAU,IAAA,CAAK,OAAA;AACvB,QAAA,OAAA,CAAQ,OAAO,IAAA,CAAK,IAAA;AAEpB,QAAA,OAAA,CAAQ,cAAc,IAAA,CAAK,WAAA;AAE3B,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,KACF;AAEA,IAAA,IAAM,kBAAN,MACA;AAAA,MACE,WAAA,GACA;AACE,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,QAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AACX,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,IAAA,CAAK,EAAA,GAAK,IAAA;AACV,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AAAA,MACb;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,SAAA,CAAU,MAAM,KAAA,EAChB;AACE,QAAA,MAAM,MAAA,GAAS,EAAE,GAAA,EAAK,KAAA,EAAM;AAE5B,QAAA,IAAA,GAAO,KAAA,CAAM,UAAU,IAAI,CAAA;AAE3B,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,EACrB;AACE,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,CAAE,IAAA,CAAK,MAAM,CAAA;AAAA,QAChC,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,GAAI,CAAE,MAAO,CAAA;AAAA,QAChC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,IAAA,EACV;AACE,QAAA,MAAM,SAAS,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA;AAEjD,QAAA,IAAI,MAAA,EACJ;AACE,UAAA,IAAI,MAAA,CAAO,CAAC,CAAA,EACZ;AACE,YAAA,OAAO,MAAA,CAAO,CAAC,CAAA,CAAE,GAAA;AAAA,UACnB;AAAA,QACF,CAAA,MAEA;AACE,UAAA;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,WAAW,IAAA,EACX;AACE,QAAA,MAAM,UAAU,IAAA,CAAK,OAAA,CAAQ,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA;AAClD,QAAA,MAAM,SAAS,EAAC;AAEhB,QAAA,IAAI,CAAC,OAAA,EACL;AACE,UAAA,OAAO,EAAC;AAAA,QACV;AAEA,QAAA,KAAA,MAAW,UAAU,OAAA,EACrB;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,QACxB;AAEA,QAAA,OAAO,MAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,IAAA,EACV;AACE,QAAA,OAAQ,KAAK,OAAA,CAAQ,KAAA,CAAM,UAAU,IAAI,CAAC,IAAK,IAAA,GAAO,KAAA;AAAA,MACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,WAAA,CAAY,IAAA,EAAM,GAAA,GAAM,CAAA,EACxB;AACE,QAAA,IAAA,GAAO,KAAA,CAAM,UAAU,IAAI,CAAA;AAE3B,QAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,EACtB;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,QAAA,EAAW,IAAI,CAAA,aAAA,CAAe,CAAA;AAE3C,UAAA;AAAA,QACF,WACS,GAAA,IAAO,IAAA,CAAK,OAAA,CAAQ,IAAI,EAAE,MAAA,EACnC;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,aAAA,EAAgB,IAAI,CAAA,iBAAA,CAAmB,CAAA;AAEpD,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,IAAI,EAAE,GAAG,CAAA;AACrC,QAAA,MAAM,QAAQ,MAAA,CAAO,GAAA;AAErB,QAAA,IAAI,OAAO,MAAA,EACX;AACE,UAAA,OAAO,MAAA,CAAO,MAAA;AAAA,QAChB;AAGA,QAAA,MAAM,MAAA,GAAS,QAAQ,KAAA,CAAM,KAAA,EAAO,KAAK,OAAA,CAAQ,IAAA,EAAM,GAAG,CAAC,CAAA;AAE3D,QAAA,IAAI,WAAW,EAAA,EACf;AACE,UAAA,IAAA,CAAK,OAAA,CAAQ,IAAI,CAAA,CAAE,MAAA,CAAO,KAAK,CAAC,CAAA;AAChC,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,eAAA,EAAkB,IAAI,CAAA,2BAAA,EAA8B,KAAK,CAAA,CAAA,CAAG,CAAA;AAEzE,UAAA;AAAA,QACF,CAAA,MAEA;AACE,UAAA,MAAA,CAAO,MAAA,GAAS,MAAA;AAEhB,UAAA,OAAO,MAAA;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,CAAA,CAAE,MAAM,GAAA,EACR;AACE,QAAA,OAAO,IAAA,CAAK,WAAA,CAAY,IAAA,EAAM,GAAG,CAAA;AAAA,MACnC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAA,CAAU,MAAM,KAAA,EAChB;AACE,QAAA,MAAM,MAAA,GAAS,EAAE,GAAA,EAAK,KAAA,EAAM;AAE5B,QAAA,IAAA,CAAK,QAAQ,KAAA,CAAM,SAAA,CAAU,IAAI,CAAC,CAAA,GAAI,CAAE,MAAO,CAAA;AAAA,MACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,SAAS,KAAA,EACT;AACE,QAAA,IAAI,CAAC,KAAA,IAAS,IAAA,CAAK,GAAA,EACnB;AACE,UAAA,OAAO,IAAA,CAAK,GAAA;AAAA,QACd,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,GAAA,GAAM,aAAA,CAAc,KAAA,CAAM,IAAA,CAAK,QAAQ,EAAE,CAAA;AAE9C,UAAA,OAAO,IAAA,CAAK,GAAA;AAAA,QACd;AAAA,MACF;AAAA,MAEA,QAAA,GACA;AACE,QAAA,OAAO,IAAA,CAAK,IAAA;AAAA,MACd;AAAA,KACF;AAEA,IAAA,IAAM,eAAA,GAAN,cAA8B,eAAA,CAC9B;AAAA,MACE,YAAY,EAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,QAAA,IAAA,CAAK,UAAU,EAAC;AAChB,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,QAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAAA,MAC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,MAAM,IAAA,EAAM,MAAA,EAAQ,YAAA,EAAc,IAAA,EAAM,WAAW,SAAA,EACnD;AACE,QAAA,MAAM,YAAY,EAAC;AACnB,QAAA,IAAI,EAAA,GAAK,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAE5B,QAAA,IAAA,GAAO,IAAA,IAAQ,IAAA;AACf,QAAA,MAAA,GAAS,MAAA,IAAU,IAAA;AAGnB,QAAA,IAAI,CAAC,IAAA,KAAS,IAAA,GAAO,GAAA,IAAO,OAAO,GAAA,CAAA,EACnC;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAE,CAAA;AAAA,QACpD,WACS,MAAA,IAAU,OAAO,WAAW,QAAA,IAAY,EAAE,kBAAkB,MAAA,CAAA,EACrE;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAE,CAAA;AAAA,QACxD;AAEA,QAAA,MAAA,GAAS,MAAA,IAAU,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,IAAK,EAAA;AAClD,QAAA,YAAA,GAAe,KAAA,CAAM,WAAW,YAAY,CAAA;AAE5C,QAAA,IAAI,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,aAAA,EAC1B;AACE,UAAA,YAAA,GAAe,YAAA,CAAa,MAAA,CAAO,IAAA,CAAK,EAAA,CAAG,cAAc,aAAa,CAAA;AAAA,QACxE;AAEA,QAAA,IAAI,QAAA,GAAW,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA;AAAA,CAAA;AAExC,QAAA,IAAI,KAAK,MAAA,KAAW,OAAA,CAAQ,UAAU,IAAA,GAAO,GAAA,IAAO,QAAQ,GAAA,EAC5D;AACE,UAAA,MAAM,OAAA,GAAU,IAAA,CAAK,UAAA,CAAW,cAAc,CAAA;AAE9C,UAAA,KAAA,MAAW,UAAU,OAAA,EACrB;AACE,YAAA,QAAA,IAAY,iBAAiB,MAAM,CAAA;AAAA,CAAA;AAAA,UACrC;AAAA,QACF;AAEA,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA;AAElC,QAAA,KAAA,MAAW,OAAO,IAAA,EAClB;AACE,UAAA,QAAA,IAAY,QAAQ,GAAG,CAAA;AAAA,CAAA;AAAA,QACzB;AAEA,QAAA,IAAI,CAAC,IAAA,CAAK,MAAA,IAAU,IAAA,GAAO,GAAA,EAC3B;AACE,UAAA,EAAA,IAAM,CAAA,KAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,CAAA,CAAA;AAAA,QAC9B,CAAA,MAAA,IACS,IAAA,CAAK,MAAA,IAAU,CAAC,IAAA,CAAK,EAAE,IAAI,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA,EACpD;AACE,UAAA,EAAA,IAAM,CAAA,KAAA,EAAQ,KAAK,MAAM,CAAA,CAAA;AAAA,QAC3B;AAEA,QAAA,QAAA,IAAY,OAAO,EAAE,CAAA;AAAA,CAAA;AACrB,QAAA,QAAA,IAAY,CAAA,MAAA,EAAS,IAAA,CAAK,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,CAAA;AAC3C,QAAA,QAAA,IAAY,CAAA,SAAA,EAAY,KAAK,OAAO,CAAA;AAAA,CAAA;AACpC,QAAA,QAAA,IAAY,CAAA,MAAA,EAAS,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,KAAK,MAAM,CAAA;AAAA,CAAA;AAE7C,QAAA,KAAA,MAAW,UAAU,YAAA,EACrB;AACE,UAAA,QAAA,IAAY,CAAA,EAAG,MAAA,CAAO,IAAA,EAAM,CAAA;AAAA,CAAA;AAAA,QAC9B;AAGA,QAAA,QAAQ,KAAK,MAAA;AACb,UACE,KAAK,OAAA,CAAQ,MAAA;AACX,YAAA,IAAI,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,cAAA,EAC1B;AACE,cAAA,SAAA,CAAU,KAAK,OAAO,CAAA;AAAA,YACxB;AACA,YAAA,IAAI,KAAK,EAAA,CAAG,OAAA,CAAQ,YAAY,IAAA,CAAK,EAAA,CAAG,QAAQ,SAAA,EAChD;AACE,cAAA,SAAA,CAAU,KAAK,MAAM,CAAA;AAAA,YACvB;AACA,YAAA,SAAA,CAAU,IAAA,CAAK,OAAO,UAAU,CAAA;AAChC,YAAA;AAAA,UACF,KAAK,OAAA,CAAQ,MAAA;AACX,YAAA,IAAI,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,cAAA,EAC1B;AACE,cAAA,SAAA,CAAU,KAAK,OAAO,CAAA;AAAA,YACxB;AACA,YAAA,IAAI,IAAA,EACJ;AACE,cAAA,SAAA,CAAU,KAAK,KAAK,CAAA;AAAA,YACtB;AACA,YAAA,SAAA,CAAU,KAAK,UAAU,CAAA;AAAA;AAG7B,QAAA,SAAA,CAAU,KAAK,UAAU,CAAA;AAGzB,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,OAAA,CAAQ,OAAA,EAC5B;AACE,UAAA,QAAA,IAAY,CAAA,OAAA,EAAU,QAAQ,eAAe,CAAA;AAAA,CAAA;AAC7C,UAAA,QAAA,IAAY,CAAA,QAAA,EAAW,QAAQ,mBAAmB,CAAA;AAAA,CAAA;AAAA,QACpD,CAAA,MAAA,IACS,SAAS,GAAA,EAClB;AACE,UAAA,QAAA,IAAY,CAAA,OAAA,EAAU,QAAQ,eAAe,CAAA;AAAA,CAAA;AAAA,QAC/C,CAAA,MAAA,IACS,SAAS,GAAA,EAClB;AACE,UAAA,QAAA,IAAY,CAAA,QAAA,EAAW,QAAQ,mBAAmB,CAAA;AAAA,CAAA;AAAA,QACpD;AAEA,QAAA,QAAA,IAAY,cAAc,SAAS,CAAA;AAAA,CAAA;AAEnC,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,MAAM,MAAA,GAAS,KAAA,CAAM,eAAA,CAAgB,IAAI,CAAA;AAEzC,UAAA,QAAA,IAAY,mCAAA;AACZ,UAAA,QAAA,IAAY,mBAAmB,MAAM,CAAA;AAAA;AAAA,CAAA;AACrC,UAAA,QAAA,IAAY,IAAA;AAAA,QACd,CAAA,MAEA;AACE,UAAA,QAAA,IAAY,mBAAmB,CAAC,CAAA;AAAA;AAAA,CAAA;AAAA,QAClC;AAEA,QAAA,IAAA,CAAK,kBAAA,CAAmB,eAAA,CAAgB,IAAA,EAAM,QAAA,EAAU,WAAW,SAAS,CAAA;AAAA,MAC9E;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,QAAA,CAAS,IAAA,GAAO,IAAA,EAAM,MAAA,GAAS,IAAA,EAC/B;AACE,QAAA,MAAM,IAAA,GAAO,IAAA,CAAK,UAAA,CAAW,KAAK,CAAA;AAGlC,QAAA,IAAI,CAAC,IAAA,KAAS,IAAA,GAAO,GAAA,IAAO,OAAO,GAAA,CAAA,EACnC;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,IAAI,CAAA,CAAE,CAAA;AAAA,QACpD,WACS,MAAA,IAAU,OAAO,WAAW,QAAA,IAAY,EAAE,kBAAkB,MAAA,CAAA,EACrE;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,uBAAA,EAA0B,MAAM,CAAA,CAAE,CAAA;AAAA,QACxD;AAEA,QAAA,MAAA,GAAS,MAAA,IAAU,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,IAAK,EAAA;AAElD,QAAA,IAAI,QAAA,GAAW,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA;AAAA,CAAA;AAExC,QAAA,KAAA,MAAW,OAAO,IAAA,EAClB;AACE,UAAA,QAAA,IAAY,QAAQ,GAAG,CAAA;AAAA,CAAA;AAAA,QACzB;AAEA,QAAA,IAAI,EAAA,GAAK,IAAA,CAAK,SAAA,CAAU,IAAI,CAAA;AAE5B,QAAA,IAAI,CAAC,IAAA,CAAK,MAAA,IAAU,IAAA,GAAO,GAAA,EAC3B;AACE,UAAA,EAAA,IAAM,CAAA,KAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,CAAA,CAAA;AAAA,QAC9B,CAAA,MAAA,IACS,IAAA,CAAK,MAAA,IAAU,CAAC,IAAA,CAAK,EAAE,IAAI,CAAA,CAAE,QAAA,CAAS,KAAK,CAAA,EACpD;AACE,UAAA,EAAA,IAAM,CAAA,KAAA,EAAQ,KAAK,MAAM,CAAA,CAAA;AAAA,QAC3B;AAEA,QAAA,QAAA,IAAY,OAAO,EAAE,CAAA;AAAA,CAAA;AACrB,QAAA,QAAA,IAAY,CAAA,MAAA,EAAS,IAAA,CAAK,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,CAAA;AAC3C,QAAA,QAAA,IAAY,CAAA,SAAA,EAAY,KAAK,OAAO,CAAA;AAAA,CAAA;AACpC,QAAA,QAAA,IAAY,CAAA,MAAA,EAAS,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,KAAK,MAAM,CAAA;AAAA,CAAA;AAE7C,QAAA,IAAI,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,aAAA,EAC1B;AACE,UAAA,KAAA,MAAW,MAAA,IAAU,IAAA,CAAK,EAAA,CAAG,aAAA,CAAc,aAAA,EAC3C;AACE,YAAA,QAAA,IAAY,CAAA,EAAG,MAAA,CAAO,IAAA,EAAM,CAAA;AAAA,CAAA;AAAA,UAC9B;AAAA,QACF;AAEA,QAAA,QAAA,IAAY,mBAAmB,CAAC,CAAA;AAAA;AAAA,CAAA;AAEhC,QAAA,IAAA,CAAK,SAAA,CAAU,KAAK,QAAQ,CAAA;AAAA,MAC9B;AAAA,KACF;AAEA,IAAA,IAAM,gBAAA,GAAN,cAA+B,eAAA,CAC/B;AAAA,MACE,WAAA,GACA;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,UAAU,EAAC;AAChB,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAAA,MACvB;AAAA,KACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,eAAA;AAAA,MACA,4BAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/wBA,IAAA,4BAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sFAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,sBAAsB,CAAA;AAEhD,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,oBAAA,CACvB;AAAA,MACE,YAAY,WAAA,EACZ;AACE,QAAA,IAAA,CAAK,YAAA,GAAe,WAAA;AACpB,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,GAAA,GAAM,CAAA;AACX,QAAA,IAAA,CAAK,MAAA,GAAS,UAAA;AACd,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAAA,MACnB;AAAA,MAEA,IAAI,SAAA,EACJ;AACE,QAAA,QAAQ,SAAA;AACR,UACE,KAAK,OAAA;AACH,YAAA,OAAO,IAAA,CAAK,MAAA;AAAA,UAEd,KAAK,KAAA;AACH,YAAA,OAAO,IAAA,CAAK,IAAA;AAAA,UAEd;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,qCAAqC,SAAS,CAAA;AAE1D,YAAA,OAAO,MAAA;AAAA;AACX,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,YAAA,CAAa,EAAE,MAAA,EAAQ,IAAA,EAAM,MAAK,EAAG,SAAA,EAAW,SAAS,IAAA,EACzD;AACE,QAAA,IAAA,CAAK,aAAa,SAAA,CAAU,SAAA;AAC5B,QAAA,IAAA,CAAK,SAAS,SAAA,CAAU,KAAA;AACxB,QAAA,IAAA,CAAK,SAAS,SAAA,CAAU,KAAA;AACxB,QAAA,IAAA,CAAK,UAAU,SAAA,CAAU,MAAA;AACzB,QAAA,IAAA,CAAK,SAAS,SAAA,CAAU,KAAA;AAExB,QAAA,IAAI,KAAK,UAAA,EACT;AACE,UAAA,IAAI,IAAA,CAAK,eAAe,KAAA,EACxB;AACE,YAAA,MAAA,CAAO,KAAK,+FAA+F,CAAA;AAE3G,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAAA,QACpB;AAEA,QAAA,IAAI,CAAC,KAAK,MAAA,EACV;AACE,UAAA,MAAA,CAAO,KAAK,yEAAyE,CAAA;AAErF,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAI,CAAC,KAAK,MAAA,EACV;AACE,UAAA,MAAA,CAAO,KAAK,yEAAyE,CAAA;AAErF,UAAA,OAAO,KAAA;AAAA,QACT;AAGA,QAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,QAAA,EACvB;AAEE,UAAA,IAAI,CAAC,IAAA,CAAK,YAAA,CAAa,GAAA,EACvB;AACE,YAAA,MAAA,CAAO,KAAK,iFAAiF,CAAA;AAE7F,YAAA,OAAO,KAAA;AAAA,UACT;AAGA,UAAA,IAAI,IAAA,CAAK,YAAA,CAAa,KAAA,KAAU,IAAA,CAAK,MAAA,EACrC;AACE,YAAA,MAAA,CAAO,KAAK,4IAAA,EAA8I,IAAA,CAAK,YAAA,CAAa,KAAA,EAAO,KAAK,MAAM,CAAA;AAE9L,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAGA,QAAA,IAAI,UAAU,GAAA,EACd;AACE,UAAA,IAAI,SAAA,CAAU,GAAA,CAAI,OAAA,CAAQ,UAAU,IAAI,EAAA,EACxC;AACE,YAAA,IAAA,CAAK,IAAA,GAAO,UAAA;AAAA,UACd,WACS,SAAA,CAAU,GAAA,CAAI,OAAA,CAAQ,MAAM,IAAI,EAAA,EACzC;AACE,YAAA,IAAA,CAAK,IAAA,GAAO,MAAA;AAAA,UACd,CAAA,MAEA;AAEE,YAAA,MAAA,CAAO,KAAK,2GAA2G,CAAA;AAEvH,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AAAA,QACd;AAIA,QAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,QAAA,IAAA,CAAK,IAAA,GAAO,IAAA;AACZ,QAAA,IAAA,CAAK,OAAA,GAAU,MAAA,IAAU,KAAA,CAAM,iBAAA,CAAkB,EAAE,CAAA;AACnD,QAAA,IAAA,CAAK,GAAA,IAAO,CAAA;AACZ,QAAA,MAAM,MAAM,MAAA,CAAO,IAAA,CAAK,GAAG,CAAA,CAAE,SAAS,EAAE,CAAA;AAExC,QAAA,IAAA,CAAK,SAAS,UAAA,CAAW,MAAA,CAAO,GAAG,CAAA,GAAE,GAAA,CAAI,MAAM,CAAA,GAAI,GAAA;AAGnD,QAAA,IAAI,IAAA,CAAK,QAAQ,UAAA,EACjB;AACE,UAAA,IAAA,CAAK,GAAA,GAAM,CAAA;AACX,UAAA,IAAA,CAAK,MAAA,GAAS,UAAA;AAAA,QAChB;AAKA,QAAA,IAAI,IAAA,CAAK,aAAa,QAAA,EACtB;AAEE,UAAA,IAAA,CAAK,IAAA,GAAO,KAAA,CAAM,YAAA,CAAa,CAAA,EAAG,KAAK,YAAA,CAAa,QAAQ,CAAA,CAAA,EAAI,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,IAAA,CAAK,YAAA,CAAa,QAAQ,CAAA,CAAE,CAAA;AAAA,QAC7G,CAAA,MAGA;AACE,UAAA,IAAA,CAAK,IAAA,GAAO,KAAK,YAAA,CAAa,GAAA;AAAA,QAChC;AAEA,QAAA,IAAI,EAAA;AACJ,QAAA,IAAI,GAAA;AAEJ,QAAA,IAAI,IAAA,CAAK,SAAS,MAAA,EAClB;AAEE,UAAA,EAAA,GAAK,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,CAAA;AACjC,UAAA,GAAA,GAAM,KAAA,CAAM,aAAa,EAAE,CAAA;AAE3B,UAAA,MAAA,CAAO,KAAA,CAAM,6CAA6C,EAAE,CAAA;AAG5D,UAAA,IAAA,CAAK,YAAY,KAAA,CAAM,YAAA,CAAa,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,KAAK,MAAM,CAAA,CAAA,EAAI,KAAK,OAAO,CAAA,MAAA,EAAS,GAAG,CAAA,CAAE,CAAA;AAAA,QAE9G,CAAA,MAAA,IACS,IAAA,CAAK,IAAA,KAAS,UAAA,EACvB;AAEE,UAAA,EAAA,GAAK,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,KAAA,CAAM,YAAA,CAAa,IAAA,GAAO,IAAA,GAAO,EAAE,CAAC,CAAA,CAAA;AACzE,UAAA,GAAA,GAAM,KAAA,CAAM,aAAa,EAAE,CAAA;AAE3B,UAAA,MAAA,CAAO,KAAA,CAAM,iDAAiD,EAAE,CAAA;AAGhE,UAAA,IAAA,CAAK,YAAY,KAAA,CAAM,YAAA,CAAa,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,KAAK,MAAM,CAAA,CAAA,EAAI,KAAK,OAAO,CAAA,UAAA,EAAa,GAAG,CAAA,CAAE,CAAA;AAAA,QAElH,CAAA,MAAA,IACS,IAAA,CAAK,IAAA,KAAS,IAAA,EACvB;AAEE,UAAA,EAAA,GAAK,CAAA,EAAG,IAAA,CAAK,OAAO,CAAA,CAAA,EAAI,KAAK,IAAI,CAAA,CAAA;AACjC,UAAA,GAAA,GAAM,KAAA,CAAM,aAAa,EAAE,CAAA;AAE3B,UAAA,MAAA,CAAO,KAAA,CAAM,6CAA6C,EAAE,CAAA;AAG5D,UAAA,IAAA,CAAK,SAAA,GAAY,KAAA,CAAM,YAAA,CAAa,CAAA,EAAG,IAAA,CAAK,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,MAAM,CAAA,CAAA,EAAI,GAAG,CAAA,CAAE,CAAA;AAAA,QAC1E;AAEA,QAAA,MAAA,CAAO,MAAM,qCAAqC,CAAA;AAElD,QAAA,OAAO,IAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GACA;AACE,QAAA,MAAM,cAAc,EAAC;AAErB,QAAA,IAAI,CAAC,KAAK,SAAA,EACV;AACE,UAAA,MAAM,IAAI,MAAM,qEAAqE,CAAA;AAAA,QACvF;AAEA,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,UAAA,EAAa,IAAA,CAAK,UAAU,CAAA,CAAE,CAAA;AAC/C,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,UAAA,EAAa,IAAA,CAAK,YAAA,CAAa,QAAQ,CAAA,CAAA,CAAG,CAAA;AAC3D,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA,CAAA,CAAG,CAAA;AACzC,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,OAAA,EAAU,IAAA,CAAK,MAAM,CAAA,CAAA,CAAG,CAAA;AACzC,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,KAAA,EAAQ,IAAA,CAAK,IAAI,CAAA,CAAA,CAAG,CAAA;AACrC,QAAA,WAAA,CAAY,IAAA,CAAK,CAAA,UAAA,EAAa,IAAA,CAAK,SAAS,CAAA,CAAA,CAAG,CAAA;AAC/C,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA,WAAA,CAAY,IAAA,CAAK,CAAA,QAAA,EAAW,IAAA,CAAK,OAAO,CAAA,CAAA,CAAG,CAAA;AAAA,QAC7C;AACA,QAAA,IAAI,KAAK,IAAA,EACT;AACE,UAAA,WAAA,CAAY,IAAA,CAAK,CAAA,IAAA,EAAO,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AACnC,UAAA,WAAA,CAAY,IAAA,CAAK,CAAA,QAAA,EAAW,IAAA,CAAK,OAAO,CAAA,CAAA,CAAG,CAAA;AAC3C,UAAA,WAAA,CAAY,IAAA,CAAK,CAAA,GAAA,EAAM,IAAA,CAAK,MAAM,CAAA,CAAE,CAAA;AAAA,QACtC;AAEA,QAAA,OAAO,CAAA,OAAA,EAAU,WAAA,CAAY,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,MACzC;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACzOA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,EAAA,GAAK,GAAA;AAAX,IAAA,IAAgB,EAAA,GAAK,GAAA;AAArB,IAAA,IAA2B,EAAA,GAAK,GAAA;AAEhC,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,EAAA;AAAA,MACA,EAAA;AAAA,MACA,EAAA;AAAA,MACA,SAAgC,EAAA,GAAK,EAAA;AAAA,MACrC,SAAgC,CAAA,GAAI,EAAA;AAAA,MACpC,SAAgC,EAAA,GAAK,EAAA;AAAA,MACrC,SAAgC,EAAA,GAAK,EAAA;AAAA,MACrC,SAAgC,CAAA,GAAI,EAAA;AAAA,MACpC,SAAgC,CAAA,GAAI,EAAA;AAAA,MACpC,SAAgC,CAAA,GAAI,EAAA;AAAA,MACpC,SAAgC,EAAA,GAAK,EAAA;AAAA,MACrC,SAAgC,EAAA,GAAK,EAAA;AAAA,MACrC,6BAAA,EAAgC;AAAA;AAAA,KAClC;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChBA,IAAA,oBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,8EAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AAEf,IAAA,IAAM,UAAA,GAAa,IAAI,MAAA,CAAO,4BAA4B,CAAA;AAC1D,IAAA,IAAM,SAAA,GAAY,IAAI,MAAA,CAAO,yBAAyB,CAAA;AACtD,IAAA,IAAM,SAAA,GAAY,IAAI,MAAA,CAAO,sBAAsB,CAAA;AACnD,IAAA,IAAM,UAAA,GAAa,IAAI,MAAA,CAAO,4BAA4B,CAAA;AAC1D,IAAA,IAAM,SAAA,GAAY,IAAI,MAAA,CAAO,yBAAyB,CAAA;AAEtD,IAAA,IAAM,CAAA,GAAI;AAAA;AAAA,MAER,aAAA,EAAoB,CAAA;AAAA,MACpB,iBAAA,EAAoB,CAAA;AAAA,MACpB,cAAA,EAAoB,CAAA;AAAA,MACpB,eAAA,EAAoB,CAAA;AAAA,MACpB,gBAAA,EAAoB,CAAA;AAAA,MACpB,iBAAA,EAAoB,CAAA;AAAA,MACpB,gBAAA,EAAoB,CAAA;AAAA;AAAA,MAGpB,iBAAA,EAAoB,MAAA;AAAA,MACpB,iBAAA,EAAoB,MAAA;AAAA,MACpB,aAAA,EAAoB,KAAA;AAAA,MACpB,aAAA,EAAoB;AAAA,KACtB;AAEA,IAAA,IAAM,0BAAA,GAAN,cAAyCA,aAAAA,CACzC;AAAA,MACE,WAAA,CAAY,EAAA,EAAI,SAAA,EAAW,OAAA,EAAS,aAAA,EACpC;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,OAAO,CAAA,CAAE,iBAAA;AACd,QAAA,IAAA,CAAK,EAAA,GAAK,UAAU,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAI,GAAQ,CAAC,CAAA,CAAA;AACxD,QAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AAErB,QAAA,IAAI,GAAA,GAAM,CAAA,QAAA,EAAW,SAAA,CAAU,aAAa,CAAA,CAAA;AAE5C,QAAA,GAAA,IAAO,IAAI,EAAA,CAAG,aAAA,CAAc,QAAQ,CAAA,QAAA,EAAW,KAAK,EAAE,CAAA,CAAA;AAEtD,QAAA,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,KAAA,EAAO,GAAG,CAAA;AAEjC,QAAA,IAAA,CAAK,EAAA,CAAG,eAAe,IAAI,CAAA;AAAA,MAC7B;AAAA,MAEA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,aAAa,KAAA,EACb;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,KAAK,cAAc,CAAA;AAAA,MAC1B;AAAA,MAEA,IAAA,GACA;AACE,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,aAAa,CAAA;AACjC,QAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MAAM;AAAE,UAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,QAAG,CAAA,EAAG,OAAO,OAAO,CAAA;AAE7D,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA,EACrC;AACE,UAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,QACxB;AAAA,MACF;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,UAAA,CAAW,KAAA,CAAM,CAAA,+CAAA,EAAkD,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAC5E,QAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,QAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAC/B,QAAA,IAAA,CAAK,cAAc,gBAAA,EAAiB;AAAA,MACtC;AAAA,MAEA,OAAA,GACA;AACE,QAAA,UAAA,CAAW,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAC7D,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAC/B,QAAA,IAAA,CAAK,cAAc,gBAAA,EAAiB;AAAA,MACtC;AAAA,MAEA,OAAA,GACA;AACE,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,MACjC;AAAA,MAEA,gBAAgB,QAAA,EAChB;AACE,QAAA,MAAM,cAAc,QAAA,CAAS,WAAA;AAE7B,QAAA,IAAI,cAAc,GAAA,EAClB;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,aAAA;AAAA,YACP,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,cAAA,IAAA,CAAK,aAAA,CAAc,kBAAkB,QAAQ,CAAA;AAC7C,cAAA;AAAA;AACJ,QACF,CAAA,MAEA;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,aAAA;AAAA,YACP,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,gBAAgB,CAAA;AACpC,cAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AAEnB,cAAA,IAAI,gBAAgB,GAAA,EACpB;AACE,gBAAA,IAAA,CAAK,cAAc,gBAAA,EAAiB;AAAA,cACtC,CAAA,MAEA;AACE,gBAAA,IAAA,CAAK,aAAA,CAAc,kBAAkB,QAAQ,CAAA;AAAA,cAC/C;AAEA,cAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MAAM;AAAE,gBAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,cAAG,CAAA,EAAG,OAAO,OAAO,CAAA;AAC7D,cAAA;AAAA,YACF,KAAK,CAAA,CAAE,gBAAA;AACL,cAAA;AAAA;AACJ,QACF;AAAA,MACF;AAAA,KACF;AAEA,IAAA,IAAM,uBAAA,GAAN,cAAsCA,aAAAA,CACtC;AAAA,MACE,WAAA,CAAY,EAAA,EAAI,SAAA,EAAW,OAAA,EAAS,aAAA,EACpC;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,OAAO,CAAA,CAAE,aAAA;AACd,QAAA,IAAA,CAAK,EAAA,GAAK,UAAU,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAI,GAAQ,CAAC,CAAA,CAAA;AACxD,QAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AACrB,QAAA,OAAA,CAAQ,WAAA,GAAc,IAAA;AAEtB,QAAA,IAAI,GAAA,GAAM,CAAA,QAAA,EAAW,SAAA,CAAU,aAAa,CAAA,CAAA;AAE5C,QAAA,GAAA,IAAO,IAAI,EAAA,CAAG,aAAA,CAAc,QAAQ,CAAA,QAAA,EAAW,KAAK,EAAE,CAAA,CAAA;AAEtD,QAAA,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,KAAA,EAAO,GAAG,CAAA;AAEjC,QAAA,IAAA,CAAK,EAAA,CAAG,eAAe,IAAI,CAAA;AAAA,MAC7B;AAAA,MAEA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,aAAa,KAAA,EACb;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,KAAK,cAAc,CAAA;AAAA,MAC1B;AAAA,MAEA,IAAA,GACA;AACE,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,cAAc,CAAA;AAClC,QAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MACpB;AACE,UAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,QACf,CAAA,EAAG,OAAO,OAAO,CAAA;AAEjB,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA,EACrC;AACE,UAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,QACxB;AAAA,MACF;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,QAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,QAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AAEnB,QAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,eAAA,EACrB;AACE,UAAA,SAAA,CAAU,KAAA,CAAM,CAAA,+CAAA,EAAkD,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAC3E,UAAA,IAAA,CAAK,cAAc,gBAAA,EAAiB;AAAA,QACtC;AAEA,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,MACjC;AAAA;AAAA,MAGA,OAAA,GACA;AACE,QAAA,SAAA,CAAU,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAE5D,QAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,eAAA,EACrB;AACE,UAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,UAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,UAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,QACjC;AAAA,MACF;AAAA;AAAA,MAGA,OAAA,GACA;AACE,QAAA,SAAA,CAAU,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAC5D,QAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,cAAA,EACrB;AACE,UAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,UAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAC/B,UAAA,IAAA,CAAK,cAAc,gBAAA,EAAiB;AAAA,QACtC;AAAA,MACF;AAAA,MAEA,OAAA,GACA;AACE,QAAA,SAAA,CAAU,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAC5D,QAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,MACjC;AAAA,MAEA,QAAQ,QAAA,EACR;AACE,QAAA,MAAM,GAAA,GAAM,IAAI,UAAA,CAAW,eAAA;AAAA,UAAgB,OAAA,CAAQ,GAAA;AAAA,UAAK,KAAK,OAAA,CAAQ,IAAA;AAAA,UACnE,IAAA,CAAK,EAAA;AAAA,UAAI;AAAA,YACP,WAAA,EAAc,IAAA,CAAK,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA;AAAA,YAC7C,SAAA,EAAc,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AAAA,YAC9C,MAAA,EAAc,KAAK,OAAA,CAAQ;AAAA;AAC7B,SAAC;AAEH,QAAA,GAAA,CAAI,UAAU,MAAA,EAAQ,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAC,CAAA;AACpD,QAAA,GAAA,CAAI,UAAU,KAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAC,CAAA;AAClD,QAAA,GAAA,CAAI,SAAA,CAAU,IAAA,EAAM,QAAA,CAAS,SAAA,CAAU,IAAI,CAAC,CAAA;AAE5C,QAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MAAM;AAAE,UAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,QAAG,CAAA,EAAG,OAAO,OAAO,CAAA;AAE7D,QAAA,IAAA,CAAK,SAAA,CAAU,KAAK,GAAG,CAAA;AAAA,MACzB;AAAA,MAEA,OAAO,MAAA,EACP;AAEE,QAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,iBAAA,EACrB;AACE,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,MAAA,GAAS,IAAI,UAAA,CAAW,eAAA;AAAA,UAAgB,OAAA,CAAQ,MAAA;AAAA,UAAQ,KAAK,OAAA,CAAQ,IAAA;AAAA,UACzE,IAAA,CAAK,EAAA;AAAA,UAAI;AAAA,YACP,WAAA,EAAc,IAAA,CAAK,OAAA,CAAQ,UAAA,CAAW,OAAO,CAAA;AAAA,YAC7C,SAAA,EAAc,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA;AAAA,YAC9C,MAAA,EAAc,KAAK,OAAA,CAAQ;AAAA;AAC7B,SAAC;AAEH,QAAA,MAAA,CAAO,UAAU,MAAA,EAAQ,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAC,CAAA;AACvD,QAAA,MAAA,CAAO,UAAU,KAAA,EAAO,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,KAAK,CAAC,CAAA;AACrD,QAAA,MAAA,CAAO,UAAU,IAAA,EAAM,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,IAAI,CAAC,CAAA;AAEnD,QAAA,IAAI,MAAA,EACJ;AACE,UAAA,MAAA,CAAO,SAAA,CAAU,UAAU,MAAM,CAAA;AAAA,QACnC;AAEA,QAAA,IAAA,CAAK,SAAA,CAAU,KAAK,MAAM,CAAA;AAAA,MAC5B;AAAA,MAEA,gBAAgB,QAAA,EAChB;AACE,QAAA,MAAM,cAAc,QAAA,CAAS,WAAA;AAE7B,QAAA,IAAI,WAAA,IAAe,GAAA,IAAO,WAAA,IAAe,GAAA,EACzC;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,cAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,cAAA,IAAA,CAAK,aAAA,CAAc,kBAAkB,QAAQ,CAAA;AAC7C,cAAA;AAAA,YACF,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,aAAA,CAAc,kBAAkB,QAAQ,CAAA;AAC7C,cAAA;AAAA;AACJ,QACF,CAAA,MAAA,IACS,WAAA,IAAe,GAAA,IAAO,WAAA,IAAe,GAAA,EAC9C;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,cAAA;AAAA,YACP,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,eAAe,CAAA;AACnC,cAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MACpB;AACE,gBAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,cACf,CAAA,EAAG,OAAO,OAAO,CAAA;AACjB,cAAA,IAAA,CAAK,aAAA,CAAc,kBAAkB,QAAQ,CAAA;AAC7C,cAAA;AAAA,YACF,KAAK,CAAA,CAAE,eAAA;AACL,cAAA,IAAA,CAAK,aAAA,CAAc,kBAAkB,QAAQ,CAAA;AAC7C,cAAA;AAAA;AACJ,QACF,CAAA,MAAA,IACS,WAAA,IAAe,GAAA,IAAO,WAAA,IAAe,GAAA,EAC9C;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,cAAA;AAAA,YACP,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,gBAAgB,CAAA;AACpC,cAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AACrB,cAAA,IAAA,CAAK,aAAA,CAAc,kBAAkB,QAAQ,CAAA;AAC7C,cAAA;AAAA,YACF,KAAK,CAAA,CAAE,gBAAA;AACL,cAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AACrB,cAAA;AAAA;AACJ,QACF;AAAA,MACF;AAAA,KACF;AAEA,IAAA,IAAM,oBAAA,GAAN,cAAmCA,aAAAA,CACnC;AAAA,MACE,WAAA,CAAY,EAAA,EAAI,SAAA,EAAW,OAAA,EAAS,aAAA,EACpC;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,EAAA,GAAK,UAAU,IAAA,CAAK,KAAA,CAAM,KAAK,MAAA,EAAO,GAAI,GAAQ,CAAC,CAAA,CAAA;AACxD,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,aAAA,GAAgB,aAAA;AAErB,QAAA,IAAI,GAAA,GAAM,CAAA,QAAA,EAAW,SAAA,CAAU,aAAa,CAAA,CAAA;AAE5C,QAAA,GAAA,IAAO,IAAI,EAAA,CAAG,aAAA,CAAc,QAAQ,CAAA,QAAA,EAAW,KAAK,EAAE,CAAA,CAAA;AAEtD,QAAA,IAAA,CAAK,OAAA,CAAQ,SAAA,CAAU,KAAA,EAAO,GAAG,CAAA;AAAA,MACnC;AAAA,MAEA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,IAAA,GACA;AACE,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,OAAO,CAAA,EACrC;AACE,UAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,QACxB;AAAA,MACF;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,SAAA,CAAU,KAAA,CAAM,CAAA,yCAAA,EAA4C,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AACrE,QAAA,IAAA,CAAK,cAAc,gBAAA,EAAiB;AAAA,MACtC;AAAA,KACF;AAEA,IAAA,IAAM,0BAAA,GAAN,cAAyCA,aAAAA,CACzC;AAAA,MACE,WAAA,CAAY,EAAA,EAAI,SAAA,EAAW,OAAA,EAC3B;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,OAAO,CAAA,CAAE,iBAAA;AACd,QAAA,IAAA,CAAK,KAAK,OAAA,CAAQ,UAAA;AAClB,QAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,aAAA,GAAgB,EAAA;AACrB,QAAA,OAAA,CAAQ,kBAAA,GAAqB,IAAA;AAE7B,QAAA,IAAA,CAAK,QAAQ,CAAA,CAAE,aAAA;AAEf,QAAA,EAAA,CAAG,eAAe,IAAI,CAAA;AAAA,MACxB;AAAA,MAEA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,aAAa,KAAA,EACb;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,KAAK,cAAc,CAAA;AAAA,MAC1B;AAAA,MAEA,OAAA,GACA;AACE,QAAA,UAAA,CAAW,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAC7D,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,MACjC;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,IAAI,CAAC,KAAK,cAAA,EACV;AACE,UAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AAEtB,UAAA,UAAA,CAAW,KAAA,CAAM,CAAA,+CAAA,EAAkD,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAE5E,UAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,UAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,UAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,QACjC;AAAA,MACF;AAAA,MAEA,eAAA,CAAgB,WAAA,EAAa,QAAA,EAAU,SAAA,EAAW,SAAA,EAClD;AACE,QAAA,IAAI,gBAAgB,GAAA,EACpB;AAME,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,aAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,cAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EACjC;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,cACxB;AACA,cAAA;AAAA,YACF,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,aAAA,GAAgB,QAAA;AACrB,cAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EACjC;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,gBAAA,IAAI,SAAA,EACJ;AACE,kBAAA,SAAA,EAAU;AAAA,gBACZ;AAAA,cACF,WACS,SAAA,EACT;AACE,gBAAA,SAAA,EAAU;AAAA,cACZ;AACA,cAAA;AAAA;AACJ,QACF,CAAA,MAAA,IACS,WAAA,IAAe,GAAA,IAAO,WAAA,IAAe,GAAA,EAC9C;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,aAAA;AAAA,YACP,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,gBAAgB,CAAA;AACpC,cAAA,IAAA,CAAK,aAAA,GAAgB,QAAA;AACrB,cAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MACpB;AACE,gBAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,cACf,CAAA,EAAG,OAAO,OAAO,CAAA;AACjB,cAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EACjC;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,gBAAA,IAAI,SAAA,EACJ;AACE,kBAAA,SAAA,EAAU;AAAA,gBACZ;AAAA,cACF,WACS,SAAA,EACT;AACE,gBAAA,SAAA,EAAU;AAAA,cACZ;AACA,cAAA;AAAA,YACF,KAAK,CAAA,CAAE,gBAAA;AACL,cAAA;AAAA;AACJ,QACF;AAAA,MACF;AAAA,KACF;AAEA,IAAA,IAAM,uBAAA,GAAN,cAAsCA,aAAAA,CACtC;AAAA,MACE,WAAA,CAAY,EAAA,EAAI,SAAA,EAAW,OAAA,EAC3B;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,OAAO,CAAA,CAAE,aAAA;AACd,QAAA,IAAA,CAAK,KAAK,OAAA,CAAQ,UAAA;AAClB,QAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,QAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,QAAA,IAAA,CAAK,aAAA,GAAgB,EAAA;AACrB,QAAA,OAAA,CAAQ,kBAAA,GAAqB,IAAA;AAE7B,QAAA,IAAA,CAAK,QAAQ,CAAA,CAAE,iBAAA;AAEf,QAAA,EAAA,CAAG,eAAe,IAAI,CAAA;AAEtB,QAAA,IAAA,CAAK,sBAAA,GAAyB,IAAA;AAE9B,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,MACnB;AAAA,MAEA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,aAAa,KAAA,EACb;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AACb,QAAA,IAAA,CAAK,KAAK,cAAc,CAAA;AAAA,MAC1B;AAAA,MAEA,OAAA,GACA;AACE,QAAA,SAAA,CAAU,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAE5D,QAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,gBAAA,EACrB;AACE,UAAA,SAAA,CAAU,MAAM,6CAA6C,CAAA;AAAA,QAC/D;AAEA,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,MACjC;AAAA,MAEA,OAAA,GACA;AACE,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,QAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,MACjC;AAAA;AAAA,MAGA,OAAA,GACA;AACE,QAAA,SAAA,CAAU,KAAA,CAAM,CAAA,gCAAA,EAAmC,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAE5D,QAAA,IAAI,IAAA,CAAK,KAAA,KAAU,CAAA,CAAE,eAAA,EACrB;AACE,UAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,UAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,QACjC;AAAA,MACF;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,IAAI,CAAC,KAAK,cAAA,EACV;AACE,UAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AAEtB,UAAA,SAAA,CAAU,KAAA,CAAM,CAAA,+CAAA,EAAkD,IAAA,CAAK,EAAE,CAAA,CAAE,CAAA;AAE3E,UAAA,IAAI,IAAA,CAAK,2BAA2B,IAAA,EACpC;AACE,YAAA,aAAA,CAAc,KAAK,sBAAsB,CAAA;AACzC,YAAA,IAAA,CAAK,sBAAA,GAAyB,IAAA;AAAA,UAChC;AAEA,UAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,UAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AACnB,UAAA,YAAA,CAAa,KAAK,CAAC,CAAA;AAEnB,UAAA,IAAA,CAAK,YAAA,CAAa,EAAE,iBAAiB,CAAA;AACrC,UAAA,IAAA,CAAK,EAAA,CAAG,mBAAmB,IAAI,CAAA;AAAA,QACjC;AAAA,MACF;AAAA,MAEA,kBAAA,GACA;AACE,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,IAAA,CAAK,aAAa,CAAA,EAC3C;AACE,UAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,QACxB;AAAA,MACF;AAAA;AAAA,MAGA,eAAA,CAAgB,WAAA,EAAa,QAAA,EAAU,SAAA,EAAW,SAAA,EAClD;AACE,QAAA,IAAI,WAAA,IAAe,GAAA,IAAO,WAAA,IAAe,GAAA,EACzC;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EACjC;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,cACxB;AACA,cAAA,IAAA,CAAK,aAAA,GAAgB,QAAA;AACrB,cAAA;AAAA;AACJ,QACF;AAEA,QAAA,IAAI,cAAc,GAAA,IAAO,WAAA,IAAe,OAAO,IAAA,CAAK,KAAA,KAAU,EAAE,iBAAA,EAChE;AAEE,UAAA,IAAI,IAAA,CAAK,2BAA2B,IAAA,EACpC;AACE,YAAA,IAAA,CAAK,sBAAA,GAAyB,YAAY,MAC1C;AACE,cAAA,IAAA,CAAK,kBAAA,EAAmB;AAAA,YAC1B,CAAA,EAAG,OAAO,6BAA6B,CAAA;AAAA,UACzC;AAAA,QACF,CAAA,MAAA,IACS,WAAA,IAAe,GAAA,IAAO,WAAA,IAAe,GAAA,EAC9C;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAA,CAAK,YAAA,CAAa,EAAE,eAAe,CAAA;AACnC,cAAA,IAAA,CAAK,aAAA,GAAgB,QAAA;AACrB,cAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MACpB;AACE,gBAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,cACf,CAAA,EAAG,OAAO,OAAO,CAAA;AAEjB,cAAA,IAAI,IAAA,CAAK,2BAA2B,IAAA,EACpC;AACE,gBAAA,aAAA,CAAc,KAAK,sBAAsB,CAAA;AACzC,gBAAA,IAAA,CAAK,sBAAA,GAAyB,IAAA;AAAA,cAChC;AAAA;AAAA,YAGF,KAAK,CAAA,CAAE,eAAA;AAEL,cAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EACjC;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,gBAAA,IAAI,SAAA,EACJ;AACE,kBAAA,SAAA,EAAU;AAAA,gBACZ;AAAA,cACF,WACS,SAAA,EACT;AACE,gBAAA,SAAA,EAAU;AAAA,cACZ;AACA,cAAA;AAAA;AACJ,QACF,CAAA,MAAA,IACS,WAAA,IAAe,GAAA,IAAO,WAAA,IAAe,GAAA,EAC9C;AACE,UAAA,QAAQ,KAAK,KAAA;AACb,YACE,KAAK,CAAA,CAAE,iBAAA;AACL,cAAA,IAAI,IAAA,CAAK,2BAA2B,IAAA,EACpC;AACE,gBAAA,aAAA,CAAc,KAAK,sBAAsB,CAAA;AACzC,gBAAA,IAAA,CAAK,sBAAA,GAAyB,IAAA;AAAA,cAChC;AAEA,cAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,QAAQ,CAAA,EACjC;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,gBAAA,IAAI,SAAA,EACJ;AACE,kBAAA,SAAA,EAAU;AAAA,gBACZ;AAAA,cACF,CAAA,MAEA;AACE,gBAAA,IAAA,CAAK,YAAA,CAAa,EAAE,gBAAgB,CAAA;AACpC,gBAAA,IAAA,CAAK,CAAA,GAAI,WAAW,MACpB;AACE,kBAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,gBACf,CAAA,EAAG,OAAO,OAAO,CAAA;AACjB,gBAAA,IAAI,SAAA,EACJ;AACE,kBAAA,SAAA,EAAU;AAAA,gBACZ;AAAA,cACF;AACA,cAAA;AAAA;AACJ,QACF;AAAA,MACF;AAAA,KACF;AAoBA,IAAA,SAAS,gBAAA,CAAiB,EAAE,aAAA,EAAc,EAAG,OAAA,EAC7C;AACE,MAAA,IAAI,EAAA;AAEJ,MAAA,QAAQ,QAAQ,MAAA;AAChB,QACE,KAAK,OAAA,CAAQ,MAAA;AACX,UAAA,EAAA,GAAK,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AACzC,UAAA,IAAI,EAAA,EACJ;AACE,YAAA,QAAQ,GAAG,KAAA;AACX,cACE,KAAK,CAAA,CAAE,iBAAA;AACL,gBAAA,EAAA,CAAG,SAAA,CAAU,IAAA,CAAK,EAAA,CAAG,aAAa,CAAA;AAClC,gBAAA;AAAA;AAAA;AAAA,cAIF,KAAK,CAAA,CAAE,eAAA;AACL,gBAAA;AAAA;AAGJ,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA;AAAA,QACF,KAAK,OAAA,CAAQ,GAAA;AACX,UAAA,EAAA,GAAK,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AAGzC,UAAA,IAAI,EAAA,EACJ;AACE,YAAA,IAAI,EAAA,CAAG,KAAA,KAAU,CAAA,CAAE,eAAA,EACnB;AACE,cAAA,OAAO,KAAA;AAAA,YACT,CAAA,MAAA,IACS,EAAA,CAAG,KAAA,KAAU,CAAA,CAAE,gBAAA,EACxB;AACE,cAAA,EAAA,CAAG,QAAQ,CAAA,CAAE,gBAAA;AACb,cAAA,EAAA,CAAG,CAAA,GAAI,WAAW,MAAM;AAAE,gBAAA,EAAA,CAAG,OAAA,EAAQ;AAAA,cAAG,CAAA,EAAG,OAAO,OAAO,CAAA;AAEzD,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,UACF,CAAA,MAGA;AACE,YAAA,OAAO,KAAA;AAAA,UACT;AACA,UAAA;AAAA,QACF,KAAK,OAAA,CAAQ,MAAA;AACX,UAAA,EAAA,GAAK,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AACzC,UAAA,IAAI,EAAA,EACJ;AACE,YAAA,OAAA,CAAQ,SAAS,GAAG,CAAA;AACpB,YAAA,IAAI,EAAA,CAAG,KAAA,KAAU,CAAA,CAAE,iBAAA,EACnB;AACE,cAAA,OAAO,KAAA;AAAA,YACT,CAAA,MAEA;AACE,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,UACF,CAAA,MAEA;AACE,YAAA,OAAA,CAAQ,SAAS,GAAG,CAAA;AAEpB,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AAGE,UAAA,EAAA,GAAK,aAAA,CAAc,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AAC1C,UAAA,IAAI,EAAA,EACJ;AACE,YAAA,QAAQ,GAAG,KAAA;AACX,cACE,KAAK,CAAA,CAAE,aAAA;AACL,gBAAA;AAAA,cACF,KAAK,CAAA,CAAE,iBAAA;AAAA,cACP,KAAK,CAAA,CAAE,gBAAA;AACL,gBAAA,EAAA,CAAG,SAAA,CAAU,IAAA,CAAK,EAAA,CAAG,aAAa,CAAA;AAClC,gBAAA;AAAA;AAGJ,YAAA,OAAO,IAAA;AAAA,UACT;AACA,UAAA;AAAA;AACJ,IACF;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,CAAA;AAAA,MACA,0BAAA;AAAA,MACA,uBAAA;AAAA,MACA,oBAAA;AAAA,MACA,0BAAA;AAAA,MACA,uBAAA;AAAA,MACA;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpyBA,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,+EAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,oBAAA,GAAuB,4BAAA,EAAA;AAC7B,IAAA,IAAM,YAAA,GAAe,oBAAA,EAAA;AAErB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,eAAe,CAAA;AAGzC,IAAA,IAAM,aAAA,GAAgB;AAAA,MACpB,kBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,kBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,mBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,iBAAoB,MAAM;AAAA,MAAC;AAAA,KAC7B;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,aAAA,CACvB;AAAA,MACE,WAAA,CAAY,EAAA,EAAI,OAAA,EAAS,aAAA,EACzB;AACE,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,cAAA,GAAiB,aAAA;AACtB,QAAA,IAAA,CAAK,UAAU,OAAA,CAAQ,MAAA;AACvB,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAChB,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,QAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAGf,QAAA,KAAA,MAAW,WAAW,aAAA,EACtB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,aAAA,EAAe,OAAO,CAAA,EAC/D;AACE,YAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA,EAChC;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA,GAAI,aAAA,CAAc,OAAO,CAAA;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAGA,QAAA,IAAI,EAAA,CAAG,MAAA,KAAW,EAAA,CAAG,CAAA,CAAE,kBAAA,KAClB,IAAA,CAAK,OAAA,KAAY,OAAA,CAAQ,GAAA,IAAO,IAAA,CAAK,OAAA,KAAY,OAAA,CAAQ,GAAA,CAAA,EAC9D;AACE,UAAA,IAAA,CAAK,eAAe,gBAAA,EAAiB;AAAA,QACvC;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,GACA;AACE,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,kBAAoB,MAAM;AAAE,YAAA,IAAA,CAAK,eAAe,gBAAA,EAAiB;AAAA,UAAG,CAAA;AAAA,UACpE,kBAAoB,MAAM;AAAE,YAAA,IAAA,CAAK,eAAe,gBAAA,EAAiB;AAAA,UAAG,CAAA;AAAA,UACpE,iBAAA,EAAoB,CAAC,QAAA,KAAa;AAAE,YAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA;AAAA,UAAG;AAAA,SACvE;AAEA,QAAA,QAAQ,KAAK,OAAA;AACb,UACE,KAAK,QAAA;AACH,YAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,YAAA,CAAa,uBAAA;AAAA,cACxC,IAAA,CAAK,GAAA;AAAA,cAAK,KAAK,GAAA,CAAI,SAAA;AAAA,cAAW,IAAA,CAAK,QAAA;AAAA,cAAU;AAAA,aAAa;AAC5D,YAAA;AAAA,UACF,KAAK,KAAA;AACH,YAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,YAAA,CAAa,oBAAA;AAAA,cACxC,IAAA,CAAK,GAAA;AAAA,cAAK,KAAK,GAAA,CAAI,SAAA;AAAA,cAAW,IAAA,CAAK,QAAA;AAAA,cAAU;AAAA,aAAa;AAC5D,YAAA;AAAA,UACF;AACE,YAAA,IAAA,CAAK,iBAAA,GAAoB,IAAI,YAAA,CAAa,0BAAA;AAAA,cACxC,IAAA,CAAK,GAAA;AAAA,cAAK,KAAK,GAAA,CAAI,SAAA;AAAA,cAAW,IAAA,CAAK,QAAA;AAAA,cAAU;AAAA,aAAa;AAAA;AAGhE,QAAA,IAAI,IAAA,CAAK,GAAA,CAAI,cAAA,CAAe,iBAAA,EAC5B;AACE,UAAA,IAAA,CAAK,SAAS,SAAA,CAAU,eAAA,EAAiB,IAAA,CAAK,GAAA,CAAI,eAAe,iBAAiB,CAAA;AAAA,QACpF;AAEA,QAAA,IAAA,CAAK,kBAAkB,IAAA,EAAK;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAiB,QAAA,EACjB;AACE,QAAA,IAAI,SAAA;AACJ,QAAA,IAAI,yBAAA;AACJ,QAAA,MAAM,cAAc,QAAA,CAAS,WAAA;AAM7B,QAAA,IAAA,CAAK,WAAA,KAAgB,GAAA,IAAO,WAAA,KAAgB,GAAA,MACvC,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,QAAA,KAAa,IAAA,IAAQ,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,QAAQ,IAAA,CAAA,EAChF;AAGE,UAAA,IAAI,QAAA,CAAS,gBAAgB,GAAA,EAC7B;AACE,YAAA,SAAA,GAAY,QAAA,CAAS,YAAY,kBAAkB,CAAA;AACnD,YAAA,yBAAA,GAA4B,eAAA;AAAA,UAC9B,CAAA,MAEA;AACE,YAAA,SAAA,GAAY,QAAA,CAAS,YAAY,oBAAoB,CAAA;AACrD,YAAA,yBAAA,GAA4B,qBAAA;AAAA,UAC9B;AAGA,UAAA,IAAI,CAAC,SAAA,EACL;AACE,YAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAG,QAAA,CAAS,WAAW,CAAA,qDAAA,CAAuD,CAAA;AAC3F,YAAA,IAAA,CAAK,cAAA,CAAe,kBAAkB,QAAQ,CAAA;AAE9C,YAAA;AAAA,UACF;AAEA,UAAA,IAAI,CAAC,KAAK,WAAA,IAAgB,CAAC,KAAK,OAAA,IAAW,SAAA,CAAU,UAAU,IAAA,EAC/D;AACE,YAAA,IAAI,CAAC,KAAK,KAAA,EACV;AACE,cAAA,IAAA,CAAK,KAAA,GAAQ,IAAI,oBAAA,CAAqB;AAAA,gBACpC,QAAA,EAAW,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,kBAAA;AAAA,gBAClC,QAAA,EAAW,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,QAAA;AAAA,gBAClC,KAAA,EAAW,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,KAAA;AAAA,gBAClC,GAAA,EAAW,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc;AAAA,eACnC,CAAA;AAAA,YACH;AAGA,YAAA,IAAI,CAAC,IAAA,CAAK,KAAA,CAAM,aAAa,IAAA,CAAK,QAAA,EAAU,SAAS,CAAA,EACrD;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,kBAAkB,QAAQ,CAAA;AAE9C,cAAA;AAAA,YACF;AACA,YAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAGnB,YAAA,IAAA,CAAK,IAAI,GAAA,CAAI,OAAA,EAAS,KAAK,KAAA,CAAM,GAAA,CAAI,OAAO,CAAC,CAAA;AAC7C,YAAA,IAAA,CAAK,IAAI,GAAA,CAAI,KAAA,EAAO,KAAK,KAAA,CAAM,GAAA,CAAI,KAAK,CAAC,CAAA;AAEzC,YAAA,IAAI,UAAU,KAAA,EACd;AACE,cAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAAA,YACjB;AAEA,YAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,KAAA,EAAM;AACpC,YAAA,IAAA,CAAK,SAAS,IAAA,IAAQ,CAAA;AACtB,YAAA,IAAA,CAAK,QAAA,CAAS,SAAA,CAAU,MAAA,EAAQ,CAAA,EAAG,IAAA,CAAK,SAAS,IAAI,CAAA,CAAA,EAAI,IAAA,CAAK,OAAO,CAAA,CAAE,CAAA;AACvE,YAAA,IAAA,CAAK,SAAS,SAAA,CAAU,yBAAA,EAA2B,IAAA,CAAK,KAAA,CAAM,UAAU,CAAA;AAExE,YAAA,IAAA,CAAK,cAAA,CAAe,eAAA,CAAgB,IAAA,CAAK,QAAQ,CAAA;AACjD,YAAA,IAAA,CAAK,IAAA,EAAK;AAAA,UACZ,CAAA,MAEA;AACE,YAAA,IAAA,CAAK,cAAA,CAAe,kBAAkB,QAAQ,CAAA;AAAA,UAChD;AAAA,QACF,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,kBAAkB,QAAQ,CAAA;AAAA,QAChD;AAAA,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACxKA,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,aAAA,GAAgB,qBAAA,EAAA;AAEtB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,aAAa,CAAA;AAEvC,IAAA,IAAM,oBAAA,GAAuB,EAAA;AAE7B,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,WAAA,CACvB;AAAA,MACE,WAAA,CAAY,IAAI,SAAA,EAChB;AAEE,QAAA,IAAA,CAAK,OAAA,GAAU,CAAA;AAEf,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,UAAA,GAAa,SAAA;AAElB,QAAA,IAAA,CAAK,UAAA,GAAa,GAAG,aAAA,CAAc,gBAAA;AACnC,QAAA,IAAA,CAAK,QAAA,GAAW,GAAG,aAAA,CAAc,gBAAA;AAGjC,QAAA,IAAA,CAAK,QAAA,GAAW,KAAA,CAAM,iBAAA,CAAkB,EAAE,CAAA;AAC1C,QAAA,IAAA,CAAK,KAAA,GAAQ,CAAA;AAEb,QAAA,IAAA,CAAK,OAAA,GAAU,GAAG,aAAA,CAAc,GAAA;AAEhC,QAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAG1B,QAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AAGpB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAGnB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,QAAA,EAAS;AAG1C,QAAA,IAAA,CAAK,QAAA,IAAY,WAAA;AAGjB,QAAA,IAAA,CAAK,gBAAgB,EAAC;AAGtB,QAAA,IAAA,CAAK,mBAAA,GAAsB,EAAA;AAG3B,QAAA,IAAA,CAAK,YAAA,GAAe,CAAA,WAAA,EAAc,IAAA,CAAK,GAAA,CAAI,cAAc,WAAW,CAAA,EAAA,CAAA;AAEpE,QAAA,IAAA,CAAK,QAAA,IAAY,CAAA,QAAA,EAAW,IAAA,CAAK,OAAO,CAAA,CAAA;AACxC,QAAA,IAAA,CAAK,QAAA,IAAY,CAAA,eAAA,EAAkB,IAAA,CAAK,YAAY,CAAA,CAAA;AAAA,MACtD;AAAA,MAEA,IAAI,UAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,WAAA;AAAA,MACd;AAAA,MAEA,gBAAgB,YAAA,EAChB;AACE,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,YAAY,CAAA,EAC/B;AACE,UAAA,YAAA,GAAe,EAAC;AAAA,QAClB;AAEA,QAAA,IAAA,CAAK,aAAA,GAAgB,aAAa,KAAA,EAAM;AAAA,MAC1C;AAAA,MAEA,sBAAsB,kBAAA,EACtB;AACE,QAAA,IAAI,EAAE,8BAA8B,MAAA,CAAA,EACpC;AACE,UAAA,kBAAA,GAAqB,EAAC;AAAA,QACxB;AAGA,QAAA,IAAA,CAAK,mBAAA,GAAsB,EAAA;AAE3B,QAAA,KAAA,MAAW,aAAa,kBAAA,EACxB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,kBAAA,EAAoB,SAAS,CAAA,EACtE;AACE,YAAA,MAAM,WAAA,GAAc,mBAAmB,SAAS,CAAA;AAEhD,YAAA,IAAA,CAAK,mBAAA,IAAwB,IAAI,SAAS,CAAA,CAAA;AAC1C,YAAA,IAAI,WAAA,EACJ;AACE,cAAA,IAAA,CAAK,mBAAA,IAAwB,IAAI,WAAW,CAAA,CAAA;AAAA,YAC9C;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,QAAA,GACA;AACE,QAAA,IAAI,KAAK,YAAA,EACT;AACE,UAAA,MAAA,CAAO,MAAM,iCAAiC,CAAA;AAE9C,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,aAAa,CAAA;AAExD,QAAA,IAAI,YAAA;AAEJ,QAAA,IAAI,KAAK,QAAA,EACT;AACE,UAAA,YAAA,GAAe,CAAA,EAAG,KAAK,QAAQ,CAAA,SAAA,EAAY,KAAK,QAAQ,CAAA,EAAG,KAAK,mBAAmB,CAAA,CAAA;AACnF,UAAA,YAAA,CAAa,IAAA,CAAK,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,QAC/C,CAAA,MAEA;AACE,UAAA,YAAA,GAAe,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAA,EAAG,KAAK,mBAAmB,CAAA,CAAA;AAAA,QAC5D;AAEA,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,SAAA,EAAY,YAAY,CAAA,CAAE,CAAA;AAE5C,QAAA,IAAI,OAAA,GAAU,MAAM,MAAA,EAAO;AAE3B,QAAA,IAAI,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,uBAAA,EAC3B;AACE,UAAA,IAAI,OAAO,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,4BAA4B,UAAA,EAC9D;AACE,YAAA,OAAA,IAAW,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,uBAAA,EAAwB;AAAA,UAC5D,CAAA,MAEA;AACE,YAAA,OAAA,IAAW,IAAA,CAAK,IAAI,aAAA,CAAc,uBAAA;AAAA,UACpC;AAAA,QACF;AAEA,QAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAAW,eAAA;AAAA,UAC7B,OAAA,CAAQ,QAAA;AAAA,UAAU,IAAA,CAAK,UAAA;AAAA,UAAY,IAAA,CAAK,GAAA;AAAA,UAAK;AAAA,YAC3C,UAAa,IAAA,CAAK,OAAA;AAAA,YAClB,WAAa,IAAA,CAAK,QAAA;AAAA,YAClB,MAAA,EAAc,KAAK,KAAA,IAAS,CAAA;AAAA,YAC5B,UAAA,EAAa;AAAA,WACf;AAAA,UAAG;AAAA,SAAY;AAEjB,QAAA,MAAM,cAAA,GAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,KAAK,OAAA,EAAS;AAAA,UAC1D,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,oBAAA,CAAqB,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,eAAe,CAAA;AAAA,UAChE,CAAA;AAAA,UACA,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,oBAAA,CAAqB,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,gBAAgB,CAAA;AAAA,UACjE,CAAA;AAAA;AAAA,UAEA,iBAAkB,MAClB;AACE,YAAA,IAAA,CAAK,KAAA,IAAS,CAAA;AAAA,UAChB,CAAA;AAAA,UACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AAEE,YAAA,IAAI,QAAA,CAAS,IAAA,KAAS,IAAA,CAAK,KAAA,EAC3B;AACE,cAAA;AAAA,YACF;AAGA,YAAA,IAAI,IAAA,CAAK,uBAAuB,IAAA,EAChC;AACE,cAAA,YAAA,CAAa,KAAK,kBAAkB,CAAA;AACpC,cAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAAA,YAC5B;AAEA,YAAA,QAAQ,IAAA;AACR,cACE,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAC5C;AAEE,gBAAA;AAAA,cACF;AAAA,cAEA,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAC5C;AACE,gBAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AAEpB,gBAAA,IAAI,CAAC,QAAA,CAAS,SAAA,CAAU,SAAS,CAAA,EACjC;AACE,kBAAA,MAAA,CAAO,MAAM,6DAA6D,CAAA;AAE1E,kBAAA;AAAA,gBACF;AAEA,gBAAA,MAAM,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,SAAS,EACxC,MAAA,CAAO,CAAC,CAAA,EAAG,CAAA,KAAM,EAAE,MAAA,CAAO,CAAA,CAAE,MAAM,CAAA,EAAG,EAAE,CAAA;AAI1C,gBAAA,IAAI,UAAU,QAAA,CAAS,IAAA,CAAK,CAAC,OAAA,KAC1B,IAAA,CAAK,iBAAiB,OAAA,CAAQ,QAAA,CAAS,eAAe,CAAA,IACtD,KAAK,OAAA,KAAY,QAAA,CAAS,QAAQ,QAAA,CAAS,QAAQ,CAAC,CACtD,CAAA;AAGD,gBAAA,IAAI,CAAC,OAAA,EACL;AACE,kBAAA,OAAA,GAAU,QAAA,CAAS,IAAA,CAAK,CAAC,OAAA,KACtB,OAAA,CAAQ,GAAA,CAAI,IAAA,KAAS,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,GAAA,CAAI,IAC5C,CAAA;AAAA,gBACH;AAEA,gBAAA,IAAI,CAAC,OAAA,EACL;AACE,kBAAA,MAAA,CAAO,MAAM,oDAAoD,CAAA;AAEjE,kBAAA;AAAA,gBACF;AAEA,gBAAA,IAAI,OAAA,GAAU,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA;AAExC,gBAAA,IAAI,CAAC,OAAA,IAAW,QAAA,CAAS,SAAA,CAAU,SAAS,CAAA,EAC5C;AACE,kBAAA,OAAA,GAAU,QAAA,CAAS,UAAU,SAAS,CAAA;AAAA,gBACxC;AAEA,gBAAA,IAAI,CAAC,OAAA,EACL;AACE,kBAAA,OAAA,GAAU,IAAA,CAAK,QAAA;AAAA,gBACjB;AAEA,gBAAA,OAAA,GAAU,OAAO,OAAO,CAAA;AAExB,gBAAA,IAAI,OAAA,GAAU,oBAAA;AACZ,kBAAA,OAAA,GAAU,oBAAA;AAEZ,gBAAA,MAAM,UAAU,OAAA,GAAU,EAAA,GACrB,OAAA,GAAU,GAAA,GAAO,IAClB,IAAA,CAAK,KAAA,CAAA,CAAQ,OAAA,GAAU,CAAA,GAAK,MAAM,GAAA,GAAO,IAAA,CAAK,QAAQ,CAAA,GACrD,UAAU,GAAA,GAAQ,GAAA;AAIvB,gBAAA,IAAA,CAAK,kBAAA,GAAqB,WAAW,MACrC;AACE,kBAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAG1B,kBAAA,IAAI,KAAK,GAAA,CAAI,SAAA,CAAU,sBAAsB,CAAA,CAAE,WAAW,CAAA,EAC1D;AACE,oBAAA,IAAA,CAAK,QAAA,EAAS;AAAA,kBAChB,CAAA,MAEA;AACE,oBAAA,IAAA,CAAK,GAAA,CAAI,KAAK,sBAAsB,CAAA;AAAA,kBACtC;AAAA,gBACF,GAAG,OAAO,CAAA;AAGV,gBAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,WAAW,CAAA,EAChC;AACE,kBAAA,IAAA,CAAK,GAAA,CAAI,QAAQ,SAAA,GAAY,OAAA,CAAQ,SAAS,WAAW,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAAA,gBAC7E;AACA,gBAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,UAAU,CAAA,EAC/B;AACE,kBAAA,IAAA,CAAK,GAAA,CAAI,QAAQ,QAAA,GAAW,OAAA,CAAQ,SAAS,UAAU,CAAA,CAAE,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAAA,gBAC3E;AAEA,gBAAA,IAAI,CAAC,KAAK,WAAA,EACV;AACE,kBAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,kBAAA,IAAA,CAAK,GAAA,CAAI,UAAA,CAAW,EAAE,QAAA,EAAU,CAAA;AAAA,gBAClC;AAEA,gBAAA;AAAA,cACF;AAAA;AAAA,cAGA,KAAK,OAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EACtC;AACE,gBAAA,IAAI,QAAA,CAAS,SAAA,CAAU,aAAa,CAAA,EACpC;AAEE,kBAAA,IAAA,CAAK,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,SAAA,CAAU,aAAa,CAAC,CAAA;AAExD,kBAAA,IAAI,KAAK,QAAA,GAAW,oBAAA;AAClB,oBAAA,IAAA,CAAK,QAAA,GAAW,oBAAA;AAGlB,kBAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AAGpB,kBAAA,IAAA,CAAK,QAAA,EAAS;AAAA,gBAChB,CAAA,MAEA;AACE,kBAAA,MAAA,CAAO,MAAM,wDAAwD,CAAA;AAErE,kBAAA,IAAA,CAAK,oBAAA,CAAqB,QAAA,EAAU,OAAA,CAAQ,MAAA,CAAO,gBAAgB,CAAA;AAAA,gBACrE;AAEA,gBAAA;AAAA,cACF;AAAA,cAEA,SACA;AACE,gBAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,WAAW,CAAA;AAEtD,gBAAA,IAAA,CAAK,oBAAA,CAAqB,UAAU,KAAK,CAAA;AAAA,cAC3C;AAAA;AACF,UACF;AAAA,SACD,CAAA;AAED,QAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,QAAA,cAAA,CAAe,IAAA,EAAK;AAAA,MACtB;AAAA,MAEA,UAAA,CAAW,OAAA,GAAU,EAAC,EACtB;AACE,QAAA,IAAI,CAAC,KAAK,WAAA,EACV;AACE,UAAA,MAAA,CAAO,MAAM,sBAAsB,CAAA;AAEnC,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAGnB,QAAA,IAAI,IAAA,CAAK,uBAAuB,IAAA,EAChC;AACE,UAAA,YAAA,CAAa,KAAK,kBAAkB,CAAA;AACpC,UAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAAA,QAC5B;AAEA,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,aAAa,CAAA;AAExD,QAAA,IAAI,QAAQ,GAAA,EACZ;AACE,UAAA,YAAA,CAAa,IAAA,CAAK,CAAA,UAAA,EAAa,IAAA,CAAK,mBAAmB,CAAA,CAAE,CAAA;AAAA,QAC3D,CAAA,MAEA;AACE,UAAA,YAAA,CAAa,KAAK,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,UAAA,EAAa,IAAA,CAAK,mBAAmB,CAAA,CAAE,CAAA;AAAA,QACpF;AAEA,QAAA,YAAA,CAAa,KAAK,YAAY,CAAA;AAE9B,QAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAAW,eAAA;AAAA,UAC7B,OAAA,CAAQ,QAAA;AAAA,UAAU,IAAA,CAAK,UAAA;AAAA,UAAY,IAAA,CAAK,GAAA;AAAA,UAAK;AAAA,YAC3C,UAAY,IAAA,CAAK,OAAA;AAAA,YACjB,WAAY,IAAA,CAAK,QAAA;AAAA,YACjB,MAAA,EAAa,KAAK,KAAA,IAAS;AAAA,WAC7B;AAAA,UAAG;AAAA,SAAY;AAEjB,QAAA,MAAM,cAAA,GAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,KAAK,OAAA,EAAS;AAAA,UAC1D,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,eAAe,CAAA;AAAA,UACzD,CAAA;AAAA,UACA,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,aAAA,CAAc,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,gBAAgB,CAAA;AAAA,UAC1D,CAAA;AAAA;AAAA,UAEA,iBAAkB,MAClB;AACE,YAAA,IAAA,CAAK,KAAA,IAAS,CAAA;AAAA,UAChB,CAAA;AAAA,UACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,YAAA,QAAQ,IAAA;AACR,cACE,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA;AAE1C,gBAAA;AAAA,cACF,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA;AAC1C,gBAAA,IAAA,CAAK,cAAc,QAAQ,CAAA;AAC3B,gBAAA;AAAA,cACF,SACA;AACE,gBAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,WAAW,CAAA;AAEtD,gBAAA,IAAA,CAAK,aAAA,CAAc,UAAU,KAAK,CAAA;AAAA,cACpC;AAAA;AACF,UACF;AAAA,SACD,CAAA;AAED,QAAA,cAAA,CAAe,IAAA,EAAK;AAAA,MACtB;AAAA,MAEA,KAAA,GACA;AACE,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,IAAA,CAAK,UAAA,EAAW;AAAA,QAClB;AAAA,MACF;AAAA,MAGA,iBAAA,GACA;AACE,QAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AACpB,QAAA,IAAI,IAAA,CAAK,uBAAuB,IAAA,EAChC;AACE,UAAA,YAAA,CAAa,KAAK,kBAAkB,CAAA;AACpC,UAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAAA,QAC5B;AAEA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,UAAA,IAAA,CAAK,GAAA,CAAI,YAAA,CAAa,EAAE,CAAA;AAAA,QAC1B;AAAA,MACF;AAAA,MAEA,oBAAA,CAAqB,UAAU,KAAA,EAC/B;AACE,QAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AACpB,QAAA,IAAA,CAAK,IAAI,kBAAA,CAAmB;AAAA,UAC1B,UAAW,QAAA,IAAY,IAAA;AAAA,UACvB;AAAA,SACD,CAAA;AAED,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,UAAA,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,YACpB,UAAW,QAAA,IAAY,IAAA;AAAA,YACvB;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF;AAAA,MAEA,aAAA,CAAc,UAAU,KAAA,EACxB;AACE,QAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AACpB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,QAAA,IAAA,CAAK,IAAI,YAAA,CAAa;AAAA,UACpB,UAAW,QAAA,IAAY,IAAA;AAAA,UACvB,OAAW,KAAA,IAAS;AAAA,SACrB,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1bA,IAAAa,sBAAAA,GAAA,UAAA,CAAA;AAAA,EAAA,sFAAA,CAAAb,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,YAAA,GAAe,oBAAA,EAAA;AACrB,IAAA,IAAM,aAAA,GAAgB,qBAAA,EAAA;AAGtB,IAAA,IAAM,aAAA,GAAgB;AAAA,MACpB,kBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,kBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,mBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,iBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,iBAAoB,MAAM;AAAA,MAAC,CAAA;AAAA,MAC3B,eAAoB,MAAM;AAAA,MAAC;AAAA,KAC7B;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,mBAAA,CACvB;AAAA,MACE,WAAA,CAAY,MAAA,EAAQ,OAAA,EAAS,aAAA,EAC7B;AACE,QAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AACf,QAAA,IAAA,CAAK,MAAM,MAAA,CAAO,GAAA;AAClB,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAChB,QAAA,IAAA,CAAK,cAAA,GAAiB,aAAA;AAGtB,QAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAClB,QAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AAGvB,QAAA,KAAA,MAAW,WAAW,aAAA,EACtB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,aAAA,EAAe,OAAO,CAAA,EAC/D;AACE,YAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA,EAChC;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,OAAO,CAAA,GAAI,aAAA,CAAc,OAAO,CAAA;AAAA,YACtD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,MAEA,IAAI,OAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA,MAEA,IAAA,GACA;AACE,QAAA,MAAM,iBAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,GAAA,EAAK,KAAK,QAAA,EAAU;AAAA,UAChE,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,eAAe,gBAAA,EAAiB;AAAA,UACvC,CAAA;AAAA,UACA,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,eAAe,gBAAA,EAAiB;AAAA,UACvC,CAAA;AAAA,UACA,eAAA,EAAkB,CAAC,OAAA,KACnB;AACE,YAAA,IAAA,CAAK,cAAA,CAAe,gBAAgB,OAAO,CAAA;AAAA,UAC7C,CAAA;AAAA,UACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,YAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA;AAAA,UAChC;AAAA,SACD,CAAA;AAED,QAAA,cAAA,CAAe,IAAA,EAAK;AAGpB,QAAA,IAAA,CAAK,KAAK,QAAA,CAAS,MAAA,KAAW,QAAQ,MAAA,IAC/B,IAAA,CAAK,SAAS,MAAA,KAAW,OAAA,CAAQ,MAAA,IAAU,IAAA,CAAK,SAAS,IAAA,KAC5D,cAAA,CAAe,kBAAkB,KAAA,KAAU,YAAA,CAAa,EAAE,iBAAA,EAC9D;AACE,UAAA,IAAA,CAAK,QAAQ,iBAAA,GAAoB,IAAA;AAEjC,UAAA,MAAM,eAAe,MACrB;AACE,YAAA,IAAI,eAAe,iBAAA,CAAkB,KAAA,KAAU,YAAA,CAAa,CAAA,CAAE,mBAC1D,cAAA,CAAe,iBAAA,CAAkB,KAAA,KAAU,YAAA,CAAa,EAAE,gBAAA,IAC1D,cAAA,CAAe,kBAAkB,KAAA,KAAU,YAAA,CAAa,EAAE,iBAAA,EAC9D;AACE,cAAA,cAAA,CAAe,iBAAA,CAAkB,cAAA,CAAe,cAAA,EAAgB,YAAY,CAAA;AAC5E,cAAA,IAAA,CAAK,QAAQ,iBAAA,GAAoB,KAAA;AAAA,YACnC;AAAA,UACF,CAAA;AAEA,UAAA,cAAA,CAAe,iBAAA,CAAkB,EAAA,CAAG,cAAA,EAAgB,YAAY,CAAA;AAAA,QAClE;AAAA,MACF;AAAA,MAEA,iBAAiB,QAAA,EACjB;AAEE,QAAA,IAAI,QAAA,CAAS,WAAA,KAAgB,GAAA,IAAO,QAAA,CAAS,gBAAgB,GAAA,EAC7D;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,cAAc,QAAQ,CAAA;AAAA,QAC5C,WACS,QAAA,CAAS,MAAA,KAAW,QAAQ,MAAA,IAAU,QAAA,CAAS,gBAAgB,GAAA,EACxE;AACE,UAAA,IAAI,KAAK,UAAA,EACT;AACE,YAAA,IAAA,CAAK,cAAA,CAAe,gBAAgB,QAAQ,CAAA;AAAA,UAC9C,CAAA,MAEA;AACE,YAAA,IAAA,CAAK,QAAA,CAAS,IAAA,GAAO,IAAA,CAAK,OAAA,CAAQ,YAAA,IAAgB,CAAA;AAClD,YAAA,IAAA,CAAK,eAAA,GAAkB,WAAW,MAClC;AACE,cAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,YAAA,EAAa,EAC/B;AACE,gBAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,gBAAA,IAAA,CAAK,IAAA,EAAK;AAAA,cACZ;AAAA,YACF,GAAG,GAAI,CAAA;AAAA,UACT;AAAA,QACF,WACS,QAAA,CAAS,WAAA,IAAe,GAAA,IAAO,QAAA,CAAS,cAAc,GAAA,EAC/D;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,kBAAkB,QAAQ,CAAA;AAAA,QAChD,CAAA,MAAA,IACS,QAAA,CAAS,WAAA,IAAe,GAAA,EACjC;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,gBAAgB,QAAQ,CAAA;AAAA,QAC9C;AAAA,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7HA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,YAAA,GAAe,oBAAA,EAAA;AACrB,IAAA,IAAM,oBAAA,GAAuB,sBAAA,EAAA;AAC7B,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,QAAQ,CAAA;AAElC,IAAA,IAAM,CAAA,GAAI;AAAA;AAAA,MAER,YAAA,EAAoB,CAAA;AAAA,MACpB,gBAAA,EAAoB,CAAA;AAAA,MACpB,iBAAA,EAAoB;AAAA,KACtB;AAGA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,MAAA,CACvB;AAAA;AAAA,MAEE,WAAW,CAAA,GACX;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,YAAY,KAAA,EAAO,OAAA,EAAS,IAAA,EAAM,KAAA,GAAQ,EAAE,gBAAA,EAC5C;AACE,QAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AACd,QAAA,IAAA,CAAK,MAAM,KAAA,CAAM,GAAA;AAEjB,QAAA,IAAA,CAAK,kBAAA,GAAqB,KAAA;AAC1B,QAAA,IAAA,CAAK,kBAAA,GAAqB,KAAA;AAE1B,QAAA,IAAI,CAAC,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA,EAChC;AACE,UAAA,OAAO;AAAA,YACL,KAAA,EAAQ;AAAA,WACV;AAAA,QACF;AAEA,QAAA,IAAI,OAAA,YAAmB,WAAW,gBAAA,EAClC;AACE,UAAA,KAAA,GAAS,OAAA,CAAQ,WAAA,GAAc,GAAA,GAAO,CAAA,CAAE,eAAe,CAAA,CAAE,gBAAA;AAAA,QAC3D;AAEA,QAAA,MAAM,OAAA,GAAU,OAAA,CAAQ,WAAA,CAAY,SAAS,CAAA;AAG7C,QAAA,IAAI,SAAS,KAAA,EACb;AACE,UAAA,IAAA,CAAK,GAAA,GAAM;AAAA,YACT,SAAa,OAAA,CAAQ,OAAA;AAAA,YACrB,WAAa,OAAA,CAAQ,MAAA;AAAA,YACrB,YAAa,OAAA,CAAQ,QAAA;AAAA,YACrB,QAAA,GACA;AACE,cAAA,OAAO,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,UAAA;AAAA,YAC9C;AAAA,WACF;AACA,UAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AACd,UAAA,IAAA,CAAK,iBAAiB,OAAA,CAAQ,IAAA;AAC9B,UAAA,IAAA,CAAK,UAAA,GAAa,OAAA,CAAQ,WAAA,CAAY,IAAI,CAAA,CAAE,GAAA;AAC5C,UAAA,IAAA,CAAK,WAAA,GAAc,OAAA,CAAQ,WAAA,CAAY,MAAM,CAAA,CAAE,GAAA;AAC/C,UAAA,IAAA,CAAK,iBAAiB,OAAA,CAAQ,GAAA;AAC9B,UAAA,IAAA,CAAK,UAAA,GAAa,OAAA,CAAQ,UAAA,CAAW,cAAc,CAAA;AACnD,UAAA,IAAA,CAAK,sBAAsB,OAAA,CAAQ,IAAA;AACnC,UAAA,IAAA,CAAK,mBAAA,GAAsB,IAAA;AAAA,QAC7B,CAAA,MAAA,IAES,SAAS,KAAA,EAClB;AACE,UAAA,IAAA,CAAK,GAAA,GAAM;AAAA,YACT,SAAa,OAAA,CAAQ,OAAA;AAAA,YACrB,WAAa,OAAA,CAAQ,QAAA;AAAA,YACrB,YAAa,OAAA,CAAQ,MAAA;AAAA,YACrB,QAAA,GACA;AACE,cAAA,OAAO,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,SAAA,GAAY,IAAA,CAAK,UAAA;AAAA,YAC9C;AAAA,WACF;AACA,UAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AACd,UAAA,IAAA,CAAK,gBAAgB,OAAA,CAAQ,IAAA;AAC7B,UAAA,IAAA,CAAK,UAAA,GAAa,OAAA,CAAQ,WAAA,CAAY,MAAM,CAAA,CAAE,GAAA;AAC9C,UAAA,IAAA,CAAK,WAAA,GAAc,OAAA,CAAQ,WAAA,CAAY,IAAI,CAAA,CAAE,GAAA;AAC7C,UAAA,IAAA,CAAK,iBAAiB,OAAA,CAAQ,GAAA;AAC9B,UAAA,IAAA,CAAK,UAAA,GAAa,OAAA,CAAQ,UAAA,CAAW,cAAc,EAAE,OAAA,EAAQ;AAC7D,UAAA,IAAA,CAAK,mBAAA,GAAsB,IAAA;AAC3B,UAAA,IAAA,CAAK,sBAAsB,IAAA,CAAK,aAAA;AAAA,QAElC;AAEA,QAAA,IAAA,CAAK,GAAA,CAAI,UAAU,IAAI,CAAA;AACvB,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA,IAAA,EAAO,IAAI,CAAA,4BAAA,EAA+B,IAAA,CAAK,WAAW,CAAA,CAAE,YAAA,GAAe,OAAA,GAAS,WAAW,CAAA,CAAE,CAAA;AAAA,MAChH;AAAA,MAEA,IAAI,EAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACd;AAAA,MAEA,IAAI,YAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,aAAA;AAAA,MACd;AAAA,MAEA,IAAI,aAAa,GAAA,EACjB;AACE,QAAA,IAAA,CAAK,aAAA,GAAgB,GAAA;AAAA,MACvB;AAAA,MAEA,IAAI,KAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAAA,MAEA,IAAI,iBAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,kBAAA;AAAA,MACd;AAAA,MAEA,IAAI,kBAAkB,OAAA,EACtB;AACE,QAAA,IAAA,CAAK,kBAAA,GAAqB,OAAA;AAAA,MAC5B;AAAA,MAEA,IAAI,iBAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,kBAAA;AAAA,MACd;AAAA,MAEA,YAAA,GACA;AACE,QAAA,OAAO,IAAA,CAAK,YAAY,CAAA,CAAE,iBAAA;AAAA,MAC5B;AAAA,MAEA,MAAA,CAAO,SAAS,IAAA,EAChB;AACE,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,gBAAA;AAEhB,QAAA,MAAA,CAAO,MAAM,CAAA,OAAA,EAAU,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,CAAA,4BAAA,CAA8B,CAAA;AAExE,QAAA,IAAI,SAAS,KAAA,EACb;AAEE,UAAA,IAAA,CAAK,UAAA,GAAa,OAAA,CAAQ,UAAA,CAAW,cAAc,EAAE,OAAA,EAAQ;AAAA,QAC/D;AAAA,MACF;AAAA,MAEA,SAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,CAAA,OAAA,EAAU,IAAA,CAAK,GAAA,CAAI,QAAA,EAAU,CAAA,QAAA,CAAU,CAAA;AAEpD,QAAA,IAAA,CAAK,GAAA,CAAI,cAAc,IAAI,CAAA;AAC3B,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,iBAAA;AAAA,MAClB;AAAA,MAEA,WAAA,CAAY,MAAA,EAAQ,OAAA,GAAU,EAAC,EAC/B;AACE,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAC7D,QAAA,MAAM,IAAA,GAAO,QAAQ,IAAA,IAAQ,IAAA;AAC7B,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,cAAA,CAAe,MAAA,EAAQ,cAAc,IAAI,CAAA;AAG9D,QAAA,aAAA,CAAc,kBAAkB,MAChC;AACE,UAAA,IAAA,CAAK,aAAA,IAAiB,CAAA;AAGtB,UAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,EAC/B;AACE,YAAA,IAAA,CAAK,uBAAuB,IAAA,CAAK,aAAA;AAAA,UACnC;AAAA,QACF,CAAA;AAEA,QAAA,MAAM,cAAA,GAAiB,IAAI,oBAAA,CAAqB,IAAA,EAAM,SAAS,aAAa,CAAA;AAE5E,QAAA,cAAA,CAAe,IAAA,EAAK;AAGpB,QAAA,OAAO,OAAA;AAAA,MACT;AAAA,MAEA,eAAe,OAAA,EACf;AAEE,QAAA,IAAI,CAAC,IAAA,CAAK,qBAAA,CAAsB,OAAO,CAAA,EACvC;AACE,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,QAAQ,MAAA,KAAW,OAAA,CAAQ,GAAA,IAAO,IAAA,CAAK,wBAAwB,IAAA,EACnE;AACE,UAAA,IAAA,CAAK,mBAAA,GAAsB,IAAA;AAAA,QAC7B,CAAA,MAAA,IAES,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,EACpC;AACE,UAAA,IAAA,CAAK,sBAAsB,OAAA,CAAQ,IAAA;AAAA,QACrC;AAEA,QAAA,IAAA,CAAK,MAAA,CAAO,eAAe,OAAO,CAAA;AAAA,MACpC;AAAA;AAAA,MAGA,cAAA,CAAe,MAAA,EAAQ,YAAA,EAAc,IAAA,EACrC;AACE,QAAA,YAAA,GAAe,KAAA,CAAM,WAAW,YAAY,CAAA;AAE5C,QAAA,IAAI,CAAC,KAAK,aAAA,EAAe;AAAE,UAAA,IAAA,CAAK,gBAAgB,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,MAAA,KAAW,GAAK,CAAA;AAAA,QAAG;AAGnF,QAAA,MAAM,IAAA,GAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,IAAU,MAAA,KAAW,QAAQ,GAAA,GAC5D,IAAA,CAAK,mBAAA,GACL,IAAA,CAAK,aAAA,IAAiB,CAAA;AAGxB,QAAA,IAAI,MAAA,KAAW,QAAQ,MAAA,EACvB;AACE,UAAA,IAAA,CAAK,mBAAA,GAAsB,IAAA;AAAA,QAC7B;AAEA,QAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAAW,eAAA;AAAA,UAC7B,MAAA;AAAA,UACA,IAAA,CAAK,cAAA;AAAA,UACL,IAAA,CAAK,GAAA;AAAA,UAAK;AAAA,YACR,MAAA,EAAc,IAAA;AAAA,YACd,SAAA,EAAc,KAAK,GAAA,CAAI,OAAA;AAAA,YACvB,YAAc,IAAA,CAAK,UAAA;AAAA,YACnB,UAAA,EAAc,KAAK,GAAA,CAAI,SAAA;AAAA,YACvB,UAAc,IAAA,CAAK,WAAA;AAAA,YACnB,QAAA,EAAc,KAAK,GAAA,CAAI,UAAA;AAAA,YACvB,aAAc,IAAA,CAAK;AAAA,WACrB;AAAA,UAAG,YAAA;AAAA,UAAc;AAAA,SAAI;AAEvB,QAAA,OAAO,OAAA;AAAA,MACT;AAAA;AAAA,MAGA,sBAAsB,OAAA,EACtB;AAEE,QAAA,IAAI,CAAC,KAAK,cAAA,EACV;AACE,UAAA,IAAA,CAAK,iBAAiB,OAAA,CAAQ,IAAA;AAAA,QAChC,CAAA,MAAA,IACS,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,cAAA,EAC7B;AACE,UAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,GAAA,EAC/B;AAGE,YAAA,IAAI,KAAK,mBAAA,KAAwB,IAAA,IAC7B,OAAA,CAAQ,IAAA,KAAS,KAAK,mBAAA,EAC1B;AACE,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF,CAAA,MAEA;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF,CAAA,MAAA,IACS,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,cAAA,EAC7B;AACE,UAAA,IAAA,CAAK,iBAAiB,OAAA,CAAQ,IAAA;AAAA,QAChC;AAGA,QAAA,IAAI,OAAA,CAAQ,WAAW,OAAA,CAAQ,MAAA,IAC1B,QAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,IAAU,OAAA,CAAQ,IAAA,EAClD;AACE,UAAA,IAAI,IAAA,CAAK,uBAAuB,IAAA,EAChC;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,UACnB,CAAA,MAAA,IACS,IAAA,CAAK,kBAAA,KAAuB,IAAA,EACrC;AACE,YAAA,MAAM,UAAA,GAAA,CAAc,IAAA,CAAK,MAAA,EAAO,GAAI,KAAK,CAAA,IAAK,CAAA;AAE9C,YAAA,OAAA,CAAQ,MAAM,GAAA,EAAK,IAAA,EAAM,CAAE,CAAA,YAAA,EAAe,UAAU,EAAG,CAAC,CAAA;AAExD,YAAA,OAAO,KAAA;AAAA,UACT,CAAA,MAEA;AACE,YAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAE1B,YAAA,MAAM,eAAe,MACrB;AACE,cAAA,IAAI,QAAQ,kBAAA,CAAmB,KAAA,KAAU,YAAA,CAAa,CAAA,CAAE,mBACpD,OAAA,CAAQ,kBAAA,CAAmB,KAAA,KAAU,YAAA,CAAa,EAAE,gBAAA,IACpD,OAAA,CAAQ,mBAAmB,KAAA,KAAU,YAAA,CAAa,EAAE,iBAAA,EACxD;AAEE,gBAAA,OAAA,CAAQ,kBAAA,CAAmB,cAAA,CAAe,cAAA,EAAgB,YAAY,CAAA;AACtE,gBAAA,IAAA,CAAK,kBAAA,GAAqB,KAAA;AAAA,cAC5B;AAAA,YACF,CAAA;AAEA,YAAA,OAAA,CAAQ,kBAAA,CAAmB,EAAA,CAAG,cAAA,EAAgB,YAAY,CAAA;AAAA,UAC5D;AAGA,UAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA,EAC/B;AACE,YAAA,OAAA,CAAQ,kBAAA,CAAmB,EAAA,CAAG,cAAA,EAAgB,MAC9C;AACE,cAAA,IAAI,OAAA,CAAQ,kBAAA,CAAmB,KAAA,KAAU,YAAA,CAAa,EAAE,eAAA,EACxD;AACE,gBAAA,IAAA,CAAK,cAAA,GAAiB,OAAA,CAAQ,WAAA,CAAY,SAAS,CAAA,CAAE,GAAA;AAAA,cACvD;AAAA,YACF,CAAC,CAAA;AAAA,UACH;AAAA,QACF,CAAA,MAAA,IACS,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,EACpC;AAEE,UAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA,EAC/B;AACE,YAAA,OAAA,CAAQ,kBAAA,CAAmB,EAAA,CAAG,cAAA,EAAgB,MAC9C;AACE,cAAA,IAAI,OAAA,CAAQ,kBAAA,CAAmB,KAAA,KAAU,YAAA,CAAa,EAAE,gBAAA,EACxD;AACE,gBAAA,IAAA,CAAK,cAAA,GAAiB,OAAA,CAAQ,WAAA,CAAY,SAAS,CAAA,CAAE,GAAA;AAAA,cACvD;AAAA,YACF,CAAC,CAAA;AAAA,UACH;AAAA,QACF;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/UA,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,iBAAiB,CAAA;AAE3C,IAAA,IAAM,CAAA,GAAI;AAAA,MACR,YAAA,EAAyB,EAAA;AAAA,MACzB,YAAA,EAAyB,GAAA;AAAA,MACzB,gBAAA,EAAyB,GAAA;AAAA,MACzB,kBAAA,EAAyB,EAAA;AAAA,MACzB,sBAAA,EAAyB;AAAA,KAC3B;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,IAAA,SAAaA,aAAAA,CACpC;AAAA,MACE,YAAY,OAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAChB,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AACb,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAAA,MAClB;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,QAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,SAAA;AAAA,MACd;AAAA,MAEA,IAAA,CAAK,IAAA,EAAM,OAAA,GAAU,EAAC,EACtB;AACE,QAAA,IAAI,SAAS,MAAA,EACb;AACE,UAAA,MAAM,IAAI,UAAU,sBAAsB,CAAA;AAAA,QAC5C;AAEA,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAGlB,QAAA,IACE,IAAA,CAAK,SAAS,MAAA,KAAW,IAAA,CAAK,SAAS,CAAA,CAAE,gBAAA,IACzC,KAAK,QAAA,CAAS,MAAA,KAAW,KAAK,QAAA,CAAS,CAAA,CAAE,0BACzC,IAAA,CAAK,QAAA,CAAS,WAAW,IAAA,CAAK,QAAA,CAAS,EAAE,mBAAA,EAE3C;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA,QAC7D;AAEA,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAE1D,QAAA,IAAA,CAAK,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAG5D,QAAA,IAAI,OAAO,SAAS,QAAA,EACpB;AACE,UAAA,IAAA,GAAO,KAAK,WAAA,EAAY;AAAA,QAC1B,CAAA,MAAA,IACS,OAAO,IAAA,KAAS,QAAA,EACzB;AACE,UAAA,IAAA,GAAO,KAAK,QAAA,EAAS;AAAA,QACvB,CAAA,MAEA;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,cAAA,EAAiB,IAAI,CAAA,CAAE,CAAA;AAAA,QAC7C;AAGA,QAAA,IAAI,CAAC,IAAA,CAAK,KAAA,CAAM,eAAe,CAAA,EAC/B;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,cAAA,EAAiB,IAAI,CAAA,CAAE,CAAA;AAAA,QAC7C,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,QACf;AAGA,QAAA,IAAA,CAAK,YAAY,OAAA,CAAQ,QAAA;AAEzB,QAAA,YAAA,CAAa,KAAK,sCAAsC,CAAA;AAExD,QAAA,IAAI,IAAA,GAAO,CAAA,OAAA,EAAU,IAAA,CAAK,KAAK,CAAA;AAAA,CAAA;AAE/B,QAAA,IAAA,IAAQ,CAAA,SAAA,EAAY,KAAK,SAAS,CAAA,CAAA;AAElC,QAAA,IAAA,CAAK,SAAS,OAAA,CAAQ;AAAA,UACpB,UAAA,EAAa,OAAA;AAAA,UACb,IAAA,EAAa,IAAA;AAAA,UACb,SAAa,IAAA,CAAK;AAAA,SACnB,CAAA;AAED,QAAA,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM;AAAA,UACtC,YAAA;AAAA,UACA,aAAA,EAAgB;AAAA,YACd,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,cAAA,IAAA,CAAK,KAAK,WAAA,EAAa;AAAA,gBACrB,UAAA,EAAa,QAAA;AAAA,gBACb;AAAA,eACD,CAAA;AAAA,YACH,CAAA;AAAA,YACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,cAAA,IAAI,IAAA,CAAK,cAAc,QAAA,EACvB;AACE,gBAAA,IAAA,CAAK,cAAc,QAAA,EAAS;AAAA,cAC9B;AAEA,cAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,gBAClB,UAAA,EAAa,QAAA;AAAA,gBACb;AAAA,eACD,CAAA;AAAA,YACH,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,SAAS,gBAAA,EAAiB;AAAA,YACjC,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,SAAS,gBAAA,EAAiB;AAAA,YACjC,CAAA;AAAA,YACA,eAAgB,MAChB;AACE,cAAA,IAAA,CAAK,SAAS,aAAA,EAAc;AAAA,YAC9B;AAAA,WACF;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,cAAc,OAAA,EACd;AACE,QAAA,MAAM,QAAA,GAAW,0CAAA;AACjB,QAAA,MAAM,YAAA,GAAe,uCAAA;AAErB,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAEhB,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,QAAA,IAAI,QAAQ,IAAA,EACZ;AACE,UAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,IAAA,CAAK,KAAA,CAAM,IAAI,CAAA;AAEpC,UAAA,IAAI,IAAA,CAAK,UAAU,CAAA,EACnB;AACE,YAAA,IAAI,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA,EACzB;AACE,cAAA,IAAA,CAAK,QAAQ,IAAA,CAAK,CAAC,CAAA,CAAE,OAAA,CAAQ,UAAU,IAAI,CAAA;AAAA,YAC7C;AAAA,UACF;AACA,UAAA,IAAI,IAAA,CAAK,UAAS,CAAA,EAClB;AACE,YAAA,IAAI,YAAA,CAAa,IAAA,CAAK,IAAA,CAAK,CAAC,CAAC,CAAA,EAC7B;AACE,cAAA,IAAA,CAAK,SAAA,GAAY,SAAS,IAAA,CAAK,CAAC,EAAE,OAAA,CAAQ,YAAA,EAAc,IAAI,CAAA,EAAG,EAAE,CAAA;AAAA,YACnE;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,KAAK,SAAA,EACV;AACE,UAAA,IAAA,CAAK,YAAY,CAAA,CAAE,gBAAA;AAAA,QACrB;AAEA,QAAA,IAAI,CAAC,KAAK,KAAA,EACV;AACE,UAAA,MAAA,CAAO,MAAM,uCAAuC,CAAA;AAAA,QACtD,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,SAAS,OAAA,CAAQ;AAAA,YACpB,UAAA,EAAa,QAAA;AAAA,YACb,IAAA,EAAa,IAAA;AAAA,YACb;AAAA,WACD,CAAA;AAAA,QACH;AAAA,MACF;AAAA,KACF;AAKA,IAAA,MAAA,CAAO,QAAQ,CAAA,GAAI,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjMnB,IAAA,YAAA,GAAA,UAAA,CAAA;AAAA,EAAA,iFAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,IAAA,SAAaA,aAAAA,CACpC;AAAA,MACE,YAAY,OAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAChB,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAAA,MACf;AAAA,MAEA,IAAI,WAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,YAAA;AAAA,MACd;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAA,CAAK,WAAA,EAAa,IAAA,EAAM,OAAA,GAAU,EAAC,EACnC;AACE,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAElB,QAAA,IAAI,gBAAgB,MAAA,EACpB;AACE,UAAA,MAAM,IAAI,UAAU,sBAAsB,CAAA;AAAA,QAC5C;AAGA,QAAA,IAAI,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,IAAA,CAAK,QAAA,CAAS,CAAA,CAAE,gBAAA,IAC3C,IAAA,CAAK,QAAA,CAAS,MAAA,KAAW,IAAA,CAAK,QAAA,CAAS,EAAE,sBAAA,EAC3C;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,SAAS,MAAM,CAAA;AAAA,QAC7D;AAEA,QAAA,IAAA,CAAK,YAAA,GAAe,WAAA;AACpB,QAAA,IAAA,CAAK,KAAA,GAAQ,IAAA;AAEb,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAE1D,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAA;AAEhD,QAAA,IAAA,CAAK,SAAS,OAAA,CAAQ;AAAA,UACpB,UAAA,EAAa,OAAA;AAAA,UACb,IAAA,EAAa,IAAA;AAAA,UACb,SAAa,IAAA,CAAK;AAAA,SACnB,CAAA;AAED,QAAA,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,OAAA,CAAQ,IAAA,EAAM;AAAA,UACtC,YAAA;AAAA,UACA,aAAA,EAAgB;AAAA,YACd,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,cAAA,IAAA,CAAK,KAAK,WAAA,EAAa;AAAA,gBACrB,UAAA,EAAa,QAAA;AAAA,gBACb;AAAA,eACD,CAAA;AAAA,YACH,CAAA;AAAA,YACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,cAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,gBAClB,UAAA,EAAa,QAAA;AAAA,gBACb;AAAA,eACD,CAAA;AAAA,YACH,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,SAAS,gBAAA,EAAiB;AAAA,YACjC,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,SAAS,gBAAA,EAAiB;AAAA,YACjC,CAAA;AAAA,YACA,eAAgB,MAChB;AACE,cAAA,IAAA,CAAK,SAAS,aAAA,EAAc;AAAA,YAC9B;AAAA,WACF;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,cAAc,OAAA,EACd;AACE,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AAEf,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,QAAA,IAAA,CAAK,YAAA,GAAe,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA,GAClD,QAAQ,SAAA,CAAU,cAAc,CAAA,CAAE,WAAA,EAAY,GAAI,MAAA;AACpD,QAAA,IAAA,CAAK,QAAQ,OAAA,CAAQ,IAAA;AAErB,QAAA,IAAA,CAAK,SAAS,OAAA,CAAQ;AAAA,UACpB,UAAA,EAAa,QAAA;AAAA,UACb,IAAA,EAAa,IAAA;AAAA,UACb;AAAA,SACD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3GA,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0FAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAEhB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,0BAA0B,CAAA;AAEpD,IAAA,IAAM,CAAA,GAAI;AAAA,MACR,UAAA,EAAa,OAAA;AAAA,MACb,SAAA,EAAa,6BAAA;AAAA,MACb,OAAA,EAAa;AAAA,KACf;AAEA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,aAAA,CACvB;AAAA,MACE,WAAA,CAAY,OAAA,EAAS,EAAA,EAAI,OAAA,EACzB;AACE,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAChB,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,QAAA,GAAW,WAAW,CAAA,CAAE,OAAA;AAC7B,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAGf,QAAA,IAAA,CAAK,OAAO,GAAG,CAAA;AAAA,MACjB;AAAA,MAEA,MAAA,CAAO,MAAM,MAAA,EACb;AACE,QAAA,MAAA,CAAO,MAAM,UAAU,CAAA;AAEvB,QAAA,IAAI,IAAA,CAAK,YAAY,KAAA,EACrB;AACE,UAAA;AAAA,QACF;AAEA,QAAA,MAAA,GAAS,MAAA,IAAU,OAAA,CAAQ,aAAA,CAAc,IAAI,CAAA,IAAK,EAAA;AAElD,QAAA,IAAI,KAAA;AAEJ,QAAA,IAAI,QAAQ,GAAA,EACZ;AACE,UAAA,KAAA,GAAQ,8BAAA;AAAA,QACV,CAAA,MAEA;AACE,UAAA,KAAA,GAAQ,CAAA,eAAA,EAAkB,KAAK,QAAQ,CAAA,CAAA;AAAA,QACzC;AAGA,QAAA,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,OAAA,CAAQ,MAAA,EAAQ;AAAA,UACxC,YAAA,EAAe;AAAA,YACb,CAAA,OAAA,EAAU,CAAA,CAAE,UAAU,CAAA,IAAA,EAAO,KAAK,GAAG,CAAA,CAAA;AAAA,YACrC,uBAAuB,KAAK,CAAA,CAAA;AAAA,YAC5B,CAAA,cAAA,EAAiB,EAAE,SAAS,CAAA;AAAA,WAC9B;AAAA,UACA,IAAA,EAAgB,CAAA,QAAA,EAAW,IAAI,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA,UACzC,aAAA,EAAgB;AAAA;AAAA,YAEd,eAAA,GAAkB;AAAE,cAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAAA,YAAO;AAAA;AAC5C,SACD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5DA,IAAA,uBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4FAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,4BAA4B,CAAA;AAEtD,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,eAAA,SAAwBA,aAAAA,CAC/C;AAAA,MACE,YAAY,OAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AACX,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAAA,MAClB;AAAA,MAEA,IAAI,EAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACd;AAAA,MAEA,SAAA,CAAU,MAAA,EAAQ,OAAA,GAAU,EAAC,EAC7B;AACE,QAAA,MAAA,CAAO,MAAM,aAAa,CAAA;AAE1B,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAG7D,QAAA,KAAA,MAAW,SAAS,aAAA,EACpB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA,EAC7D;AACE,YAAA,IAAA,CAAK,EAAA,CAAG,KAAA,EAAO,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,UACrC;AAAA,QACF;AAGA,QAAA,IAAI,QAAA,GAAW,IAAA;AAEf,QAAA,IAAI,QAAQ,QAAA,EACZ;AACE,UAAA,QAAA,GAAW,OAAA,CAAQ,SAAS,QAAA,CAAS,OAAA;AACrC,UAAA,QAAA,IAAY,CAAA,QAAA,EAAW,OAAA,CAAQ,QAAA,CAAS,OAAO,CAAA,CAAA;AAC/C,UAAA,QAAA,IAAY,CAAA,UAAA,EAAa,OAAA,CAAQ,QAAA,CAAS,SAAS,CAAA,CAAA;AAEnD,UAAA,QAAA,GAAW,mBAAmB,QAAQ,CAAA;AAAA,QACxC;AAGA,QAAA,MAAM,OAAA,GAAU,cAAc,MAAM,CAAA,EAAG,WAAS,CAAA,UAAA,EAAa,QAAQ,KAAG,EAAE,CAAA,CAAA,CAAA;AAE1E,QAAA,YAAA,CAAa,KAAK,OAAO,CAAA;AAGzB,QAAA,IAAI,CAAC,YAAA,CAAa,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,WAAA,EAAY,CAAE,UAAA,CAAW,cAAc,CAAC,CAAA,EAClF;AACE,UAAA,MAAM,UAAA,GAAa,iBAAiB,IAAA,CAAK,QAAA,CAAS,IAAI,cAAA,CAAe,GAAA,CAAI,OAAO,CAAA,CAAA,EAAI,IAAA,CAAK,SAAS,GAAA,CAAI,cAAA,CAAe,IAAI,KAAK,CAAA,CAAA,EAAI,KAAK,QAAA,CAAS,GAAA,CAAI,cAAA,CAAe,GAAA,CAAI,KAAK,CAAA,CAAA,CAAA;AAE5K,UAAA,YAAA,CAAa,KAAK,UAAU,CAAA;AAAA,QAC9B;AAEA,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,SAAA,EAAY,IAAA,CAAK,QAAA,CAAS,OAAO,CAAA,CAAE,CAAA;AAErD,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,WAAA,CAAY,QAAQ,KAAA,EAAO;AAAA,UACvD,YAAA;AAAA,UACA,aAAA,EAAgB;AAAA,YACd,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,cAAA,IAAA,CAAK,kBAAkB,QAAQ,CAAA;AAAA,YACjC,CAAA;AAAA,YACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,QAAA,EAAU,OAAA,CAAQ,MAAA,CAAO,QAAQ,CAAA;AAAA,YACvD,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,gBAAgB,CAAA;AAAA,YAC3D,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,eAAe,CAAA;AAAA,YAC1D,CAAA;AAAA,YACA,eAAgB,MAChB;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,IAAA,EAAM,OAAA,CAAQ,MAAA,CAAO,YAAY,CAAA;AAAA,YACvD;AAAA;AACF,SACD,CAAA;AAED,QAAA,IAAA,CAAK,MAAM,OAAA,CAAQ,IAAA;AAAA,MACrB;AAAA,MAEA,cAAc,OAAA,EACd;AACE,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,IAAI,CAAC,QAAQ,IAAA,EACb;AACE,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAA,EAAK,CAAE,KAAA,CAAM,MAAA,EAAQ,CAAC,CAAA,CAAE,CAAC,GAAG,aAAa,CAAA;AAExF,QAAA,IAAI,gBAAgB,EAAA,EACpB;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,8CAAA,EAAiD,OAAA,CAAQ,IAAI,CAAA,CAAA,CAAG,CAAA;AAE7E,UAAA;AAAA,QACF;AAEA,QAAA,QAAQ,IAAA;AACR,UACE,KAAK,OAAA,CAAQ,IAAA,CAAK,WAAA,CAAY,WAAW,CAAA;AACvC,YAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,cAClB,OAAA;AAAA,cACA;AAAA,aACD,CAAA;AACD,YAAA;AAAA,UAEF,KAAK,aAAA,CAAc,IAAA,CAAK,WAAA,CAAY,WAAW,CAAA;AAC7C,YAAA,IAAA,CAAK,KAAK,UAAA,EAAY;AAAA,cACpB,OAAA;AAAA,cACA;AAAA,aACD,CAAA;AACD,YAAA;AAAA,UAEF,KAAK,aAAA,CAAc,IAAA,CAAK,WAAA,CAAY,WAAW,CAAA;AAC7C,YAAA,IAAA,CAAK,KAAK,UAAA,EAAY;AAAA,cACpB,OAAA;AAAA,cACA;AAAA,aACD,CAAA;AACD,YAAA;AAAA,UAEF;AACE,YAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,cAClB,OAAA;AAAA,cACA;AAAA,aACD,CAAA;AACD,YAAA;AAAA;AACJ,MACF;AAAA,MAEA,kBAAkB,QAAA,EAClB;AACE,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,MAAA,CAAO,MAAM,yBAAyB,CAAA;AAEtC,QAAA,IAAA,CAAK,KAAK,kBAAA,EAAoB;AAAA,UAC5B;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,cAAA,CAAe,UAAU,KAAA,EACzB;AACE,QAAA,MAAA,CAAO,MAAM,cAAc,CAAA;AAE3B,QAAA,MAAA,CAAO,MAAM,sBAAsB,CAAA;AAEnC,QAAA,IAAA,CAAK,KAAK,eAAA,EAAiB;AAAA,UACzB,UAAW,QAAA,IAAY,IAAA;AAAA,UACvB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvKA,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAGA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,aAAA,GAAgB,WAAA,EAAA;AACtB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,YAAA,GAAe,oBAAA,EAAA;AACrB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,aAAA,GAAgB,qBAAA,EAAA;AACtB,IAAA,IAAM,eAAA,GAAkB,YAAA,EAAA;AACxB,IAAA,IAAM,eAAA,GAAkB,YAAA,EAAA;AACxB,IAAA,IAAM,wBAAA,GAA2B,qBAAA,EAAA;AACjC,IAAA,IAAM,0BAAA,GAA6B,uBAAA,EAAA;AACnC,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AAEZ,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,YAAY,CAAA;AAEtC,IAAA,IAAM,CAAA,GAAI;AAAA;AAAA,MAER,WAAA,EAA4B,CAAA;AAAA,MAC5B,kBAAA,EAA4B,CAAA;AAAA,MAC5B,mBAAA,EAA4B,CAAA;AAAA,MAC5B,sBAAA,EAA4B,CAAA;AAAA,MAC5B,yBAAA,EAA4B,CAAA;AAAA,MAC5B,eAAA,EAA4B,CAAA;AAAA,MAC5B,sBAAA,EAA4B,CAAA;AAAA,MAC5B,eAAA,EAA4B,CAAA;AAAA,MAC5B,iBAAA,EAA4B,CAAA;AAAA,MAC5B,gBAAA,EAA4B;AAAA,KAC9B;AAKA,IAAA,IAAM,cAAA,GAAiB,CAAE,OAAA,EAAS,OAAQ,CAAA;AAE1C,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,UAAA,SAAmBA,aAAAA,CAC1C;AAAA;AAAA;AAAA;AAAA,MAIE,WAAW,CAAA,GACX;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,YAAY,EAAA,EACZ;AACE,QAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAElB,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AACX,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,WAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,gBAAgB,EAAC;AACtB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAGf,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAGnB,QAAA,IAAA,CAAK,uBAAA,GAA0B,QAAQ,OAAA,EAAQ;AAG/C,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAGhB,QAAA,IAAA,CAAK,YAAA,GAAe,KAAA;AACpB,QAAA,IAAA,CAAK,cAAA,GAAiB,EAAA;AAGtB,QAAA,IAAA,CAAK,aAAA,GAAgB,KAAA;AAGrB,QAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAGjB,QAAA,IAAA,CAAK,oBAAA,GAAuB,IAAA;AAC5B,QAAA,IAAA,CAAK,qBAAA,GAAwB,IAAA;AAG7B,QAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AACzB,QAAA,IAAA,CAAK,iCAAA,GAAoC,KAAA;AAGzC,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAGjB,QAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAGjB,QAAA,IAAA,CAAK,OAAA,GAAU;AAAA,UACb,QAAA,EAAoB,IAAA;AAAA,UACpB,YAAA,EAAoB,IAAA;AAAA,UACpB,cAAA,EAAoB,IAAA;AAAA,UACpB,iBAAA,EAAoB;AAAA,SACtB;AAGA,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,QAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA;AACxB,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAGd,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,QAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAClB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAGnB,QAAA,IAAA,CAAK,cAAA,GAAiB;AAAA,UACpB,OAAA,EAAiB,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,cAAA;AAAA,UACxC,aAAA,EAAiB,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,6BAAA;AAAA,UACxC,gBAAiB,OAAA,CAAQ,eAAA;AAAA,UACzB,cAAA,EAAiB,IAAA;AAAA,UACjB,OAAA,EAAiB,KAAA;AAAA,UACjB,SAAA,EAAiB,KAAA;AAAA,UACjB,KAAA,EAAiB;AAAA;AAAA,SACnB;AAGA,QAAA,IAAA,CAAK,oBAAoB,EAAC;AAG1B,QAAA,IAAA,CAAK,QAAQ,EAAC;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA;AAAA,MAGA,IAAI,MAAA,GACJ;AACE,QAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,MACjB;AAAA,MAEA,IAAI,EAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,GAAA;AAAA,MACd;AAAA,MAEA,IAAI,UAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,WAAA;AAAA,MACd;AAAA,MAEA,IAAI,OAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA,MAEA,IAAI,SAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,UAAA;AAAA,MACd;AAAA,MAEA,IAAI,cAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,eAAA;AAAA,MACd;AAAA,MAEA,IAAI,eAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,MACd;AAAA,MAEA,IAAI,UAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,WAAA;AAAA,MACd;AAAA,MAEA,IAAI,QAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,SAAA;AAAA,MACd;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAK,KAAA,EACT;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA,MAEA,IAAI,MAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACd;AAAA,MAEA,YAAA,GACA;AACE,QAAA,QAAQ,KAAK,OAAA;AACb,UACE,KAAK,CAAA,CAAE,WAAA;AAAA,UACP,KAAK,CAAA,CAAE,kBAAA;AAAA,UACP,KAAK,CAAA,CAAE,mBAAA;AAAA,UACP,KAAK,CAAA,CAAE,sBAAA;AAAA,UACP,KAAK,CAAA,CAAE,yBAAA;AACL,YAAA,OAAO,IAAA;AAAA,UACT;AACE,YAAA,OAAO,KAAA;AAAA;AACX,MACF;AAAA,MAEA,aAAA,GACA;AACE,QAAA,QAAQ,KAAK,OAAA;AACb,UACE,KAAK,CAAA,CAAE,eAAA;AAAA,UACP,KAAK,CAAA,CAAE,sBAAA;AAAA,UACP,KAAK,CAAA,CAAE,gBAAA;AACL,YAAA,OAAO,IAAA;AAAA,UACT;AACE,YAAA,OAAO,KAAA;AAAA;AACX,MACF;AAAA,MAEA,OAAA,GACA;AACE,QAAA,QAAQ,KAAK,OAAA;AACb,UACE,KAAK,CAAA,CAAE,eAAA;AAAA,UACP,KAAK,CAAA,CAAE,iBAAA;AACL,YAAA,OAAO,IAAA;AAAA,UACT;AACE,YAAA,OAAO,KAAA;AAAA;AACX,MACF;AAAA,MAEA,OAAA,GACA;AACE,QAAA,OAAO;AAAA,UACL,OAAQ,IAAA,CAAK,WAAA;AAAA,UACb,OAAQ,IAAA,CAAK;AAAA,SACf;AAAA,MACF;AAAA,MAEA,QAAA,GACA;AACE,QAAA,OAAO;AAAA,UACL,OAAS,IAAA,CAAK,UAAA;AAAA,UACd,QAAS,IAAA,CAAK;AAAA,SAChB;AAAA,MACF;AAAA,MAEA,OAAA,CAAQ,MAAA,EAAQ,OAAA,GAAU,IAAI,YAAA,EAC9B;AACE,QAAA,MAAA,CAAO,MAAM,WAAW,CAAA;AAExB,QAAA,MAAM,cAAA,GAAiB,MAAA;AACvB,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAC7D,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,gBAAA,EAAkB;AAAA,UACnE,KAAA,EAAQ,IAAA;AAAA,UACR,KAAA,EAAQ;AAAA,SACT,CAAA;AACD,QAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,IAAA;AAC3C,QAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,OAAA,CAAQ,UAAU,EAAE,UAAA,EAAY,EAAC,EAAG,CAAA;AACvE,QAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,IAAA;AACjD,QAAA,MAAM,mBAAA,GAAsB,QAAQ,mBAAA,IAAuB,IAAA;AAE3D,QAAA,IAAA,CAAK,oBAAA,GAAuB,mBAAA;AAC5B,QAAA,IAAA,CAAK,qBAAA,GAAwB,QAAQ,oBAAA,IAAwB,IAAA;AAE7D,QAAA,IAAA,CAAK,KAAA,GAAQ,OAAA,CAAQ,IAAA,IAAQ,IAAA,CAAK,KAAA;AAGlC,QAAA,IAAI,WAAW,MAAA,EACf;AACE,UAAA,MAAM,IAAI,UAAU,sBAAsB,CAAA;AAAA,QAC5C;AAGA,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,WAAA,EACvB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA;AAAA,QACrD;AAGA,QAAA,IAAI,CAAC,OAAO,iBAAA,EACZ;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,sBAAsB,CAAA;AAAA,QAC/D;AAGA,QAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,eAAA,CAAgB,MAAM,CAAA;AACxC,QAAA,IAAI,CAAC,MAAA,EACL;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,gBAAA,EAAmB,cAAc,CAAA,CAAE,CAAA;AAAA,QACzD;AAGA,QAAA,IAAI,IAAA,CAAK,eAAe,OAAA,EACxB;AACE,UAAA,IAAI,KAAA,CAAM,SAAA,CAAU,OAAA,CAAQ,oBAAoB,CAAA,EAChD;AACE,YAAA,IAAI,OAAA,CAAQ,oBAAA,IAAwB,OAAA,CAAQ,mBAAA,EAC5C;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,iBAAiB,OAAA,CAAQ,oBAAA;AAAA,YAC/C,CAAA,MAEA;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,iBAAiB,OAAA,CAAQ,eAAA;AAAA,YAC/C;AAAA,UACF;AAAA,QACF;AAGA,QAAA,KAAA,MAAW,SAAS,aAAA,EACpB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA,EAC7D;AACE,YAAA,IAAA,CAAK,EAAA,CAAG,KAAA,EAAO,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,UACrC;AAAA,QACF;AAGA,QAAA,IAAA,CAAK,SAAA,GAAY,MAAM,MAAA,EAAO;AAG9B,QAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,KAAA;AAEvC,QAAA,MAAM,aAAA,GAAgB,EAAE,QAAA,EAAU,IAAA,CAAK,SAAA,EAAU;AAEjD,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,QAAA,CAAS;AAAA,UACxC,SAAA;AAAA,UACA,QAAA,EAAW;AAAA,SACZ,CAAA;AAED,QAAA,IAAI,SAAA,EACJ;AACE,UAAA,aAAA,CAAc,iBAAA,GAAoB,WAAA;AAClC,UAAA,aAAA,CAAc,QAAA,GAAW,IAAI,GAAA,CAAI,KAAA,EAAO,aAAa,mBAAmB,CAAA;AAExE,UAAA,YAAA,CAAa,IAAA,CAAK,yBAAyB,IAAA,CAAK,GAAA,CAAI,cAAc,GAAA,CAAI,QAAA,EAAU,CAAA,CAAE,CAAA;AAClF,UAAA,YAAA,CAAa,KAAK,aAAa,CAAA;AAAA,QACjC,CAAA,MAAA,IACS,QAAQ,YAAA,EACjB;AACE,UAAA,aAAA,CAAc,QAAA,GAAW,IAAI,GAAA,CAAI,KAAA,EAAO,OAAA,CAAQ,cAAc,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAE7F,UAAA,YAAA,CAAa,IAAA,CAAK,yBAAyB,IAAA,CAAK,GAAA,CAAI,cAAc,GAAA,CAAI,QAAA,EAAU,CAAA,CAAE,CAAA;AAAA,QACpF;AAEA,QAAA,IAAI,QAAQ,eAAA,EACZ;AACE,UAAA,aAAA,CAAc,oBAAoB,OAAA,CAAQ,eAAA;AAAA,QAC5C;AAEA,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAC7C,QAAA,YAAA,CAAa,KAAK,+BAA+B,CAAA;AACjD,QAAA,IAAI,IAAA,CAAK,eAAe,OAAA,EACxB;AACE,UAAA,YAAA,CAAa,IAAA,CAAK,CAAA,iBAAA,EAAoB,IAAA,CAAK,cAAA,CAAe,cAAc,CAAA,EAAG,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,8BAAA,GAAiC,gBAAA,GAAmB,EAAE,CAAA,CAAE,CAAA;AAAA,QAC5J;AAEA,QAAA,IAAA,CAAK,QAAA,GAAW,IAAI,UAAA,CAAW,4BAAA;AAAA,UAC7B,MAAA;AAAA,UAAQ,IAAA,CAAK,GAAA;AAAA,UAAK,aAAA;AAAA,UAAe;AAAA,SAAY;AAE/C,QAAA,IAAA,CAAK,GAAA,GAAM,IAAA,CAAK,QAAA,CAAS,OAAA,GAAU,IAAA,CAAK,SAAA;AAGxC,QAAA,IAAA,CAAK,oBAAA,CAAqB,UAAU,cAAc,CAAA;AAGlD,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,eAAA,GAAkB,KAAK,QAAA,CAAS,IAAA;AACrC,QAAA,IAAA,CAAK,gBAAA,GAAmB,KAAK,QAAA,CAAS,EAAA;AAGtC,QAAA,IAAI,YAAA,EACJ;AACE,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QACnB;AAEA,QAAA,IAAA,CAAK,cAAA,CAAe,OAAA,EAAS,IAAA,CAAK,QAAQ,CAAA;AAE1C,QAAA,IAAA,CAAK,mBAAA,CAAoB,gBAAA,EAAkB,mBAAA,EAAqB,WAAW,CAAA;AAAA,MAC7E;AAAA,MAEA,aAAA,CAAc,SAAS,YAAA,EACvB;AACE,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,IAAI,OAAA;AACJ,QAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA,GAClD,QAAQ,SAAA,CAAU,cAAc,CAAA,CAAE,WAAA,EAAY,GAAI,MAAA;AAGpD,QAAA,IAAI,OAAA,CAAQ,IAAA,IAAS,WAAA,KAAgB,iBAAA,EACrC;AACE,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAGA,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,sBAAA;AACjB,QAAA,IAAA,CAAK,YAAY,OAAA,CAAQ,QAAA;AACzB,QAAA,IAAA,CAAK,GAAA,GAAM,OAAA,CAAQ,OAAA,GAAU,IAAA,CAAK,SAAA;AAClC,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAChB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,OAAA,CAAQ,QAAA,EAAS;AAG1C,QAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA,EAC/B;AACE,UAAA,OAAA,GAAU,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA,GAAI,GAAA;AAAA,QAC3C;AAKA,QAAA,OAAA,CAAQ,MAAA,GAAS,MAAM,MAAA,EAAO;AAG9B,QAAA,IAAI,CAAC,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,KAAA,EAAO,IAAI,CAAA,EAC5C;AACE,UAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,8BAA8B,CAAA;AAEjD,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,QAAQ,IAAA,EACZ;AACE,UAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAAA,QACnB,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAAA,QACnB;AAEA,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,yBAAA;AAGjB,QAAA,IAAA,CAAK,QAAQ,iBAAA,GAAoB,UAAA;AAAA,UAAW,MAC5C;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,YAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,CAAQ,OAAO,SAAS,CAAA;AAAA,UACtD,CAAA;AAAA,UAAG,IAAA,CAAK,IAAI,aAAA,CAAc;AAAA,SAC1B;AAKA,QAAA,IAAI,OAAA,EACJ;AACE,UAAA,IAAA,CAAK,QAAQ,YAAA,GAAe,UAAA;AAAA,YAAW,MACvC;AACE,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,yBAAA,EACvB;AACE,gBAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,gBAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,OAAO,CAAA;AAAA,cACrD;AAAA,YACF,CAAA;AAAA,YAAG;AAAA,WACH;AAAA,QACF;AAGA,QAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,QAAA,IAAA,CAAK,kBAAkB,OAAA,CAAQ,EAAA;AAC/B,QAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,IAAA;AAGhC,QAAA,IAAI,YAAA,EACJ;AACE,UAAA,YAAA,CAAa,IAAI,CAAA;AAAA,QACnB;AAGA,QAAA,IAAA,CAAK,cAAA,CAAe,UAAU,OAAO,CAAA;AAGrC,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,UAAA;AAAA,QACF;AAGA,QAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,IAAA,EAAM,CAAE,YAAY,IAAA,CAAK,QAAQ,EAAG,CAAC,CAAA;AAIxD,QAAA,IAAA,CAAK,SAAA,CAAU,SAAS,IAAI,CAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,CAAO,OAAA,GAAU,EAAC,EAClB;AACE,QAAA,MAAA,CAAO,MAAM,UAAU,CAAA;AAEvB,QAAA,MAAM,UAAU,IAAA,CAAK,QAAA;AACrB,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,gBAAA,GAAmB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,gBAAgB,CAAA;AACnE,QAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,IAAA;AAC3C,QAAA,MAAM,QAAA,GAAW,MAAM,WAAA,CAAY,OAAA,CAAQ,UAAU,EAAE,UAAA,EAAY,EAAC,EAAG,CAAA;AACvE,QAAA,MAAM,cAAA,GAAiB,QAAQ,cAAA,IAAkB,IAAA;AACjD,QAAA,MAAM,oBAAA,GAAuB,QAAQ,oBAAA,IAAwB,IAAA;AAC7D,QAAA,MAAM,mBAAA,GAAsB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,mBAAmB,CAAA;AAEzE,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,QAAA,IAAI,gBAAA,GAAmB,KAAA;AACvB,QAAA,IAAI,mBAAA,GAAsB,KAAA;AAC1B,QAAA,IAAI,mBAAA,GAAsB,KAAA;AAE1B,QAAA,IAAA,CAAK,qBAAA,GAAwB,oBAAA;AAC7B,QAAA,IAAA,CAAK,oBAAA,GAAuB,QAAQ,mBAAA,IAAuB,IAAA;AAE3D,QAAA,IAAA,CAAK,KAAA,GAAQ,OAAA,CAAQ,IAAA,IAAQ,IAAA,CAAK,KAAA;AAGlC,QAAA,IAAI,IAAA,CAAK,eAAe,UAAA,EACxB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,gDAAgD,CAAA;AAAA,QACzF;AAGA,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,yBAAA,EACvB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA;AAAA,QACrD;AAGA,QAAA,IAAI,IAAA,CAAK,eAAe,OAAA,EACxB;AACE,UAAA,IAAI,KAAA,CAAM,SAAA,CAAU,OAAA,CAAQ,oBAAoB,CAAA,EAChD;AACE,YAAA,IAAI,OAAA,CAAQ,oBAAA,IAAwB,OAAA,CAAQ,mBAAA,EAC5C;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,iBAAiB,OAAA,CAAQ,oBAAA;AAAA,YAC/C,CAAA,MAEA;AACE,cAAA,IAAA,CAAK,cAAA,CAAe,iBAAiB,OAAA,CAAQ,eAAA;AAAA,YAC/C;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,eAAA;AAGjB,QAAA,IAAI,CAAC,IAAA,CAAK,aAAA,CAAc,OAAA,EAAS,KAAK,CAAA,EACtC;AACE,UAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,uBAAuB,CAAA;AAE1C,UAAA;AAAA,QACF;AAEA,QAAA,YAAA,CAAa,IAAA,CAAK,QAAQ,iBAAiB,CAAA;AAE3C,QAAA,YAAA,CAAa,OAAA,CAAQ,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAGhD,QAAA,MAAM,GAAA,GAAM,QAAQ,QAAA,EAAS;AAG7B,QAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAA,EAC5B;AACE,UAAA,GAAA,CAAI,KAAA,GAAQ,CAAE,GAAA,CAAI,KAAM,CAAA;AAAA,QAC1B;AAGA,QAAA,KAAA,MAAW,CAAA,IAAK,IAAI,KAAA,EACpB;AACE,UAAA,IAAI,CAAA,CAAE,SAAS,OAAA,EACf;AACE,YAAA,gBAAA,GAAmB,IAAA;AACnB,YAAA,IAAI,CAAC,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,cAAc,UAAA,EACpC;AACE,cAAA,mBAAA,GAAsB,IAAA;AAAA,YACxB;AAAA,UACF;AACA,UAAA,IAAI,CAAA,CAAE,SAAS,OAAA,EACf;AACE,YAAA,gBAAA,GAAmB,IAAA;AACnB,YAAA,IAAI,CAAC,CAAA,CAAE,SAAA,IAAa,CAAA,CAAE,cAAc,UAAA,EACpC;AACE,cAAA,mBAAA,GAAsB,IAAA;AAAA,YACxB;AAAA,UACF;AAAA,QACF;AAGA,QAAA,IAAI,WAAA,IAAe,gBAAA,CAAiB,KAAA,KAAU,KAAA,EAC9C;AACE,UAAA,MAAA,GAAS,YAAY,cAAA,EAAe;AACpC,UAAA,KAAA,MAAW,SAAS,MAAA,EACpB;AACE,YAAA,WAAA,CAAY,YAAY,KAAK,CAAA;AAAA,UAC/B;AAAA,QACF;AAGA,QAAA,IAAI,WAAA,IAAe,gBAAA,CAAiB,KAAA,KAAU,KAAA,EAC9C;AACE,UAAA,MAAA,GAAS,YAAY,cAAA,EAAe;AACpC,UAAA,KAAA,MAAW,SAAS,MAAA,EACpB;AACE,YAAA,WAAA,CAAY,YAAY,KAAK,CAAA;AAAA,UAC/B;AAAA,QACF;AAGA,QAAA,IAAI,CAAC,WAAA,IAAe,gBAAA,CAAiB,KAAA,KAAU,MAAA,EAC/C;AACE,UAAA,gBAAA,CAAiB,KAAA,GAAQ,mBAAA;AAAA,QAC3B;AAGA,QAAA,IAAI,CAAC,WAAA,IAAe,gBAAA,CAAiB,KAAA,KAAU,MAAA,EAC/C;AACE,UAAA,gBAAA,CAAiB,KAAA,GAAQ,mBAAA;AAAA,QAC3B;AAGA,QAAA,IAAI,CAAC,WAAA,IAAe,CAAC,gBAAA,IAAoB,CAAC,oBAAoB,mBAAA,EAC9D;AACE,UAAA,gBAAA,CAAiB,KAAA,GAAQ,KAAA;AAAA,QAC3B;AAGA,QAAA,IAAI,CAAC,WAAA,IAAe,CAAC,gBAAA,IAAoB,CAAC,oBAAoB,mBAAA,EAC9D;AACE,UAAA,gBAAA,CAAiB,KAAA,GAAQ,KAAA;AAAA,QAC3B;AAIA,QAAA,IAAA,CAAK,oBAAA,CAAqB,UAAU,cAAc,CAAA;AAElD,QAAA,OAAA,CAAQ,OAAA,EAAQ,CAEb,IAAA,CAAK,MACN;AAEE,UAAA,IAAI,WAAA,EACJ;AACE,YAAA,OAAO,WAAA;AAAA,UACT,CAAA,MAAA,IAGS,gBAAA,CAAiB,KAAA,IAAS,gBAAA,CAAiB,KAAA,EACpD;AACE,YAAA,IAAA,CAAK,iCAAA,GAAoC,IAAA;AAEzC,YAAA,OAAO,UAAU,YAAA,CAAa,YAAA,CAAa,gBAAgB,CAAA,CACxD,KAAA,CAAM,CAAC,KAAA,KACR;AACE,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,gBAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,cAC9B;AAEA,cAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,cAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,CAAQ,OAAO,wBAAwB,CAAA;AAEnE,cAAA,MAAA,CAAO,IAAA,CAAK,wCAAwC,KAAK,CAAA;AAEzD,cAAA,IAAA,CAAK,IAAA,CAAK,sBAAsB,KAAK,CAAA;AAErC,cAAA,MAAM,IAAI,MAAM,uBAAuB,CAAA;AAAA,YACzC,CAAC,CAAA;AAAA,UACL;AAAA,QACF,CAAC,CAAA,CAEA,IAAA,CAAK,CAAC,MAAA,KACP;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAEA,UAAA,IAAA,CAAK,iBAAA,GAAoB,MAAA;AACzB,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,MAAA,CAAO,SAAA,EAAU,CAAE,OAAA,CAAQ,CAAC,KAAA,KAC5B;AACE,cAAA,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,KAAA,EAAO,MAAM,CAAA;AAAA,YACzC,CAAC,CAAA;AAAA,UACH;AAAA,QACF,CAAC,CAAA,CAEA,IAAA,CAAK,MACN;AACE,UAAA,IAAI,KAAK,SAAA,EACT;AACE,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,OAAA,EAAS,GAAA,EAAK,QAAQ,IAAA,EAAK;AAEnE,UAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,UAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,UAAA,MAAM,KAAA,GAAQ,IAAI,qBAAA,CAAsB,EAAE,MAAM,OAAA,EAAS,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,CAAA;AAErE,UAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,WAAA,CAAY,oBAAA,CAAqB,KAAK,CAAC,CAAA,CACvD,KAAA,CAAM,CAAC,KAAA,KACR;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,YAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,YAAY,CAAA;AAExD,YAAA,MAAA,CAAO,IAAA,CAAK,+DAA+D,KAAK,CAAA;AAEhF,YAAA,IAAA,CAAK,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAE5D,YAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,UAChE,CAAC,CAAA;AAEH,UAAA,OAAO,IAAA,CAAK,uBAAA;AAAA,QACd,CAAC,CAAA,CAEA,IAAA,CAAK,MACN;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAGA,UAAA,IAAA,CAAK,YAAY,OAAO,CAAA;AAExB,UAAA,IAAI,CAAC,KAAK,SAAA,EACV;AACE,YAAA,OAAO,KAAK,uBAAA,CAAwB,QAAA,EAAU,oBAAoB,CAAA,CAC/D,MAAM,MACP;AACE,cAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,cAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,YACpD,CAAC,CAAA;AAAA,UACL,CAAA,MAEA;AACE,YAAA,OAAO,KAAK,uBAAA,CAAwB,OAAA,EAAS,KAAK,oBAAoB,CAAA,CACnE,MAAM,MACP;AACE,cAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,cAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,YACpD,CAAC,CAAA;AAAA,UACL;AAAA,QACF,CAAC,CAAA,CAEA,IAAA,CAAK,CAAC,IAAA,KACP;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAEA,UAAA,IAAA,CAAK,qCAAA,CAAsC,SAAS,YAAY,CAAA;AAEhE,UAAA,OAAA,CAAQ,KAAA;AAAA,YAAM,GAAA;AAAA,YAAK,IAAA;AAAA,YAAM,YAAA;AAAA,YACvB,IAAA;AAAA,YACA,MACA;AACE,cAAA,IAAA,CAAK,UAAU,CAAA,CAAE,sBAAA;AAEjB,cAAA,IAAA,CAAK,kBAAA,CAAmB,SAAS,IAAI,CAAA;AACrC,cAAA,IAAA,CAAK,YAAA,EAAa;AAClB,cAAA,IAAA,CAAK,UAAU,OAAO,CAAA;AAAA,YACxB,CAAA;AAAA,YACA,MACA;AACE,cAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,gBAAgB,CAAA;AAAA,YAC9D;AAAA,WACF;AAAA,QACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,iBAAA,EAAoB,KAAA,CAAM,OAAO,CAAA,CAAE,CAAA;AAE/C,UAAA,IAAA,CAAK,QAAQ,QAAA,EAAU,KAAA,CAAM,OAAA,EAAS,OAAA,CAAQ,OAAO,cAAc,CAAA;AAAA,QACrE,CAAC,CAAA;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,MAKA,SAAA,CAAU,OAAA,GAAU,EAAC,EACrB;AACE,QAAA,MAAA,CAAO,MAAM,aAAa,CAAA;AAE1B,QAAA,MAAM,KAAA,GAAQ,OAAA,CAAQ,KAAA,IAAS,OAAA,CAAQ,MAAA,CAAO,GAAA;AAC9C,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AAErB,QAAA,IAAI,aAAA;AACJ,QAAA,IAAI,cAAc,OAAA,CAAQ,WAAA;AAC1B,QAAA,IAAI,gBAAgB,OAAA,CAAQ,aAAA;AAG5B,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA;AAAA,QACrD;AAEA,QAAA,QAAQ,KAAK,OAAA;AACb;AAAA,UAEE,KAAK,CAAA,CAAE,WAAA;AAAA,UACP,KAAK,CAAA,CAAE,kBAAA;AAAA,UACP,KAAK,CAAA,CAAE,mBAAA;AACL,YAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,YAAA,IAAI,WAAA,KAAgB,WAAA,GAAc,GAAA,IAAO,WAAA,IAAe,GAAA,CAAA,EACxD;AACE,cAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,WAAW,CAAA,CAAE,CAAA;AAAA,YAC3D,WACS,WAAA,EACT;AACE,cAAA,aAAA,GAAgB,aAAA,IAAiB,OAAA,CAAQ,aAAA,CAAc,WAAW,CAAA,IAAK,EAAA;AACvE,cAAA,aAAA,GAAgB,CAAA,WAAA,EAAc,WAAW,CAAA,QAAA,EAAW,aAAa,CAAA,CAAA,CAAA;AAAA,YACnE;AAGA,YAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,eAAe,IAAA,CAAK,OAAA,KAAY,EAAE,kBAAA,EACzD;AACE,cAAA,IAAA,CAAK,YAAA,GAAe,IAAA;AACpB,cAAA,IAAA,CAAK,cAAA,GAAiB,aAAA;AAAA,YACxB,CAAA,MAAA,IACS,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,mBAAA,EAC5B;AACE,cAAA,IAAA,CAAK,QAAA,CAAS,OAAO,aAAa,CAAA;AAAA,YACpC;AAEA,YAAA,IAAA,CAAK,UAAU,CAAA,CAAE,eAAA;AAEjB,YAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,CAAQ,OAAO,QAAQ,CAAA;AACnD,YAAA;AAAA;AAAA,UAGF,KAAK,CAAA,CAAE,yBAAA;AAAA,UACP,KAAK,CAAA,CAAE,eAAA;AACL,YAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,YAAA,WAAA,GAAc,WAAA,IAAe,GAAA;AAE7B,YAAA,IAAI,WAAA,GAAc,GAAA,IAAO,WAAA,IAAe,GAAA,EACxC;AACE,cAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,WAAW,CAAA,CAAE,CAAA;AAAA,YAC3D;AAEA,YAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,WAAA,EAAa,aAAA,EAAe,cAAc,IAAI,CAAA;AAClE,YAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,CAAQ,OAAO,QAAQ,CAAA;AACnD,YAAA;AAAA,UAEF,KAAK,CAAA,CAAE,sBAAA;AAAA,UACP,KAAK,CAAA,CAAE,gBAAA;AACL,YAAA,MAAA,CAAO,MAAM,qBAAqB,CAAA;AAElC,YAAA,aAAA,GAAgB,OAAA,CAAQ,aAAA,IAAiB,OAAA,CAAQ,aAAA,CAAc,WAAW,CAAA,IAAK,EAAA;AAE/E,YAAA,IAAI,WAAA,KAAgB,WAAA,GAAc,GAAA,IAAO,WAAA,IAAe,GAAA,CAAA,EACxD;AACE,cAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,WAAW,CAAA,CAAE,CAAA;AAAA,YAC3D,WACS,WAAA,EACT;AACE,cAAA,YAAA,CAAa,IAAA,CAAK,CAAA,mBAAA,EAAsB,WAAW,CAAA,QAAA,EAAW,aAAa,CAAA,CAAA,CAAG,CAAA;AAAA,YAChF;AAQA,YAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,sBAAA,IACnB,IAAA,CAAK,UAAA,KAAe,UAAA,IACpB,IAAA,CAAK,QAAA,CAAS,kBAAA,CAAmB,KAAA,KAAU,YAAA,CAAa,EAAE,iBAAA,EAC9D;AAGE,cAAA,MAAM,SAAS,IAAA,CAAK,OAAA;AAGpB,cAAA,IAAA,CAAK,cAAA,GAAiB,CAAC,EAAE,MAAA,EAAO,KAChC;AACE,gBAAA,IAAI,MAAA,KAAW,QAAQ,GAAA,EACvB;AACE,kBAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAA,EAAK;AAAA,oBAC5B,YAAA;AAAA,oBACA;AAAA,mBACD,CAAA;AACD,kBAAA,MAAA,CAAO,SAAA,EAAU;AAAA,gBACnB;AAAA,cACF,CAAA;AAGA,cAAA,IAAA,CAAK,QAAA,CAAS,kBAAA,CAAmB,EAAA,CAAG,cAAA,EAAgB,MACpD;AACE,gBAAA,IAAI,KAAK,QAAA,CAAS,kBAAA,CAAmB,KAAA,KACjC,YAAA,CAAa,EAAE,iBAAA,EACnB;AACE,kBAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAA,EAAK;AAAA,oBAC5B,YAAA;AAAA,oBACA;AAAA,mBACD,CAAA;AACD,kBAAA,MAAA,CAAO,SAAA,EAAU;AAAA,gBACnB;AAAA,cACF,CAAC,CAAA;AAED,cAAA,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,IAAA,EAAM,KAAK,CAAA;AAGhC,cAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AAGf,cAAA,IAAA,CAAK,GAAA,CAAI,UAAU,MAAM,CAAA;AAAA,YAC3B,CAAA,MAEA;AACE,cAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAA,EAAK;AAAA,gBAC5B,YAAA;AAAA,gBACA;AAAA,eACD,CAAA;AAED,cAAA,IAAA,CAAK,MAAA,CAAO,OAAA,EAAS,IAAA,EAAM,KAAK,CAAA;AAAA,YAClC;AAAA;AACJ,MACF;AAAA,MAEA,QAAA,CAAS,KAAA,EAAO,OAAA,GAAU,EAAC,EAC3B;AACE,QAAA,MAAA,CAAO,KAAA,CAAM,0BAA0B,KAAK,CAAA;AAE5C,QAAA,IAAI,QAAA,GAAW,QAAQ,QAAA,IAAY,IAAA;AACnC,QAAA,IAAI,YAAA,GAAe,QAAQ,YAAA,IAAgB,IAAA;AAC3C,QAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,aAAA,IAAiB,OAAA,CAAQ,cAAA,CAAe,IAAA;AAEtE,QAAA,IAAI,UAAU,MAAA,EACd;AACE,UAAA,MAAM,IAAI,UAAU,sBAAsB,CAAA;AAAA,QAC5C;AAGA,QAAA,IACE,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,IACnB,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,sBAAA,IACnB,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,mBAAA,EAErB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA;AAAA,QACrD;AAGA,QAAA,IACE,kBAAkB,OAAA,CAAQ,cAAA,CAAe,QACzC,aAAA,KAAkB,OAAA,CAAQ,eAAe,OAAA,EAE3C;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,uBAAA,EAA0B,aAAa,CAAA,CAAE,CAAA;AAAA,QAC/D;AAGA,QAAA,IAAI,OAAO,UAAU,QAAA,EACrB;AACE,UAAA,KAAA,GAAQ,MAAM,QAAA,EAAS;AAAA,QACzB;AAGA,QAAA,IAAI,CAAC,SAAS,OAAO,KAAA,KAAU,YAAY,CAAC,KAAA,CAAM,KAAA,CAAM,kBAAkB,CAAA,EAC1E;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,eAAA,EAAkB,KAAK,CAAA,CAAE,CAAA;AAAA,QAC/C;AAGA,QAAA,IAAI,QAAA,IAAY,CAAC,KAAA,CAAM,SAAA,CAAU,QAAQ,CAAA,EACzC;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAE,CAAA;AAAA,QAC1D,CAAA,MAAA,IACS,CAAC,QAAA,EACV;AACE,UAAA,QAAA,GAAW,gBAAgB,CAAA,CAAE,gBAAA;AAAA,QAC/B,CAAA,MAAA,IACS,QAAA,GAAW,eAAA,CAAgB,CAAA,CAAE,YAAA,EACtC;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,kEAAA,EAAqE,eAAA,CAAgB,CAAA,CAAE,YAAY,CAAA,aAAA,CAAe,CAAA;AAC/H,UAAA,QAAA,GAAW,gBAAgB,CAAA,CAAE,YAAA;AAAA,QAC/B,CAAA,MAAA,IACS,QAAA,GAAW,eAAA,CAAgB,CAAA,CAAE,YAAA,EACtC;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,oEAAA,EAAuE,eAAA,CAAgB,CAAA,CAAE,YAAY,CAAA,aAAA,CAAe,CAAA;AACjI,UAAA,QAAA,GAAW,gBAAgB,CAAA,CAAE,YAAA;AAAA,QAC/B,CAAA,MAEA;AACE,UAAA,QAAA,GAAW,IAAA,CAAK,IAAI,QAAQ,CAAA;AAAA,QAC9B;AACA,QAAA,OAAA,CAAQ,QAAA,GAAW,QAAA;AAGnB,QAAA,IAAI,YAAA,IAAgB,CAAC,KAAA,CAAM,SAAA,CAAU,YAAY,CAAA,EACjD;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,sBAAA,EAAyB,YAAY,CAAA,CAAE,CAAA;AAAA,QAC7D,CAAA,MAAA,IACS,CAAC,YAAA,EACV;AACE,UAAA,YAAA,GAAe,gBAAgB,CAAA,CAAE,sBAAA;AAAA,QACnC,CAAA,MAAA,IACS,YAAA,GAAe,eAAA,CAAgB,CAAA,CAAE,kBAAA,EAC1C;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,sEAAA,EAAyE,eAAA,CAAgB,CAAA,CAAE,kBAAkB,CAAA,aAAA,CAAe,CAAA;AACzI,UAAA,YAAA,GAAe,gBAAgB,CAAA,CAAE,kBAAA;AAAA,QACnC,CAAA,MAEA;AACE,UAAA,YAAA,GAAe,IAAA,CAAK,IAAI,YAAY,CAAA;AAAA,QACtC;AAGA,QAAA,IAAI,aAAA,KAAkB,OAAA,CAAQ,cAAA,CAAe,OAAA,EAC7C;AAEE,UAAA,MAAM,MAAA,GAAS,KAAK,iBAAA,EAAkB;AAEtC,UAAA,IAAI,MAAA,EACJ;AAEE,YAAA,KAAA,GAAQ,OAAO,UAAA,GAAa,KAAA;AAE5B,YAAA,MAAA,CAAO,UAAA,CAAW,KAAA,EAAO,QAAA,EAAU,YAAY,CAAA;AAAA,UACjD;AAEA,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAK,MAAA,EACT;AAEE,UAAA,IAAA,CAAK,MAAA,IAAU,KAAA;AAEf,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,MAAA,GAAS,KAAA;AAGd,QAAA,SAAA,CAAU,KAAK,IAAI,CAAA;AAEnB,QAAA,SAAS,SAAA,GACT;AACE,UAAA,IAAI,OAAA;AAEJ,UAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,IAAqB,CAAC,KAAK,MAAA,EAClD;AAEE,YAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAEd,YAAA;AAAA,UACF;AAGA,UAAA,MAAM,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,CAAC,CAAA;AAG1B,UAAA,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,MAAA,CAAO,SAAA,CAAU,CAAC,CAAA;AAErC,UAAA,IAAI,SAAS,GAAA,EACb;AACE,YAAA,OAAA,GAAU,GAAA;AAAA,UACZ,CAAA,MAEA;AAEE,YAAA,MAAM,IAAA,GAAO,IAAI,eAAA,CAAgB,IAAI,CAAA;AAErC,YAAA,OAAA,CAAQ,aAAA,GAAgB;AAAA,cACtB,UAAW,MAAM;AAAE,gBAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAAA,cAAM;AAAA,aACzC;AACA,YAAA,IAAA,CAAK,IAAA,CAAK,MAAM,OAAO,CAAA;AACvB,YAAA,OAAA,GAAU,QAAA,GAAW,YAAA;AAAA,UACvB;AAGA,UAAA,UAAA,CAAW,SAAA,CAAU,IAAA,CAAK,IAAI,CAAA,EAAG,OAAO,CAAA;AAAA,QAC1C;AAAA,MACF;AAAA,MAEA,QAAA,CAAS,WAAA,EAAa,IAAA,EAAM,OAAA,GAAU,EAAC,EACvC;AACE,QAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AAGzB,QAAA,IACE,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,IACnB,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,sBAAA,IACnB,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,mBAAA,EAErB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,OAAO,CAAA;AAAA,QACrD;AAEA,QAAA,MAAM,IAAA,GAAO,IAAI,eAAA,CAAgB,IAAI,CAAA;AAErC,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,EAAa,IAAA,EAAM,OAAO,CAAA;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA,MAKA,KAAK,OAAA,GAAU,EAAE,OAAO,IAAA,EAAM,KAAA,EAAO,OAAM,EAC3C;AACE,QAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAErB,QAAA,IAAI,UAAA,GAAa,OAAO,UAAA,GAAa,KAAA;AAErC,QAAA,IAAI,IAAA,CAAK,WAAA,KAAgB,KAAA,IAAS,OAAA,CAAQ,KAAA,EAC1C;AACE,UAAA,UAAA,GAAa,IAAA;AACb,UAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,UAAA,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA,QAC5B;AAEA,QAAA,IAAI,IAAA,CAAK,WAAA,KAAgB,KAAA,IAAS,OAAA,CAAQ,KAAA,EAC1C;AACE,UAAA,UAAA,GAAa,IAAA;AACb,UAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,UAAA,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA,QAC5B;AAEA,QAAA,IAAI,UAAA,KAAe,IAAA,IAAQ,UAAA,KAAe,IAAA,EAC1C;AACE,UAAA,IAAA,CAAK,OAAA,CAAQ;AAAA,YACX,KAAA,EAAQ,UAAA;AAAA,YACR,KAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,OAAO,OAAA,GAAU,EAAE,OAAO,IAAA,EAAM,KAAA,EAAO,MAAK,EAC5C;AACE,QAAA,MAAA,CAAO,MAAM,UAAU,CAAA;AAEvB,QAAA,IAAI,YAAA,GAAe,OAAO,YAAA,GAAe,KAAA;AAEzC,QAAA,IAAI,IAAA,CAAK,WAAA,KAAgB,IAAA,IAAQ,OAAA,CAAQ,KAAA,EACzC;AACE,UAAA,YAAA,GAAe,IAAA;AACf,UAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAEnB,UAAA,IAAI,IAAA,CAAK,eAAe,KAAA,EACxB;AACE,YAAA,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAAA,UAC7B;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,CAAK,WAAA,KAAgB,IAAA,IAAQ,OAAA,CAAQ,KAAA,EACzC;AACE,UAAA,YAAA,GAAe,IAAA;AACf,UAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAEnB,UAAA,IAAI,IAAA,CAAK,eAAe,KAAA,EACxB;AACE,YAAA,IAAA,CAAK,iBAAiB,KAAK,CAAA;AAAA,UAC7B;AAAA,QACF;AAEA,QAAA,IAAI,YAAA,KAAiB,IAAA,IAAQ,YAAA,KAAiB,IAAA,EAC9C;AACE,UAAA,IAAA,CAAK,SAAA,CAAU;AAAA,YACb,KAAA,EAAQ,YAAA;AAAA,YACR,KAAA,EAAQ;AAAA,WACT,CAAA;AAAA,QACH;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,IAAA,CAAK,OAAA,GAAU,EAAC,EAAG,IAAA,EACnB;AACE,QAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAErB,QAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,0BAA0B,IAAA,CAAK,OAAA,KAAY,EAAE,gBAAA,EACpE;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAI,IAAA,CAAK,eAAe,IAAA,EACxB;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,EAAiB,EAC3B;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,QAAQ,OAAO,CAAA;AAEpB,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,WAAY,MACZ;AACE,YAAA,IAAI,IAAA,EAAM;AAAE,cAAA,IAAA,EAAK;AAAA,YAAG;AAAA,UACtB,CAAA;AAAA,UACA,QAAS,MACT;AACE,YAAA,IAAA,CAAK,SAAA,CAAU;AAAA,cACb,KAAA,EAAgB,QAAQ,MAAA,CAAO,YAAA;AAAA,cAC/B,WAAA,EAAgB,GAAA;AAAA,cAChB,aAAA,EAAgB;AAAA,aACjB,CAAA;AAAA,UACH;AAAA,SACF;AAEA,QAAA,IAAI,QAAQ,SAAA,EACZ;AACE,UAAA,IAAA,CAAK,WAAA,CAAY;AAAA,YACf,QAAA,EAAe,IAAA;AAAA,YACf,aAAA;AAAA,YACA,cAAe,OAAA,CAAQ;AAAA,WACxB,CAAA;AAAA,QACH,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,aAAA,CAAc;AAAA,YACjB,aAAA;AAAA,YACA,cAAe,OAAA,CAAQ;AAAA,WACxB,CAAA;AAAA,QACH;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,MAAA,CAAO,OAAA,GAAU,EAAC,EAAG,IAAA,EACrB;AACE,QAAA,MAAA,CAAO,MAAM,UAAU,CAAA;AAEvB,QAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,0BAA0B,IAAA,CAAK,OAAA,KAAY,EAAE,gBAAA,EACpE;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAI,IAAA,CAAK,eAAe,KAAA,EACxB;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,EAAiB,EAC3B;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAA,CAAK,UAAA,GAAa,KAAA;AAClB,QAAA,IAAA,CAAK,UAAU,OAAO,CAAA;AAEtB,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,WAAY,MACZ;AACE,YAAA,IAAI,IAAA,EAAM;AAAE,cAAA,IAAA,EAAK;AAAA,YAAG;AAAA,UACtB,CAAA;AAAA,UACA,QAAS,MACT;AACE,YAAA,IAAA,CAAK,SAAA,CAAU;AAAA,cACb,KAAA,EAAgB,QAAQ,MAAA,CAAO,YAAA;AAAA,cAC/B,WAAA,EAAgB,GAAA;AAAA,cAChB,aAAA,EAAgB;AAAA,aACjB,CAAA;AAAA,UACH;AAAA,SACF;AAEA,QAAA,IAAI,QAAQ,SAAA,EACZ;AACE,UAAA,IAAA,CAAK,WAAA,CAAY;AAAA,YACf,QAAA,EAAe,IAAA;AAAA,YACf,aAAA;AAAA,YACA,cAAe,OAAA,CAAQ;AAAA,WACxB,CAAA;AAAA,QACH,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,aAAA,CAAc;AAAA,YACjB,aAAA;AAAA,YACA,cAAe,OAAA,CAAQ;AAAA,WACxB,CAAA;AAAA,QACH;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,WAAA,CAAY,OAAA,GAAU,EAAC,EAAG,IAAA,EAC1B;AACE,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,MAAM,mBAAA,GAAsB,QAAQ,mBAAA,IAAuB,IAAA;AAE3D,QAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,0BAA0B,IAAA,CAAK,OAAA,KAAY,EAAE,gBAAA,EACpE;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,EAAiB,EAC3B;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,MAAM,aAAA,GAAgB;AAAA,UACpB,WAAY,MACZ;AACE,YAAA,IAAI,IAAA,EAAM;AAAE,cAAA,IAAA,EAAK;AAAA,YAAG;AAAA,UACtB,CAAA;AAAA,UACA,QAAS,MACT;AACE,YAAA,IAAA,CAAK,SAAA,CAAU;AAAA,cACb,KAAA,EAAgB,QAAQ,MAAA,CAAO,YAAA;AAAA,cAC/B,WAAA,EAAgB,GAAA;AAAA,cAChB,aAAA,EAAgB;AAAA,aACjB,CAAA;AAAA,UACH;AAAA,SACF;AAEA,QAAA,IAAA,CAAK,oBAAA,EAAqB;AAE1B,QAAA,IAAI,QAAQ,SAAA,EACZ;AACE,UAAA,IAAA,CAAK,WAAA,CAAY;AAAA,YACf,QAAA,EAAe,IAAA;AAAA,YACf,aAAA;AAAA,YACA,mBAAA;AAAA,YACA,cAAe,OAAA,CAAQ;AAAA,WACxB,CAAA;AAAA,QACH,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,aAAA,CAAc;AAAA,YACjB,aAAA;AAAA,YACA,mBAAA;AAAA,YACA,cAAe,OAAA,CAAQ;AAAA,WACxB,CAAA;AAAA,QACH;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,KAAA,CAAM,QAAQ,OAAA,EACd;AACE,QAAA,MAAA,CAAO,MAAM,SAAS,CAAA;AAEtB,QAAA,MAAM,cAAA,GAAiB,MAAA;AAEvB,QAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,0BAA0B,IAAA,CAAK,OAAA,KAAY,EAAE,gBAAA,EACpE;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAGA,QAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,eAAA,CAAgB,MAAM,CAAA;AACxC,QAAA,IAAI,CAAC,MAAA,EACL;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,gBAAA,EAAmB,cAAc,CAAA,CAAE,CAAA;AAAA,QACzD;AAEA,QAAA,MAAM,eAAA,GAAkB,IAAI,0BAAA,CAA2B,IAAI,CAAA;AAE3D,QAAA,eAAA,CAAgB,SAAA,CAAU,QAAQ,OAAO,CAAA;AAGzC,QAAA,MAAM,KAAK,eAAA,CAAgB,EAAA;AAE3B,QAAA,IAAA,CAAK,iBAAA,CAAkB,EAAE,CAAA,GAAI,eAAA;AAG7B,QAAA,eAAA,CAAgB,EAAA,CAAG,iBAAiB,MACpC;AACE,UAAA,OAAO,IAAA,CAAK,kBAAkB,EAAE,CAAA;AAAA,QAClC,CAAC,CAAA;AACD,QAAA,eAAA,CAAgB,EAAA,CAAG,YAAY,MAC/B;AACE,UAAA,OAAO,IAAA,CAAK,kBAAkB,EAAE,CAAA;AAAA,QAClC,CAAC,CAAA;AACD,QAAA,eAAA,CAAgB,EAAA,CAAG,UAAU,MAC7B;AACE,UAAA,OAAO,IAAA,CAAK,kBAAkB,EAAE,CAAA;AAAA,QAClC,CAAC,CAAA;AAED,QAAA,OAAO,eAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,CAAY,QAAQ,OAAA,EACpB;AACE,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA,OAAO,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,MAAA,EAAQ,OAAO,CAAA;AAAA,QACjD,CAAA,MAEA;AACE,UAAA,MAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,IAAA,CAAK,aAAa,CAAA;AAErD,UAAA,IAAI,YAAA,CAAa,SAAS,CAAA,EAC1B;AACE,YAAA,OAAO,YAAA,CAAa,CAAC,CAAA,CAAE,WAAA,CAAY,QAAQ,OAAO,CAAA;AAAA,UACpD;AAEA,UAAA,MAAA,CAAO,KAAK,6CAA6C,CAAA;AAEzD,UAAA;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,eAAe,OAAA,EACf;AACE,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,EAC/B;AAYE,UAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,6BACnB,IAAA,CAAK,OAAA,KAAY,EAAE,eAAA,EACvB;AACE,YAAA,IAAA,CAAK,UAAU,CAAA,CAAE,eAAA;AACjB,YAAA,IAAA,CAAK,QAAA,CAAS,MAAM,GAAG,CAAA;AACvB,YAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,OAAA,EAAS,OAAA,CAAQ,OAAO,QAAQ,CAAA;AAAA,UACzD;AAAA,QACF,CAAA,MAEA;AAEE,UAAA,QAAQ,QAAQ,MAAA;AAChB,YACE,KAAK,OAAA,CAAQ,GAAA;AACX,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,sBAAA,EACvB;AACE,gBAAA;AAAA,cACF;AAGA,cAAA,IAAA,CAAK,UAAU,CAAA,CAAE,gBAAA;AAEjB,cAAA,YAAA,CAAa,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAClC,cAAA,YAAA,CAAa,IAAA,CAAK,QAAQ,cAAc,CAAA;AAExC,cAAA,IAAI,KAAK,SAAA,EACT;AACE,gBAAA,IAAI,CAAC,QAAQ,IAAA,EACb;AACE,kBAAA,IAAA,CAAK,SAAA,CAAU;AAAA,oBACb,KAAA,EAAc,QAAQ,MAAA,CAAO,WAAA;AAAA,oBAC7B,WAAA,EAAc;AAAA,mBACf,CAAA;AACD,kBAAA;AAAA,gBACF;AAEA,gBAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,QAAA,EAAU,GAAA,EAAK,QAAQ,IAAA,EAAK;AAEpE,gBAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,gBAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,gBAAA,MAAM,MAAA,GAAS,IAAI,qBAAA,CAAsB,EAAE,MAAM,QAAA,EAAU,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,CAAA;AAEvE,gBAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,WAAA,CAAY,oBAAA,CAAqB,MAAM,CAAC,CAAA,CACxD,IAAA,CAAK,MACN;AACE,kBAAA,IAAI,CAAC,KAAK,aAAA,EACV;AACE,oBAAA,IAAA,CAAK,UAAA,CAAW,UAAU,OAAO,CAAA;AAAA,kBACnC;AAAA,gBACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,kBAAA,IAAA,CAAK,SAAA,CAAU;AAAA,oBACb,KAAA,EAAc,QAAQ,MAAA,CAAO,qBAAA;AAAA,oBAC7B,WAAA,EAAc;AAAA,mBACf,CAAA;AAED,kBAAA,MAAA,CAAO,IAAA,CAAK,+DAA+D,KAAK,CAAA;AAChF,kBAAA,IAAA,CAAK,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAAA,gBAC9D,CAAC,CAAA;AAAA,cACL,CAAA,MAAA,IACS,CAAC,IAAA,CAAK,aAAA,EACf;AACE,gBAAA,IAAA,CAAK,UAAA,CAAW,UAAU,OAAO,CAAA;AAAA,cACnC;AAEA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,GAAA;AACX,cAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,oBACnB,IAAA,CAAK,OAAA,KAAY,EAAE,sBAAA,EACvB;AACE,gBAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,gBAAA,IAAA,CAAK,MAAA,CAAO,QAAA,EAAU,OAAA,EAAS,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,cACnD,CAAA,MAAA,IACS,KAAK,OAAA,KAAY,CAAA,CAAE,0BACnB,IAAA,CAAK,OAAA,KAAY,EAAE,yBAAA,EAC5B;AACE,gBAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,gBAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,GAAA,EAAK,cAAc,CAAA;AACvC,gBAAA,IAAA,CAAK,MAAA,CAAO,QAAA,EAAU,OAAA,EAAS,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA,cACnD,CAAA,MAEA;AACE,gBAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,cAAc,CAAA;AAAA,cACnC;AACA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,MAAA;AACX,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,EACvB;AACE,gBAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,UAAU,CAAA,EAChC;AACE,kBAAA,IAAA,CAAK,iBAAiB,OAAO,CAAA;AAAA,gBAC/B,CAAA,MAEA;AACE,kBAAA,IAAA,CAAK,iBAAiB,OAAO,CAAA;AAAA,gBAC/B;AAAA,cACF,CAAA,MAEA;AACE,gBAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,cAAc,CAAA;AAAA,cACnC;AACA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,IAAA;AACX,cAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,uBACnB,IAAA,CAAK,OAAA,KAAY,EAAE,yBAAA,IACnB,IAAA,CAAK,YAAY,CAAA,CAAE,eAAA,IACnB,KAAK,OAAA,KAAY,CAAA,CAAE,0BACnB,IAAA,CAAK,OAAA,KAAY,EAAE,gBAAA,EACvB;AACE,gBAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA,GAClD,QAAQ,SAAA,CAAU,cAAc,CAAA,CAAE,WAAA,EAAY,GAAI,MAAA;AAEpD,gBAAA,IAAI,WAAA,IAAgB,WAAA,CAAY,KAAA,CAAM,2BAA2B,CAAA,EACjE;AACE,kBAAA,IAAI,eAAA,CAAgB,IAAI,CAAA,CAAE,aAAA,CAAc,OAAO,CAAA;AAAA,gBACjD,CAAA,MAAA,IACS,gBAAgB,MAAA,EACzB;AACE,kBAAA,IAAI,eAAA,CAAgB,IAAI,CAAA,CAAE,aAAA,CAAc,OAAO,CAAA;AAAA,gBACjD,CAAA,MAEA;AACE,kBAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,gBACnB;AAAA,cACF,CAAA,MAEA;AACE,gBAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,cAAc,CAAA;AAAA,cACnC;AACA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,MAAA;AACX,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,EACvB;AACE,gBAAA,IAAA,CAAK,eAAe,OAAO,CAAA;AAAA,cAC7B,CAAA,MAEA;AACE,gBAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,cAAc,CAAA;AAAA,cACnC;AACA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,KAAA;AACX,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,EACvB;AACE,gBAAA,IAAA,CAAK,cAAc,OAAO,CAAA;AAAA,cAC5B,CAAA,MAEA;AACE,gBAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,cAAc,CAAA;AAAA,cACnC;AACA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,MAAA;AACX,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,EACvB;AACE,gBAAA,IAAA,CAAK,eAAe,OAAO,CAAA;AAAA,cAC7B,CAAA,MAEA;AACE,gBAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,cAAc,CAAA;AAAA,cACnC;AACA,cAAA;AAAA,YACF;AACE,cAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA;AACrB,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAMA,gBAAA,GACA;AACE,QAAA,MAAA,CAAO,KAAK,oBAAoB,CAAA;AAEhC,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,UAAA,IAAA,CAAK,SAAA,CAAU;AAAA,YACb,WAAA,EAAgB,GAAA;AAAA,YAChB,aAAA,EAAgB,QAAQ,MAAA,CAAO,gBAAA;AAAA,YAC/B,KAAA,EAAgB,QAAQ,MAAA,CAAO;AAAA,WAChC,CAAA;AAAA,QACH;AAAA,MACF;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,MAAA,CAAO,KAAK,oBAAoB,CAAA;AAEhC,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,UAAA,IAAA,CAAK,SAAA,CAAU;AAAA,YACb,WAAA,EAAgB,GAAA;AAAA,YAChB,aAAA,EAAgB,QAAQ,MAAA,CAAO,eAAA;AAAA,YAC/B,KAAA,EAAgB,QAAQ,MAAA,CAAO;AAAA,WAChC,CAAA;AAAA,QACH;AAAA,MACF;AAAA,MAEA,aAAA,GACA;AACE,QAAA,MAAA,CAAO,KAAK,iBAAiB,CAAA;AAE7B,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,UAAA,IAAA,CAAK,SAAA,CAAU;AAAA,YACb,WAAA,EAAgB,GAAA;AAAA,YAChB,aAAA,EAAgB,QAAQ,MAAA,CAAO,YAAA;AAAA,YAC/B,KAAA,EAAgB,QAAQ,MAAA,CAAO;AAAA,WAChC,CAAA;AAAA,QACH;AAAA,MACF;AAAA;AAAA,MAGA,QAAQ,IAAA,EACR;AACE,QAAA,MAAA,CAAO,MAAM,WAAW,CAAA;AAExB,QAAA,IAAA,CAAK,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,MAC3B;AAAA;AAAA,MAGA,QAAQ,IAAA,EACR;AACE,QAAA,MAAA,CAAO,MAAM,WAAW,CAAA;AAExB,QAAA,IAAA,CAAK,IAAA,CAAK,WAAW,IAAI,CAAA;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA,MAKA,gBAAA,GACA;AACE,QAAA,IAAI,CAAC,KAAK,SAAA,EACV;AACE,UAAA,MAAA,CAAO,MAAM,uDAAuD,CAAA;AAEpE,UAAA,OAAO,KAAA;AAAA,QACT;AAGA,QAAA,IAAI,CAAC,KAAK,OAAA,EACV;AACE,UAAA,MAAA,CAAO,MAAM,kDAAkD,CAAA;AAE/D,UAAA,OAAO,KAAA;AAAA,QACT;AAGA,QAAA,IAAI,KAAK,OAAA,CAAQ,iBAAA,KAAsB,QACnC,IAAA,CAAK,OAAA,CAAQ,sBAAsB,IAAA,EACvC;AACE,UAAA,MAAA,CAAO,MAAM,6EAA6E,CAAA;AAE1F,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,MAEA,MAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,SAAS,CAAA;AAGtB,QAAA,IAAI,IAAA,CAAK,iBAAA,IAAqB,IAAA,CAAK,iCAAA,EACnC;AACE,UAAA,MAAA,CAAO,MAAM,qCAAqC,CAAA;AAElD,UAAA,KAAA,CAAM,gBAAA,CAAiB,KAAK,iBAAiB,CAAA;AAAA,QAC/C;AAEA,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,iBAAA;AAGjB,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,IACA;AACE,YAAA,IAAA,CAAK,YAAY,KAAA,EAAM;AAAA,UACzB,SACO,KAAA,EACP;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,qDAAqD,KAAK,CAAA;AAAA,UACxE;AAAA,QACF;AAKA,QAAA,KAAA,MAAW,KAAA,IAAS,KAAK,OAAA,EACzB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,OAAA,EAAS,KAAK,CAAA,EAC5D;AACE,YAAA,YAAA,CAAa,IAAA,CAAK,OAAA,CAAQ,KAAK,CAAC,CAAA;AAAA,UAClC;AAAA,QACF;AAGA,QAAA,YAAA,CAAa,IAAA,CAAK,eAAe,KAAK,CAAA;AAGtC,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA,IAAA,CAAK,QAAQ,SAAA,EAAU;AACvB,UAAA,OAAO,IAAA,CAAK,OAAA;AAAA,QACd;AAGA,QAAA,KAAA,MAAW,MAAA,IAAU,KAAK,aAAA,EAC1B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,aAAA,EAAe,MAAM,CAAA,EACnE;AACE,YAAA,IAAA,CAAK,aAAA,CAAc,MAAM,CAAA,CAAE,SAAA,EAAU;AACrC,YAAA,OAAO,IAAA,CAAK,cAAc,MAAM,CAAA;AAAA,UAClC;AAAA,QACF;AAGA,QAAA,KAAA,MAAW,UAAA,IAAc,KAAK,iBAAA,EAC9B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,iBAAA,EAAmB,UAAU,CAAA,EAC3E;AACE,YAAA,OAAO,IAAA,CAAK,kBAAkB,UAAU,CAAA;AAAA,UAC1C;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,GAAA,CAAI,kBAAkB,IAAI,CAAA;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,kBAAA,CAAmB,SAAS,IAAA,EAC5B;AACE,QAAA,IAAI,UAAU,MAAA,CAAO,EAAA;AAErB,QAAA,SAAS,uBAAA,GACT;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,sBAAA,EACvB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,IAAA,EAAM,CAAE,YAAY,IAAA,CAAK,QAAQ,CAAA,CAAG,CAAA,EAAG,IAAI,CAAA;AAE9D,UAAA,IAAI,OAAA,GAAU,OAAO,EAAA,EACrB;AACE,YAAA,OAAA,GAAU,OAAA,GAAU,CAAA;AACpB,YAAA,IAAI,OAAA,GAAU,OAAO,EAAA,EACrB;AACE,cAAA,OAAA,GAAU,MAAA,CAAO,EAAA;AAAA,YACnB;AAAA,UACF;AAEA,UAAA,IAAA,CAAK,QAAQ,cAAA,GAAiB,UAAA;AAAA,YAC5B,uBAAA,CAAwB,KAAK,IAAI,CAAA;AAAA,YAAG;AAAA,WAAO;AAAA,QAC/C;AAEA,QAAA,IAAA,CAAK,QAAQ,cAAA,GAAiB,UAAA;AAAA,UAC5B,uBAAA,CAAwB,KAAK,IAAI,CAAA;AAAA,UAAG;AAAA,SAAO;AAAA,MAC/C;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAQA,YAAA,GACA;AACE,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,GAAW,UAAA,CAAW,MACnC;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,sBAAA,EACvB;AACE,YAAA,MAAA,CAAO,MAAM,0CAA0C,CAAA;AAEvD,YAAA,YAAA,CAAa,IAAA,CAAK,QAAQ,cAAc,CAAA;AACxC,YAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAG,CAAA;AAC5B,YAAA,IAAA,CAAK,MAAA,CAAO,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,MAAM,CAAA;AAAA,UACnD;AAAA,QACF,CAAA,EAAG,OAAO,OAAO,CAAA;AAAA,MACnB;AAAA,MAGA,oBAAA,CAAqB,UAAU,cAAA,EAC/B;AACE,QAAA,IAAA,CAAK,WAAA,GAAc,IAAI,iBAAA,CAAkB,QAAA,EAAU,cAAc,CAAA;AAEjE,QAAA,IAAA,CAAK,WAAA,CAAY,gBAAA,CAAiB,0BAAA,EAA4B,MAC9D;AACE,UAAA,MAAM,KAAA,GAAQ,KAAK,WAAA,CAAY,kBAAA;AAG/B,UAAA,IAAI,UAAU,QAAA,EACd;AACE,YAAA,IAAA,CAAK,SAAA,CAAU;AAAA,cACb,KAAA,EAAgB,QAAQ,MAAA,CAAO,WAAA;AAAA,cAC/B,WAAA,EAAgB,GAAA;AAAA,cAChB,aAAA,EAAgB,QAAQ,MAAA,CAAO;AAAA,aAChC,CAAA;AAAA,UACH;AAAA,QACF,CAAC,CAAA;AAED,QAAA,MAAA,CAAO,MAAM,uBAAuB,CAAA;AAEpC,QAAA,IAAA,CAAK,KAAK,gBAAA,EAAkB;AAAA,UAC1B,gBAAiB,IAAA,CAAK;AAAA,SACvB,CAAA;AAAA,MACH;AAAA,MAEA,uBAAA,CAAwB,MAAM,WAAA,EAC9B;AACE,QAAA,MAAA,CAAO,MAAM,0BAA0B,CAAA;AAEvC,QAAA,IAAI,IAAA,KAAS,WAAW,IAAA,KAAS,QAAA;AAC/B,UAAA,MAAM,IAAI,KAAA,CAAM,CAAA,yCAAA,EAA4C,IAAI,CAAA,CAAA,CAAG,CAAA;AAErE,QAAA,MAAM,aAAa,IAAA,CAAK,WAAA;AAExB,QAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAEjB,QAAA,OAAO,OAAA,CAAQ,OAAA,EAAQ,CAEpB,IAAA,CAAK,MACN;AACE,UAAA,IAAI,SAAS,OAAA,EACb;AACE,YAAA,OAAO,WAAW,WAAA,CAAY,WAAW,CAAA,CACtC,KAAA,CAAM,CAAC,KAAA,KACR;AACE,cAAA,MAAA,CAAO,IAAA,CAAK,sDAAsD,KAAK,CAAA;AAEvE,cAAA,IAAA,CAAK,IAAA,CAAK,oCAAoC,KAAK,CAAA;AAEnD,cAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,YAC7B,CAAC,CAAA;AAAA,UACL,CAAA,MAEA;AACE,YAAA,OAAO,WAAW,YAAA,CAAa,WAAW,CAAA,CACvC,KAAA,CAAM,CAAC,KAAA,KACR;AACE,cAAA,MAAA,CAAO,IAAA,CAAK,uDAAuD,KAAK,CAAA;AAExE,cAAA,IAAA,CAAK,IAAA,CAAK,qCAAqC,KAAK,CAAA;AAEpD,cAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,YAC7B,CAAC,CAAA;AAAA,UACL;AAAA,QACF,CAAC,CAAA,CAEA,IAAA,CAAK,CAAC,IAAA,KACP;AACE,UAAA,OAAO,WAAW,mBAAA,CAAoB,IAAI,CAAA,CACvC,KAAA,CAAM,CAAC,KAAA,KACR;AACE,YAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAEjB,YAAA,MAAA,CAAO,IAAA,CAAK,8DAA8D,KAAK,CAAA;AAE/E,YAAA,IAAA,CAAK,IAAA,CAAK,4CAA4C,KAAK,CAAA;AAE3D,YAAA,OAAO,OAAA,CAAQ,OAAO,KAAK,CAAA;AAAA,UAC7B,CAAC,CAAA;AAAA,QACL,CAAC,CAAA,CACA,IAAA,CAAK,MACN;AAOE,UAAA,MAAM,UAAA,GAAa,eAAe,WAAA,CAAY,UAAA;AAE9C,UAAA,IAAK,UAAA,CAAW,sBAAsB,UAAA,IAAc,CAAC,cAClD,UAAA,CAAW,iBAAA,KAAsB,WAAA,IAAe,IAAA,CAAK,SAAA,EACxD;AACE,YAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAEjB,YAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,OAAA,EAAS,MAAY,GAAA,EAAK,UAAA,CAAW,iBAAiB,GAAA,EAAI;AAElF,YAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AAEzB,YAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,YAAA,OAAO,OAAA,CAAQ,OAAA,CAAQ,CAAA,CAAE,GAAG,CAAA;AAAA,UAC9B;AAGA,UAAA,OAAO,IAAI,OAAA,CAAQ,CAAC,OAAA,KACpB;AACE,YAAA,IAAI,QAAA,GAAW,KAAA;AACf,YAAA,IAAI,oBAAA;AACJ,YAAA,IAAI,yBAAA;AAEJ,YAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAEjB,YAAA,MAAM,QAAQ,MACd;AACE,cAAA,IAAI,QAAA,EACJ;AACE,gBAAA;AAAA,cACF;AAEA,cAAA,UAAA,CAAW,mBAAA,CAAoB,gBAAgB,oBAAoB,CAAA;AACnE,cAAA,UAAA,CAAW,mBAAA,CAAoB,2BAA2B,yBAAyB,CAAA;AAEnF,cAAA,QAAA,GAAW,IAAA;AACX,cAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAGjB,cAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAEjB,cAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,OAAA,EAAS,MAAY,GAAA,EAAK,UAAA,CAAW,iBAAiB,GAAA,EAAI;AAElF,cAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AAEzB,cAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,cAAA,OAAA,CAAQ,EAAE,GAAG,CAAA;AAAA,YACf,CAAA;AAEA,YAAA,UAAA,CAAW,gBAAA,CAAiB,cAAA,EAAgB,oBAAA,GAAuB,CAAC,KAAA,KACpE;AACE,cAAA,MAAM,YAAY,KAAA,CAAM,SAAA;AAExB,cAAA,IAAI,SAAA,EACJ;AACE,gBAAA,IAAA,CAAK,KAAK,cAAA,EAAgB;AAAA,kBACxB,SAAA;AAAA,kBACA;AAAA,iBACD,CAAA;AAAA,cACH,CAAA,MAEA;AACE,gBAAA,KAAA,EAAM;AAAA,cACR;AAAA,YACF,CAAC,CAAA;AAED,YAAA,UAAA,CAAW,gBAAA,CAAiB,yBAAA,EAA2B,yBAAA,GAA4B,MACnF;AACE,cAAA,IAAI,UAAA,CAAW,sBAAsB,UAAA,EACrC;AACE,gBAAA,KAAA,EAAM;AAAA,cACR;AAAA,YACF,CAAC,CAAA;AAAA,UACH,CAAC,CAAA;AAAA,QACH,CAAC,CAAA;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,CAAc,OAAA,EAAS,IAAA,EAAM,KAAA,EAC7B;AACE,QAAA,MAAM,SAAA,GAAa,IAAA,KAAS,KAAA,GAAS,OAAA,CAAQ,SAAS,OAAA,CAAQ,QAAA;AAC9D,QAAA,MAAM,UAAA,GAAc,IAAA,KAAS,KAAA,GAAS,OAAA,CAAQ,WAAW,OAAA,CAAQ,MAAA;AACjE,QAAA,MAAM,EAAA,GAAK,OAAA,CAAQ,OAAA,GAAU,SAAA,GAAY,UAAA;AAEzC,QAAA,IAAI,YAAA,GAAe,IAAA,CAAK,aAAA,CAAc,EAAE,CAAA;AAGxC,QAAA,IAAI,KAAA,EACJ;AACE,UAAA,IAAI,YAAA,EACJ;AACE,YAAA,OAAO,IAAA;AAAA,UACT,CAAA,MAEA;AACE,YAAA,YAAA,GAAe,IAAI,MAAA,CAAO,IAAA,EAAM,SAAS,IAAA,EAAM,MAAA,CAAO,EAAE,YAAY,CAAA;AAGpE,YAAA,IAAI,aAAa,KAAA,EACjB;AACE,cAAA,MAAA,CAAO,KAAA,CAAM,aAAa,KAAK,CAAA;AAC/B,cAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,OAAA,EAAS,OAAA,CAAQ,OAAO,cAAc,CAAA;AAE7D,cAAA,OAAO,KAAA;AAAA,YACT,CAAA,MAEA;AACE,cAAA,IAAA,CAAK,aAAA,CAAc,EAAE,CAAA,GAAI,YAAA;AAEzB,cAAA,OAAO,IAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAA,MAIA;AACE,UAAA,IAAA,CAAK,YAAY,OAAA,CAAQ,QAAA;AACzB,UAAA,IAAA,CAAK,UAAU,OAAA,CAAQ,MAAA;AAGvB,UAAA,IAAI,YAAA,EACJ;AACE,YAAA,YAAA,CAAa,MAAA,CAAO,SAAS,IAAI,CAAA;AACjC,YAAA,IAAA,CAAK,OAAA,GAAU,YAAA;AACf,YAAA,OAAO,IAAA,CAAK,cAAc,EAAE,CAAA;AAE5B,YAAA,OAAO,IAAA;AAAA,UACT;AAGA,UAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,IAAA,EAAM,SAAS,IAAI,CAAA;AAE7C,UAAA,IAAI,OAAO,KAAA,EACX;AACE,YAAA,MAAA,CAAO,KAAA,CAAM,OAAO,KAAK,CAAA;AACzB,YAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,OAAA,EAAS,OAAA,CAAQ,OAAO,cAAc,CAAA;AAE7D,YAAA,OAAO,KAAA;AAAA,UACT,CAAA,MAEA;AACE,YAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AAEf,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAiB,OAAA,EACjB;AACE,QAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,QAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA,GAClD,QAAQ,SAAA,CAAU,cAAc,CAAA,CAAE,WAAA,EAAY,GAAI,MAAA;AACpD,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,OAAA;AAAA,UACA,QAAA,EAAW,MAAA;AAAA,UACX,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,IAAI;AAAA,SAC7B;AAEA,QAAA,IAAI,QAAA,GAAW,KAAA;AAEf,QAAA,SAAS,MAAA,CAAO,OAAA,GAAU,EAAC,EAC3B;AACE,UAAA,QAAA,GAAW,IAAA;AAEX,UAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,GAAA;AAC3C,UAAA,MAAM,aAAA,GAAgB,QAAQ,aAAA,IAAiB,EAAA;AAC/C,UAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAE1D,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,EACvB;AACE,YAAA,OAAO,KAAA;AAAA,UACT;AAEA,UAAA,IAAI,WAAA,GAAc,GAAA,IAAO,WAAA,IAAe,GAAA,EACxC;AACE,YAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,WAAW,CAAA,CAAE,CAAA;AAAA,UAC3D;AAEA,UAAA,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,aAAA,EAAe,YAAY,CAAA;AAAA,QACxD;AAGA,QAAA,IAAA,CAAK,IAAA,CAAK,YAAY,IAAI,CAAA;AAE1B,QAAA,IAAI,QAAA,EACJ;AACE,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,SAAA,GAAY,KAAA;AAGjB,QAAA,IAAI,CAAC,QAAQ,IAAA,EACb;AACE,UAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AACjB,UAAA,IAAI,KAAK,WAAA,EACT;AACE,YAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,YAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AAAA,UACzB;AACA,UAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,uBAAA,CAAwB,OAAA,EAAS,IAAA,CAAK,oBAAoB,CAAC,CAAA,CAC3E,IAAA,CAAK,CAAC,GAAA,KACP;AACE,YAAA,UAAA,CAAW,IAAA,CAAK,MAAM,GAAG,CAAA;AAAA,UAC3B,CAAC,CAAA,CACA,KAAA,CAAM,MACP;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,UACnB,CAAC,CAAA;AAEH,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,gBAAgB,iBAAA,EACpB;AACE,UAAA,MAAA,CAAO,MAAM,sBAAsB,CAAA;AACnC,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,wBAAA,CAAyB,OAAO,CAAA,CAElC,IAAA,CAAK,CAAC,IAAA,KACP;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,UAAA,CAAW,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,QAC5B,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,UAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,QACnB,CAAC,CAAA;AAEH,QAAA,SAAS,WAAW,IAAA,EACpB;AACE,UAAA,MAAM,YAAA,GAAe,CAAE,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAG,CAAA;AAEnD,UAAA,IAAA,CAAK,qCAAA,CAAsC,SAAS,YAAY,CAAA;AAEhE,UAAA,IAAI,KAAK,SAAA,EACT;AACE,YAAA,IAAA,GAAO,IAAA,CAAK,aAAa,IAAI,CAAA;AAAA,UAC/B;AAEA,UAAA,OAAA,CAAQ,KAAA;AAAA,YAAM,GAAA;AAAA,YAAK,IAAA;AAAA,YAAM,YAAA;AAAA,YAAc,IAAA;AAAA,YACrC,MACA;AACE,cAAA,IAAA,CAAK,UAAU,CAAA,CAAE,sBAAA;AACjB,cAAA,IAAA,CAAK,kBAAA,CAAmB,SAAS,IAAI,CAAA;AACrC,cAAA,IAAA,CAAK,YAAA,EAAa;AAAA,YACpB;AAAA,WACF;AAGA,UAAA,IAAI,OAAO,IAAA,CAAK,QAAA,KAAa,UAAA,EAC7B;AACE,YAAA,IAAA,CAAK,QAAA,EAAS;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,eAAe,OAAA,EACf;AACE,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA,GAClD,QAAQ,SAAA,CAAU,cAAc,CAAA,CAAE,WAAA,EAAY,GAAI,MAAA;AACpD,QAAA,MAAM,IAAA,GAAO;AAAA,UACX,OAAA;AAAA,UACA,QAAA,EAAW,MAAA;AAAA,UACX,MAAA,EAAW,MAAA,CAAO,IAAA,CAAK,IAAI;AAAA,SAC7B;AAEA,QAAA,IAAI,QAAA,GAAW,KAAA;AAEf,QAAA,SAAS,MAAA,CAAO,OAAA,GAAU,EAAC,EAC3B;AACE,UAAA,QAAA,GAAW,IAAA;AAEX,UAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,GAAA;AAC3C,UAAA,MAAM,aAAA,GAAgB,QAAQ,aAAA,IAAiB,EAAA;AAC/C,UAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAE1D,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,gBAAA,EACvB;AACE,YAAA,OAAO,KAAA;AAAA,UACT;AAEA,UAAA,IAAI,WAAA,GAAc,GAAA,IAAO,WAAA,IAAe,GAAA,EACxC;AACE,YAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,WAAW,CAAA,CAAE,CAAA;AAAA,UAC3D;AAEA,UAAA,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,aAAA,EAAe,YAAY,CAAA;AAAA,QACxD;AAGA,QAAA,IAAA,CAAK,IAAA,CAAK,UAAU,IAAI,CAAA;AAExB,QAAA,IAAI,QAAA,EACJ;AACE,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,QAAQ,IAAA,EACb;AACE,UAAA,UAAA,CAAW,IAAA,CAAK,MAAM,IAAI,CAAA;AAE1B,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,gBAAgB,iBAAA,EACpB;AACE,UAAA,MAAA,CAAO,MAAM,sBAAsB,CAAA;AAEnC,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,wBAAA,CAAyB,OAAO,CAAA,CAElC,IAAA,CAAK,CAAC,IAAA,KACP;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,UAAA,CAAW,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,QAC5B,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,UAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,QACnB,CAAC,CAAA;AAEH,QAAA,SAAS,WAAW,IAAA,EACpB;AACE,UAAA,MAAM,YAAA,GAAe,CAAE,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAG,CAAA;AAEnD,UAAA,IAAA,CAAK,qCAAA,CAAsC,SAAS,YAAY,CAAA;AAEhE,UAAA,OAAA,CAAQ,KAAA,CAAM,GAAA,EAAK,IAAA,EAAM,YAAA,EAAc,IAAI,CAAA;AAG3C,UAAA,IAAI,OAAO,IAAA,CAAK,QAAA,KAAa,UAAA,EAC7B;AACE,YAAA,IAAA,CAAK,QAAA,EAAS;AAAA,UAChB;AAAA,QACF;AAAA,MACF;AAAA,MAEA,yBAAyB,OAAA,EACzB;AACE,QAAA,MAAA,CAAO,MAAM,4BAA4B,CAAA;AAEzC,QAAA,MAAM,GAAA,GAAM,QAAQ,QAAA,EAAS;AAE7B,QAAA,IAAI,IAAA,GAAO,KAAA;AAEX,QAAA,KAAA,MAAW,CAAA,IAAK,IAAI,KAAA,EACpB;AACE,UAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,CAAA,CAAE,IAAI,MAAM,EAAA,EACvC;AACE,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,SAAA,GAAY,CAAA,CAAE,SAAA,IAAa,GAAA,CAAI,SAAA,IAAa,UAAA;AAElD,UAAA,IAAI,SAAA,KAAc,UAAA,IAAc,SAAA,KAAc,UAAA,EAC9C;AACE,YAAA,IAAA,GAAO,IAAA;AAAA,UACT,CAAA,MAGA;AACE,YAAA,IAAA,GAAO,KAAA;AACP,YAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,OAAA,EAAS,GAAA,EAAK,QAAQ,IAAA,EAAK;AAEnE,QAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,QAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,QAAA,MAAM,KAAA,GAAQ,IAAI,qBAAA,CAAsB,EAAE,MAAM,OAAA,EAAS,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,CAAA;AAErE,QAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CAEjC,IAAA,CAAK,MACN;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAEA,UAAA,OAAO,KAAK,WAAA,CAAY,oBAAA,CAAqB,KAAK,CAAA,CAC/C,KAAA,CAAM,CAAC,KAAA,KACR;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,YAAA,MAAA,CAAO,IAAA,CAAK,+DAA+D,KAAK,CAAA;AAEhF,YAAA,IAAA,CAAK,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAE5D,YAAA,MAAM,KAAA;AAAA,UACR,CAAC,CAAA;AAAA,QACL,CAAC,CAAA,CACA,IAAA,CAAK,MACN;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAEA,UAAA,IAAI,IAAA,CAAK,WAAA,KAAgB,IAAA,IAAQ,IAAA,KAAS,KAAA,EAC1C;AACE,YAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AACnB,YAAA,IAAA,CAAK,UAAU,QAAQ,CAAA;AAAA,UACzB,CAAA,MAAA,IACS,IAAA,CAAK,WAAA,KAAgB,KAAA,IAAS,SAAS,IAAA,EAChD;AACE,YAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,YAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAAA,UACvB;AAAA,QACF,CAAC,CAAA,CAEA,IAAA,CAAK,MACN;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAEA,UAAA,OAAO,IAAA,CAAK,wBAAwB,QAAA,EAAU,IAAA,CAAK,qBAAqB,CAAA,CACrE,KAAA,CAAM,CAAC,KAAA,KACR;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,YAAA,MAAA,CAAO,IAAA,CAAK,mEAAmE,KAAK,CAAA;AAEpF,YAAA,MAAM,KAAA;AAAA,UACR,CAAC,CAAA;AAAA,QACL,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,iDAAiD,KAAK,CAAA;AAAA,QACpE,CAAC,CAAA;AAEH,QAAA,OAAO,IAAA,CAAK,uBAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc,OAAA,EACd;AACE,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,IAAI,CAAC,QAAQ,QAAA,EACb;AACE,UAAA,MAAA,CAAO,MAAM,2CAA2C,CAAA;AACxD,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,MAAA,KAAW,QAAQ,GAAA,EAC5C;AACE,UAAA,MAAA,CAAO,MAAM,sDAAsD,CAAA;AACnE,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAGA,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,QAAA,MAAM,QAAA,GAAW,IAAI,wBAAA,CAAyB,IAAA,EAAM,QAAQ,IAAI,CAAA;AAEhE,QAAA,MAAA,CAAO,MAAM,cAAc,CAAA;AAG3B,QAAA,IAAA,CAAK,KAAK,OAAA,EAAS;AAAA,UACjB,OAAA;AAAA,UACA,MAAA,EAAS,CAAC,YAAA,EAAc,OAAA,KACxB;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,IAAA,EAAM,YAAA,EAAc,OAAO,CAAA;AAAA,UACzC,CAAA;AAAA,UACA,QAAS,MACT;AACE,YAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,UAClB;AAAA,SACD,CAAA;AAED,QAAA,SAAS,MAAA,CAAO,YAAA,EAAc,OAAA,GAAU,EAAC,EACzC;AACE,UAAA,YAAA,GAAgB,OAAO,YAAA,KAAiB,UAAA,GAAa,YAAA,GAAe,IAAA;AAEpE,UAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,0BACnB,IAAA,CAAK,OAAA,KAAY,EAAE,gBAAA,EACvB;AACE,YAAA,OAAO,KAAA;AAAA,UACT;AAEA,UAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA;AAEvC,UAAA,OAAA,CAAQ,EAAA,CAAG,UAAA,EAAY,CAAC,EAAE,UAAS,KACnC;AACE,YAAA,QAAA,CAAS,MAAA,CAAO,QAAA,CAAS,WAAA,EAAa,QAAA,CAAS,aAAa,CAAA;AAAA,UAC9D,CAAC,CAAA;AAED,UAAA,OAAA,CAAQ,EAAA,CAAG,UAAA,EAAY,CAAC,EAAE,UAAS,KACnC;AACE,YAAA,QAAA,CAAS,MAAA,CAAO,QAAA,CAAS,WAAA,EAAa,QAAA,CAAS,aAAa,CAAA;AAAA,UAC9D,CAAC,CAAA;AAED,UAAA,OAAA,CAAQ,GAAG,SAAA,EAAW,CAAC,EAAE,OAAA,EAAS,OAAM,KACxC;AACE,YAAA,IAAI,OAAA,EACJ;AACE,cAAA,QAAA,CAAS,MAAA,CAAO,OAAA,CAAQ,WAAA,EAAa,OAAA,CAAQ,aAAa,CAAA;AAAA,YAC5D,CAAA,MAEA;AACE,cAAA,QAAA,CAAS,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,YAC5B;AAAA,UACF,CAAC,CAAA;AAGD,UAAA,IAAI,OAAA,CAAQ,QAAA,CAAS,GAAA,CAAI,SAAA,CAAU,UAAU,CAAA,EAC7C;AACE,YAAA,MAAM,WAAW,kBAAA,CAAmB,OAAA,CAAQ,SAAS,GAAA,CAAI,SAAA,CAAU,UAAU,CAAC,CAAA;AAE9E,YAAA,OAAA,CAAQ,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC5D,YAAA,OAAA,CAAQ,YAAA,CAAa,IAAA,CAAK,CAAA,UAAA,EAAa,QAAQ,CAAA,CAAE,CAAA;AAAA,UACnD;AAEA,UAAA,OAAA,CAAQ,QAAQ,OAAA,CAAQ,QAAA,CAAS,IAAI,KAAA,EAAM,EAAG,SAAS,YAAY,CAAA;AAAA,QACrE;AAEA,QAAA,SAAS,MAAA,GACT;AACE,UAAA,QAAA,CAAS,OAAO,GAAG,CAAA;AAAA,QACrB;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,eAAe,OAAA,EACf;AACE,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,IAAI,CAAC,QAAQ,KAAA,EACb;AACE,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,QACnB;AAEA,QAAA,QAAQ,OAAA,CAAQ,MAAM,KAAA;AACtB,UACE,KAAK,OAAA,EAAS;AACZ,YAAA,IAAI,EAAA;AACJ,YAAA,IAAI,eAAA;AAEJ,YAAA,IAAI,QAAQ,KAAA,CAAM,MAAA,IAAU,OAAA,CAAQ,KAAA,CAAM,OAAO,EAAA,EACjD;AACE,cAAA,EAAA,GAAK,OAAA,CAAQ,MAAM,MAAA,CAAO,EAAA;AAC1B,cAAA,eAAA,GAAkB,IAAA,CAAK,kBAAkB,EAAE,CAAA;AAAA,YAC7C,WACS,MAAA,CAAO,IAAA,CAAK,KAAK,iBAAiB,CAAA,CAAE,WAAW,CAAA,EACxD;AACE,cAAA,eAAA,GAAkB,IAAA,CAAK,kBACrB,MAAA,CAAO,IAAA,CAAK,KAAK,iBAAiB,CAAA,CAAE,CAAC,CAAC,CAAA;AAAA,YAC1C,CAAA,MAEA;AACE,cAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,4BAA4B,CAAA;AAE/C,cAAA;AAAA,YACF;AAEA,YAAA,IAAI,CAAC,eAAA,EACL;AACE,cAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,6BAA6B,CAAA;AAEhD,cAAA;AAAA,YACF;AAEA,YAAA,eAAA,CAAgB,cAAc,OAAO,CAAA;AACrC,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,YAAA;AAAA,UACF;AAAA,UAEA,SAAS;AACP,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,UACnB;AAAA;AACF,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAiB,OAAA,EACjB;AACE,QAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,QAAA,SAAS,OAAO,YAAA,EAChB;AACE,UAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,0BACnB,IAAA,CAAK,OAAA,KAAY,EAAE,gBAAA,EACvB;AACE,YAAA,OAAO,KAAA;AAAA,UACT;AAEA,UAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAAW,IAAA,CAAK,GAAG,CAAA;AAGvC,UAAA,OAAA,CAAQ,EAAA,CAAG,aAAa,MACxB;AACE,YAAA,IAAA,CAAK,SAAA,EAAU;AAAA,UACjB,CAAC,CAAA;AAED,UAAA,OAAA,CAAQ,aAAA,CAAc,SAAS,YAAY,CAAA;AAAA,QAC7C;AAEA,QAAA,SAAS,MAAA,GACT;AACE,UAAA,MAAA,CAAO,MAAM,sCAAsC,CAAA;AACnD,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,QACnB;AAGA,QAAA,IAAA,CAAK,KAAK,UAAA,EAAY;AAAA,UACpB,OAAA;AAAA,UACA,MAAA,EAAS,CAAC,YAAA,KAAiB;AAAE,YAAA,MAAA,CAAO,IAAA,CAAK,MAAM,YAAY,CAAA;AAAA,UAAG,CAAA;AAAA,UAC9D,QAAS,MAAM;AAAE,YAAA,MAAA,CAAO,KAAK,IAAI,CAAA;AAAA,UAAG;AAAA,SACrC,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,mBAAA,CAAoB,gBAAA,EAAkB,mBAAA,EAAqB,WAAA,EAC3D;AACE,QAAA,MAAM,iBAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,GAAA,EAAK,KAAK,QAAA,EAAU;AAAA,UAChE,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,UACxB,CAAA;AAAA,UACA,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,UACxB,CAAA;AAAA;AAAA,UAEA,eAAA,EAAkB,CAAC,OAAA,KACnB;AACE,YAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAAA,UAClB,CAAA;AAAA,UACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,YAAA,IAAA,CAAK,uBAAuB,QAAQ,CAAA;AAAA,UACtC;AAAA,SACD,CAAA;AAID,QAAA,OAAA,CAAQ,OAAA,EAAQ,CAEb,IAAA,CAAK,MACN;AAEE,UAAA,IAAI,WAAA,EACJ;AACE,YAAA,OAAO,WAAA;AAAA,UACT,CAAA,MAAA,IAES,gBAAA,CAAiB,KAAA,IAAS,gBAAA,CAAiB,KAAA,EACpD;AACE,YAAA,IAAA,CAAK,iCAAA,GAAoC,IAAA;AAEzC,YAAA,OAAO,UAAU,YAAA,CAAa,YAAA,CAAa,gBAAgB,CAAA,CACxD,KAAA,CAAM,CAAC,KAAA,KACR;AACE,cAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,gBAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,cAC9B;AAEA,cAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,CAAQ,OAAO,wBAAwB,CAAA;AAEnE,cAAA,MAAA,CAAO,IAAA,CAAK,wCAAwC,KAAK,CAAA;AAEzD,cAAA,IAAA,CAAK,IAAA,CAAK,sBAAsB,KAAK,CAAA;AAErC,cAAA,MAAM,KAAA;AAAA,YACR,CAAC,CAAA;AAAA,UACL;AAAA,QACF,CAAC,CAAA,CACA,IAAA,CAAK,CAAC,MAAA,KACP;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAEA,UAAA,IAAA,CAAK,iBAAA,GAAoB,MAAA;AAEzB,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,MAAA,CAAO,SAAA,EAAU,CAAE,OAAA,CAAQ,CAAC,KAAA,KAC5B;AACE,cAAA,IAAA,CAAK,WAAA,CAAY,QAAA,CAAS,KAAA,EAAO,MAAM,CAAA;AAAA,YACzC,CAAC,CAAA;AAAA,UACH;AAGA,UAAA,IAAA,CAAK,WAAA,CAAY,KAAK,QAAQ,CAAA;AAE9B,UAAA,OAAO,KAAK,uBAAA,CAAwB,OAAA,EAAS,mBAAmB,CAAA,CAC7D,KAAA,CAAM,CAAC,KAAA,KACR;AACE,YAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,IAAA,EAAM,OAAA,CAAQ,OAAO,YAAY,CAAA;AAEvD,YAAA,MAAM,KAAA;AAAA,UACR,CAAC,CAAA;AAAA,QACL,CAAC,CAAA,CACA,IAAA,CAAK,CAAC,IAAA,KACP;AACE,UAAA,IAAI,IAAA,CAAK,YAAA,IAAgB,IAAA,CAAK,OAAA,KAAY,EAAE,iBAAA,EAC5C;AACE,YAAA,MAAM,IAAI,MAAM,YAAY,CAAA;AAAA,UAC9B;AAEA,UAAA,IAAA,CAAK,SAAS,IAAA,GAAO,IAAA;AACrB,UAAA,IAAA,CAAK,UAAU,CAAA,CAAE,kBAAA;AAEjB,UAAA,MAAA,CAAO,KAAA,CAAM,6BAAA,EAA+B,IAAA,CAAK,QAAQ,CAAA;AAGzD,UAAA,IAAA,CAAK,KAAK,SAAA,EAAW;AAAA,YACnB,SAAU,IAAA,CAAK;AAAA,WAChB,CAAA;AAED,UAAA,cAAA,CAAe,IAAA,EAAK;AAAA,QACtB,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AAAA,QACnB,CAAC,CAAA;AAAA,MACL;AAAA;AAAA;AAAA;AAAA,MAKA,iBAAA,GACA;AACE,QAAA,MAAM,SAAS,IAAA,CAAK,WAAA,CAAY,YAAW,CAAE,IAAA,CAAK,CAAC,SAAA,KACnD;AACE,UAAA,OAAO,SAAA,CAAU,KAAA,IAAS,SAAA,CAAU,KAAA,CAAM,IAAA,KAAS,OAAA;AAAA,QACrD,CAAC,CAAA;AAED,QAAA,IAAI,EAAE,MAAA,IAAU,MAAA,CAAO,IAAA,CAAA,EACvB;AACE,UAAA,MAAA,CAAO,KAAK,qDAAqD,CAAA;AAEjE,UAAA;AAAA,QACF;AAEA,QAAA,OAAO,MAAA,CAAO,IAAA;AAAA,MAChB;AAAA;AAAA;AAAA;AAAA,MAKA,uBAAuB,QAAA,EACvB;AACE,QAAA,MAAA,CAAO,MAAM,yBAAyB,CAAA;AAGtC,QAAA,IAAI,KAAK,OAAA,KAAY,QAAA,CAAS,eAAc,GAAA,IAAO,QAAA,CAAS,eAAc,GAAA,CAAA,EAC1E;AAME,UAAA,IAAI,KAAK,OAAA,CAAQ,EAAA,CAAG,OAAA,KAAY,QAAA,CAAS,WACrC,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,SAAA,KAAc,SAAS,QAAA,IACvC,IAAA,CAAK,QAAQ,EAAA,CAAG,UAAA,KAAe,SAAS,MAAA,EAC5C;AACE,YAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAG,CAAA;AAE5B,YAAA;AAAA,UACF,CAAA,MAIA;AACE,YAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,IAAA,EAAM,UAAU,KAAK,CAAA;AAE/C,YAAA,IAAI,MAAA,CAAO,UAAU,MAAA,EACrB;AACE,cAAA,MAAA,CAAO,KAAA,CAAM,OAAO,KAAK,CAAA;AAEzB,cAAA;AAAA,YACF;AAEA,YAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAG,CAAA;AAC5B,YAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAG,CAAA;AAE5B,YAAA;AAAA,UACF;AAAA,QAEF;AAGA,QAAA,IAAI,KAAK,YAAA,EACT;AACE,UAAA,IAAI,QAAA,CAAS,WAAA,IAAe,GAAA,IAAO,QAAA,CAAS,cAAc,GAAA,EAC1D;AACE,YAAA,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA;AAAA,UAC1C,WACS,QAAA,CAAS,WAAA,IAAe,GAAA,IAAO,QAAA,CAAS,cAAc,GAAA,EAC/D;AACE,YAAA,IAAA,CAAK,oBAAoB,QAAQ,CAAA;AAAA,UACnC;AAEA,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,sBAAsB,IAAA,CAAK,OAAA,KAAY,EAAE,mBAAA,EAChE;AACE,UAAA;AAAA,QACF;AAEA,QAAA,QAAQ,IAAA;AACR,UACE,KAAK,OAAA,CAAQ,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA;AACpC,YAAA,IAAA,CAAK,UAAU,CAAA,CAAE,mBAAA;AACjB,YAAA;AAAA,UAEF,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAC5C;AAEE,YAAA,IAAI,CAAC,SAAS,MAAA,EACd;AACE,cAAA,MAAA,CAAO,MAAM,sCAAsC,CAAA;AACnD,cAAA;AAAA,YACF;AAGA,YAAA,IAAI,QAAA,CAAS,SAAA,CAAU,SAAS,CAAA,EAChC;AAEE,cAAA,IAAI,CAAC,IAAA,CAAK,aAAA,CAAc,QAAA,EAAU,KAAA,EAAO,IAAI,CAAA,EAC7C;AACE,gBAAA;AAAA,cACF;AAAA,YACF;AAEA,YAAA,IAAA,CAAK,UAAU,CAAA,CAAE,mBAAA;AAEjB,YAAA,IAAI,CAAC,SAAS,IAAA,EACd;AACE,cAAA,IAAA,CAAK,SAAA,CAAU,UAAU,QAAQ,CAAA;AACjC,cAAA;AAAA,YACF;AAEA,YAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,QAAA,EAAU,GAAA,EAAK,SAAS,IAAA,EAAK;AAErE,YAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,YAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,YAAA,MAAM,MAAA,GAAS,IAAI,qBAAA,CAAsB,EAAE,MAAM,QAAA,EAAU,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,CAAA;AAEvE,YAAA,IAAA,CAAK,uBAAA,GAA0B,KAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,WAAA,CAAY,qBAAqB,MAAM,CAAC,EACxD,IAAA,CAAK,MAAM,KAAK,SAAA,CAAU,QAAA,EAAU,QAAQ,CAAC,CAAA,CAC7C,KAAA,CAAM,CAAC,KAAA,KACR;AACE,cAAA,MAAA,CAAO,IAAA,CAAK,+DAA+D,KAAK,CAAA;AAEhF,cAAA,IAAA,CAAK,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAAA,YAC9D,CAAC,CAAA;AACH,YAAA;AAAA,UACF;AAAA,UAEA,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA,EAC5C;AACE,YAAA,IAAA,CAAK,UAAU,CAAA,CAAE,gBAAA;AAEjB,YAAA,IAAI,CAAC,SAAS,IAAA,EACd;AACE,cAAA,IAAA,CAAK,mBAAA,CAAoB,QAAA,EAAU,GAAA,EAAK,OAAA,CAAQ,OAAO,WAAW,CAAA;AAClE,cAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,QAAA,EAAU,OAAA,CAAQ,OAAO,qBAAqB,CAAA;AACrE,cAAA;AAAA,YACF;AAGA,YAAA,IAAI,CAAC,IAAA,CAAK,aAAA,CAAc,QAAA,EAAU,KAAK,CAAA,EACvC;AACE,cAAA;AAAA,YACF;AAEA,YAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,QAAA,EAAU,GAAA,EAAK,SAAS,IAAA,EAAK;AAErE,YAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,YAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,YAAA,MAAM,MAAA,GAAS,IAAI,qBAAA,CAAsB,EAAE,MAAM,QAAA,EAAU,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,CAAA;AAEvE,YAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MACN;AAGE,cAAA,IAAI,IAAA,CAAK,WAAA,CAAY,cAAA,KAAmB,QAAA,EACxC;AACE,gBAAA,OAAO,KAAK,WAAA,CAAY,WAAA,CAAY,IAAA,CAAK,oBAAoB,EAC1D,IAAA,CAAK,CAAC,KAAA,KAAU,IAAA,CAAK,YAAY,mBAAA,CAAoB,KAAK,CAAC,CAAA,CAC3D,KAAA,CAAM,CAAC,KAAA,KACR;AACE,kBAAA,IAAA,CAAK,mBAAA,CAAoB,QAAA,EAAU,GAAA,EAAK,KAAA,CAAM,UAAU,CAAA;AACxD,kBAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,EAAS,QAAA,EAAU,OAAA,CAAQ,OAAO,YAAY,CAAA;AAAA,gBAC7D,CAAC,CAAA;AAAA,cACL;AAAA,YACF,CAAC,CAAA,CACA,IAAA,CAAK,MACN;AACE,cAAA,IAAA,CAAK,WAAA,CAAY,oBAAA,CAAqB,MAAM,CAAA,CACzC,KAAK,MACN;AAEE,gBAAA,IAAA,CAAK,uCAAuC,QAAQ,CAAA;AAEpD,gBAAA,IAAA,CAAK,SAAA,CAAU,UAAU,QAAQ,CAAA;AACjC,gBAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAG,CAAA;AAC5B,gBAAA,IAAA,CAAK,UAAA,CAAW,SAAS,IAAI,CAAA;AAAA,cAC/B,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,gBAAA,IAAA,CAAK,mBAAA,CAAoB,QAAA,EAAU,GAAA,EAAK,qBAAqB,CAAA;AAC7D,gBAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,QAAA,EAAU,OAAA,CAAQ,OAAO,qBAAqB,CAAA;AAErE,gBAAA,MAAA,CAAO,IAAA,CAAK,+DAA+D,KAAK,CAAA;AAEhF,gBAAA,IAAA,CAAK,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAAA,cAC9D,CAAC,CAAA;AAAA,YACL,CAAC,CAAA;AACH,YAAA;AAAA,UACF;AAAA,UAEA,SACA;AACE,YAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,WAAW,CAAA;AAEtD,YAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,QAAA,EAAU,KAAK,CAAA;AAAA,UACxC;AAAA;AACF,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,CAAc,OAAA,GAAU,EAAC,EACzB;AACE,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAC7D,QAAA,MAAM,mBAAA,GAAsB,OAAA,CAAQ,mBAAA,IAClC,IAAA,CAAK,oBAAA,IAAwB,IAAA;AAE/B,QAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAC7C,QAAA,YAAA,CAAa,KAAK,+BAA+B,CAAA;AAGjD,QAAA,IAAI,IAAA,CAAK,eAAe,OAAA,EACxB;AACE,UAAA,YAAA,CAAa,IAAA,CAAK,CAAA,iBAAA,EAAoB,IAAA,CAAK,cAAA,CAAe,cAAc,CAAA,WAAA,EAAc,IAAA,CAAK,cAAA,CAAe,SAAA,GAAY,KAAA,GAAQ,KAAK,CAAA,CAAE,CAAA;AAAA,QACvI;AAEA,QAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,uBAAA,CAAwB,OAAA,EAAS,mBAAmB,CAAC,CAAA,CACrE,IAAA,CAAK,CAAC,GAAA,KACP;AACE,UAAA,GAAA,GAAM,IAAA,CAAK,aAAa,GAAG,CAAA;AAE3B,UAAA,MAAM,IAAI,EAAE,UAAA,EAAY,OAAA,EAAS,IAAA,EAAM,SAAS,GAAA,EAAI;AAEpD,UAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,UAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,UAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,MAAA,EAAQ;AAAA,YAC/B,YAAA;AAAA,YACA,IAAA,EAAgB,GAAA;AAAA,YAChB,aAAA,EAAgB;AAAA,cACd,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,gBAAA,WAAA,CAAY,IAAA,CAAK,MAAM,QAAQ,CAAA;AAC/B,gBAAA,SAAA,GAAY,IAAA;AAAA,cACd,CAAA;AAAA,cACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,gBAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,cAC9B,CAAA;AAAA,cACA,kBAAmB,MACnB;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,cACxB,CAAA;AAAA,cACA,kBAAmB,MACnB;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,cACxB,CAAA;AAAA,cACA,eAAgB,MAChB;AACE,gBAAA,IAAA,CAAK,aAAA,EAAc;AAAA,cACrB;AAAA;AACF,WACD,CAAA;AAAA,QACH,CAAC,CAAA,CACA,KAAA,CAAM,MACP;AACE,UAAA,QAAA,EAAS;AAAA,QACX,CAAC,CAAA;AAEH,QAAA,SAAS,YAAY,QAAA,EACrB;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAG,CAAA;AAG5B,UAAA,IAAI,SAAA,EAAW;AAAE,YAAA;AAAA,UAAQ;AAGzB,UAAA,IAAA,CAAK,uCAAuC,QAAQ,CAAA;AAGpD,UAAA,IAAI,CAAC,SAAS,IAAA,EACd;AACE,YAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAElB,YAAA;AAAA,UACF,CAAA,MAAA,IACS,CAAC,QAAA,CAAS,SAAA,CAAU,cAAc,CAAA,IAAK,QAAA,CAAS,SAAA,CAAU,cAAc,CAAA,CAAE,WAAA,EAAY,KAAM,iBAAA,EACrG;AACE,YAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAElB,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,QAAA,EAAU,GAAA,EAAK,SAAS,IAAA,EAAK;AAErE,UAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,UAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,UAAA,MAAM,MAAA,GAAS,IAAI,qBAAA,CAAsB,EAAE,MAAM,QAAA,EAAU,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,CAAA;AAEvE,UAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,WAAA,CAAY,oBAAA,CAAqB,MAAM,CAAC,CAAA,CACxD,IAAA,CAAK,MACN;AACE,YAAA,IAAI,cAAc,SAAA,EAClB;AACE,cAAA,aAAA,CAAc,UAAU,QAAQ,CAAA;AAAA,YAClC;AAAA,UACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,YAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAElB,YAAA,MAAA,CAAO,IAAA,CAAK,+DAA+D,KAAK,CAAA;AAEhF,YAAA,IAAA,CAAK,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAAA,UAC9D,CAAC,CAAA;AAAA,QACL;AAEA,QAAA,SAAS,SAAS,QAAA,EAClB;AACE,UAAA,IAAI,cAAc,MAAA,EAClB;AACE,YAAA,aAAA,CAAc,OAAO,QAAQ,CAAA;AAAA,UAC/B;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,CAAY,OAAA,GAAU,EAAC,EACvB;AACE,QAAA,MAAA,CAAO,MAAM,cAAc,CAAA;AAE3B,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAC7D,QAAA,MAAM,mBAAA,GAAsB,OAAA,CAAQ,mBAAA,IAClC,IAAA,CAAK,oBAAA,IAAwB,IAAA;AAC/B,QAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,KAAA;AAErC,QAAA,IAAI,SAAA,GAAY,KAAA;AAEhB,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAG7C,QAAA,IAAI,IAAA,CAAK,eAAe,OAAA,EACxB;AACE,UAAA,YAAA,CAAa,IAAA,CAAK,CAAA,iBAAA,EAAoB,IAAA,CAAK,cAAA,CAAe,cAAc,CAAA,WAAA,EAAc,IAAA,CAAK,cAAA,CAAe,SAAA,GAAY,KAAA,GAAQ,KAAK,CAAA,CAAE,CAAA;AAAA,QACvI;AAEA,QAAA,IAAI,QAAA,EACJ;AACE,UAAA,YAAA,CAAa,KAAK,+BAA+B,CAAA;AAEjD,UAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,uBAAA,CAAwB,OAAA,EAAS,mBAAmB,CAAC,CAAA,CACrE,IAAA,CAAK,CAAC,GAAA,KACP;AACE,YAAA,GAAA,GAAM,IAAA,CAAK,aAAa,GAAG,CAAA;AAE3B,YAAA,MAAM,IAAI,EAAE,UAAA,EAAY,OAAA,EAAS,IAAA,EAAM,SAAS,GAAA,EAAI;AAEpD,YAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,YAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,YAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,MAAA,EAAQ;AAAA,cAC/B,YAAA;AAAA,cACA,IAAA,EAAgB,GAAA;AAAA,cAChB,aAAA,EAAgB;AAAA,gBACd,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,kBAAA,WAAA,CAAY,IAAA,CAAK,MAAM,QAAQ,CAAA;AAC/B,kBAAA,SAAA,GAAY,IAAA;AAAA,gBACd,CAAA;AAAA,gBACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,kBAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,gBAC9B,CAAA;AAAA,gBACA,kBAAmB,MACnB;AACE,kBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,gBACxB,CAAA;AAAA,gBACA,kBAAmB,MACnB;AACE,kBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,gBACxB,CAAA;AAAA,gBACA,eAAgB,MAChB;AACE,kBAAA,IAAA,CAAK,aAAA,EAAc;AAAA,gBACrB;AAAA;AACF,aACD,CAAA;AAAA,UACH,CAAC,CAAA,CACA,KAAA,CAAM,MACP;AACE,YAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,UACpB,CAAC,CAAA;AAAA,QACL,CAAA,MAIA;AACE,UAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,MAAA,EAAQ;AAAA,YAC/B,YAAA;AAAA,YACA,aAAA,EAAgB;AAAA,cACd,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,gBAAA,WAAA,CAAY,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,cACjC,CAAA;AAAA,cACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,gBAAA,QAAA,CAAS,IAAA,CAAK,MAAM,QAAQ,CAAA;AAAA,cAC9B,CAAA;AAAA,cACA,kBAAmB,MACnB;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,cACxB,CAAA;AAAA,cACA,kBAAmB,MACnB;AACE,gBAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,cACxB,CAAA;AAAA,cACA,eAAgB,MAChB;AACE,gBAAA,IAAA,CAAK,aAAA,EAAc;AAAA,cACrB;AAAA;AACF,WACD,CAAA;AAAA,QACH;AAEA,QAAA,SAAS,YAAY,QAAA,EACrB;AACE,UAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EACvB;AACE,YAAA;AAAA,UACF;AAGA,UAAA,IAAI,SAAA,EAAW;AAAE,YAAA;AAAA,UAAQ;AAGzB,UAAA,IAAA,CAAK,uCAAuC,QAAQ,CAAA;AAGpD,UAAA,IAAI,QAAA,EACJ;AACE,YAAA,IAAI,CAAC,SAAS,IAAA,EACd;AACE,cAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAElB,cAAA;AAAA,YACF,CAAA,MAAA,IACS,CAAC,QAAA,CAAS,SAAA,CAAU,cAAc,CAAA,IAAK,QAAA,CAAS,SAAA,CAAU,cAAc,CAAA,CAAE,WAAA,EAAY,KAAM,iBAAA,EACrG;AACE,cAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAElB,cAAA;AAAA,YACF;AAEA,YAAA,MAAM,CAAA,GAAI,EAAE,UAAA,EAAY,QAAA,EAAU,MAAM,QAAA,EAAU,GAAA,EAAK,SAAS,IAAA,EAAK;AAErE,YAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AACzB,YAAA,IAAA,CAAK,IAAA,CAAK,OAAO,CAAC,CAAA;AAElB,YAAA,MAAM,MAAA,GAAS,IAAI,qBAAA,CAAsB,EAAE,MAAM,QAAA,EAAU,GAAA,EAAK,CAAA,CAAE,GAAA,EAAK,CAAA;AAEvE,YAAA,IAAA,CAAK,uBAAA,GAA0B,IAAA,CAAK,uBAAA,CACjC,IAAA,CAAK,MAAM,IAAA,CAAK,WAAA,CAAY,oBAAA,CAAqB,MAAM,CAAC,CAAA,CACxD,IAAA,CAAK,MACN;AACE,cAAA,IAAI,cAAc,SAAA,EAClB;AACE,gBAAA,aAAA,CAAc,UAAU,QAAQ,CAAA;AAAA,cAClC;AAAA,YACF,CAAC,CAAA,CACA,KAAA,CAAM,CAAC,KAAA,KACR;AACE,cAAA,QAAA,CAAS,KAAK,IAAI,CAAA;AAElB,cAAA,MAAA,CAAO,IAAA,CAAK,+DAA+D,KAAK,CAAA;AAEhF,cAAA,IAAA,CAAK,IAAA,CAAK,6CAA6C,KAAK,CAAA;AAAA,YAC9D,CAAC,CAAA;AAAA,UACL,CAAA,MAAA,IAES,cAAc,SAAA,EACvB;AACE,YAAA,aAAA,CAAc,UAAU,QAAQ,CAAA;AAAA,UAClC;AAAA,QACF;AAEA,QAAA,SAAS,SAAS,QAAA,EAClB;AACE,UAAA,IAAI,cAAc,MAAA,EAAQ;AAAE,YAAA,aAAA,CAAc,OAAO,QAAQ,CAAA;AAAA,UAAG;AAAA,QAC9D;AAAA,MACF;AAAA,MAEA,mBAAA,CAAoB,QAAA,EAAU,WAAA,EAAa,aAAA,EAC3C;AACE,QAAA,MAAA,CAAO,MAAM,sBAAsB,CAAA;AAEnC,QAAA,MAAM,eAAe,EAAC;AAEtB,QAAA,IAAI,WAAA,EACJ;AACE,UAAA,aAAA,GAAgB,aAAA,IAAiB,OAAA,CAAQ,aAAA,CAAc,WAAW,CAAA,IAAK,EAAA;AACvE,UAAA,YAAA,CAAa,IAAA,CAAK,CAAA,mBAAA,EAAsB,WAAW,CAAA,QAAA,EAAW,aAAa,CAAA,CAAA,CAAG,CAAA;AAAA,QAChF;AAGA,QAAA,IAAI,KAAK,OAAA,IAAW,IAAA,CAAK,aAAA,CAAc,QAAA,EAAU,KAAK,CAAA,EACtD;AACE,UAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAG,CAAA;AAC5B,UAAA,IAAA,CAAK,WAAA,CAAY,QAAQ,GAAA,EAAK;AAAA,YAC5B;AAAA,WACD,CAAA;AAAA,QACH;AAGA,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,iBAAA;AAAA,MACnB;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,GAAA,EACb;AAEE,QAAA,IAAI,CAAC,IAAA,CAAK,UAAA,IAAc,CAAC,KAAK,WAAA,EAC9B;AACE,UAAA,OAAO,GAAA;AAAA,QACT;AAEA,QAAA,GAAA,GAAM,aAAA,CAAc,MAAM,GAAG,CAAA;AAG7B,QAAA,IAAI,IAAA,CAAK,UAAA,IAAc,CAAC,IAAA,CAAK,WAAA,EAC7B;AACE,UAAA,MAAA,CAAO,MAAM,4CAA4C,CAAA;AACzD,UAAA,KAAA,MAAW,CAAA,IAAK,IAAI,KAAA,EACpB;AACE,YAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,CAAA,CAAE,IAAI,MAAM,EAAA,EACvC;AACE,cAAA;AAAA,YACF;AACA,YAAA,IAAI,CAAC,EAAE,SAAA,EACP;AACE,cAAA,CAAA,CAAE,SAAA,GAAY,UAAA;AAAA,YAChB,CAAA,MAAA,IACS,CAAA,CAAE,SAAA,KAAc,UAAA,EACzB;AACE,cAAA,CAAA,CAAE,SAAA,GAAY,UAAA;AAAA,YAChB,CAAA,MAAA,IACS,CAAA,CAAE,SAAA,KAAc,UAAA,EACzB;AACE,cAAA,CAAA,CAAE,SAAA,GAAY,UAAA;AAAA,YAChB;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IAES,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,WAAA,EACjC;AACE,UAAA,MAAA,CAAO,MAAM,8CAA8C,CAAA;AAC3D,UAAA,KAAA,MAAW,CAAA,IAAK,IAAI,KAAA,EACpB;AACE,YAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,CAAA,CAAE,IAAI,MAAM,EAAA,EACvC;AACE,cAAA;AAAA,YACF;AACA,YAAA,CAAA,CAAE,SAAA,GAAY,UAAA;AAAA,UAChB;AAAA,QACF,CAAA,MAAA,IAES,KAAK,WAAA,EACd;AACE,UAAA,MAAA,CAAO,MAAM,gDAAgD,CAAA;AAC7D,UAAA,KAAA,MAAW,CAAA,IAAK,IAAI,KAAA,EACpB;AACE,YAAA,IAAI,cAAA,CAAe,OAAA,CAAQ,CAAA,CAAE,IAAI,MAAM,EAAA,EACvC;AACE,cAAA;AAAA,YACF;AACA,YAAA,IAAI,CAAC,EAAE,SAAA,EACP;AACE,cAAA,CAAA,CAAE,SAAA,GAAY,UAAA;AAAA,YAChB,CAAA,MAAA,IACS,CAAA,CAAE,SAAA,KAAc,UAAA,EACzB;AACE,cAAA,CAAA,CAAE,SAAA,GAAY,UAAA;AAAA,YAChB,CAAA,MAAA,IACS,CAAA,CAAE,SAAA,KAAc,UAAA,EACzB;AACE,cAAA,CAAA,CAAE,SAAA,GAAY,UAAA;AAAA,YAChB;AAAA,UACF;AAAA,QACF;AAEA,QAAA,OAAO,aAAA,CAAc,MAAM,GAAG,CAAA;AAAA,MAChC;AAAA,MAEA,oBAAA,GACA;AACE,QAAA,IAAI,WAAA,GAAc,MAAM,WAAA,GAAc,IAAA;AAEtC,QAAA,IAAI,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,WAAA,EAC5B;AACE,UAAA,WAAA,GAAc,KAAA;AACd,UAAA,WAAA,GAAc,KAAA;AAAA,QAChB;AAEA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,WAAA,GAAc,KAAA;AAAA,QAChB;AAEA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,WAAA,GAAc,KAAA;AAAA,QAChB;AAEA,QAAA,IAAA,CAAK,gBAAA,CAAiB,CAAC,WAAW,CAAA;AAClC,QAAA,IAAA,CAAK,gBAAA,CAAiB,CAAC,WAAW,CAAA;AAAA,MACpC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,qCAAA,CAAsC,SAAS,oBAAA,EAC/C;AACE,QAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,OAAA,EAAS;AAAE,UAAA;AAAA,QAAQ;AAE5C,QAAA,IAAI,yBAAA;AAEJ,QAAA,IAAI,OAAA,CAAQ,eAAA,IAAmB,OAAA,CAAQ,eAAA,IAAmB,QAAQ,mBAAA,EAClE;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,iBAAiB,OAAA,CAAQ,eAAA;AAC7C,UAAA,yBAAA,GAA4B,QAAQ,yBAAA,IAA6B,KAAA;AAAA,QACnE,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,cAAA;AACzD,UAAA,yBAAA,GAA4B,KAAA;AAAA,QAC9B;AAEA,QAAA,oBAAA,CAAqB,KAAK,CAAA,iBAAA,EAAoB,IAAA,CAAK,eAAe,cAAc,CAAA,WAAA,EAAc,yBAAyB,CAAA,CAAE,CAAA;AAEzH,QAAA,IAAA,CAAK,cAAA,CAAe,YAAa,yBAAA,KAA8B,KAAA;AAC/D,QAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,MACxB;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,uCAAuC,QAAA,EACvC;AACE,QAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,OAAA,EAAS;AAAE,UAAA;AAAA,QAAQ;AAE5C,QAAA,IAAI,yBAAA;AAEJ,QAAA,IAAI,QAAA,CAAS,eAAA,IACT,QAAA,CAAS,eAAA,IAAmB,QAAQ,mBAAA,EACxC;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,iBAAiB,QAAA,CAAS,eAAA;AAC9C,UAAA,yBAAA,GAA4B,SAAS,yBAAA,IAA6B,KAAA;AAAA,QACpE,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,cAAA,GAAiB,IAAA,CAAK,cAAA,CAAe,cAAA;AACzD,UAAA,yBAAA,GAA4B,KAAA;AAAA,QAC9B;AAEA,QAAA,IAAA,CAAK,cAAA,CAAe,YAAa,yBAAA,KAA8B,KAAA;AAC/D,QAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,MACxB;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,MAAM,OAAA,GAAU,KAAK,cAAA,CAAe,cAAA;AAEpC,QAAA,IAAA,CAAK,eAAe,OAAA,GAAU,IAAA;AAE9B,QAAA,YAAA,CAAa,IAAA,CAAK,eAAe,KAAK,CAAA;AAGtC,QAAA,IAAI,IAAA,CAAK,eAAe,SAAA,EACxB;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,KAAA,GAAQ,UAAA,CAAW,MACvC;AACE,YAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EAAmB;AAAE,cAAA;AAAA,YAAQ;AAEpD,YAAA,IAAI,CAAC,IAAA,CAAK,gBAAA,EAAiB,EAAG;AAAE,cAAA;AAAA,YAAQ;AAExC,YAAA,MAAA,CAAO,MAAM,qDAAqD,CAAA;AAElE,YAAA,IAAI,IAAA,CAAK,cAAA,CAAe,aAAA,KAAkB,OAAA,CAAQ,MAAA,EAClD;AACE,cAAA,IAAA,CAAK,WAAA,EAAY;AAAA,YACnB,CAAA,MAEA;AACE,cAAA,IAAA,CAAK,aAAA,EAAc;AAAA,YACrB;AAAA,UACF,CAAA,EAAG,UAAU,GAAG,CAAA;AAAA,QAClB,CAAA,MAIA;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,KAAA,GAAQ,UAAA,CAAW,MACvC;AACE,YAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,iBAAA,EAAmB;AAAE,cAAA;AAAA,YAAQ;AAEpD,YAAA,MAAA,CAAO,KAAK,4DAA4D,CAAA;AAExE,YAAA,IAAA,CAAK,SAAA,CAAU;AAAA,cACb,KAAA,EAAgB,QAAQ,MAAA,CAAO,eAAA;AAAA,cAC/B,WAAA,EAAgB,GAAA;AAAA,cAChB,aAAA,EAAgB;AAAA,aACjB,CAAA;AAAA,UACH,CAAA,EAAG,UAAU,IAAI,CAAA;AAAA,QACnB;AAAA,MACF;AAAA,MAEA,iBAAiB,IAAA,EACjB;AACE,QAAA,MAAM,UAAU,IAAA,CAAK,WAAA,CAAY,YAAW,CAAE,MAAA,CAAO,CAAC,MAAA,KACtD;AACE,UAAA,OAAO,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,KAAA,CAAM,IAAA,KAAS,OAAA;AAAA,QAC/C,CAAC,CAAA;AAED,QAAA,KAAA,MAAW,UAAU,OAAA,EACrB;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,UAAU,CAAC,IAAA;AAAA,QAC1B;AAAA,MACF;AAAA,MAEA,iBAAiB,IAAA,EACjB;AACE,QAAA,MAAM,UAAU,IAAA,CAAK,WAAA,CAAY,YAAW,CAAE,MAAA,CAAO,CAAC,MAAA,KACtD;AACE,UAAA,OAAO,MAAA,CAAO,KAAA,IAAS,MAAA,CAAO,KAAA,CAAM,IAAA,KAAS,OAAA;AAAA,QAC/C,CAAC,CAAA;AAED,QAAA,KAAA,MAAW,UAAU,OAAA,EACrB;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,UAAU,CAAC,IAAA;AAAA,QAC1B;AAAA,MACF;AAAA,MAEA,cAAA,CAAe,YAAY,OAAA,EAC3B;AACE,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,IAAA,CAAK,GAAA,CAAI,cAAc,IAAA,EAAM;AAAA,UAC3B,UAAA;AAAA,UACA,OAAA,EAAU,IAAA;AAAA,UACV;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,YAAY,OAAA,EACZ;AACE,QAAA,MAAA,CAAO,MAAM,oBAAoB,CAAA;AAEjC,QAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,QAAA,IAAA,CAAK,KAAK,YAAA,EAAc;AAAA,UACtB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,SAAA,CAAU,YAAY,QAAA,EACtB;AACE,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,IAAA,CAAK,KAAK,UAAA,EAAY;AAAA,UACpB,UAAA;AAAA,UACA,UAAW,QAAA,IAAY;AAAA,SACxB,CAAA;AAAA,MACH;AAAA,MAEA,SAAA,CAAU,YAAY,OAAA,EACtB;AACE,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAA,CAAK,WAAA,uBAAkB,IAAA,EAAK;AAE5B,QAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,QAAA,IAAA,CAAK,KAAK,UAAA,EAAY;AAAA,UACpB,UAAA;AAAA,UACA,UAAW,OAAA,IAAW;AAAA,SACvB,CAAA;AAAA,MACH;AAAA,MAEA,UAAA,CAAW,YAAY,GAAA,EACvB;AACE,QAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,QAAA,IAAA,CAAK,aAAA,GAAgB,IAAA;AAErB,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAA,CAAK,KAAK,WAAA,EAAa;AAAA,UACrB,UAAA;AAAA,UACA,KAAM,GAAA,IAAO;AAAA,SACd,CAAA;AAAA,MACH;AAAA,MAEA,MAAA,CAAO,UAAA,EAAY,OAAA,EAAS,KAAA,EAC5B;AACE,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,IAAA,CAAK,SAAA,uBAAgB,IAAA,EAAK;AAE1B,QAAA,IAAA,CAAK,MAAA,EAAO;AAEZ,QAAA,MAAA,CAAO,MAAM,cAAc,CAAA;AAE3B,QAAA,IAAA,CAAK,KAAK,OAAA,EAAS;AAAA,UACjB,UAAA;AAAA,UACA,SAAU,OAAA,IAAW,IAAA;AAAA,UACrB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,OAAA,CAAQ,UAAA,EAAY,OAAA,EAAS,KAAA,EAC7B;AACE,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAG7B,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,IAAA,CAAK,KAAK,SAAA,EAAW;AAAA,UACnB,UAAA;AAAA,UACA,SAAU,OAAA,IAAW,IAAA;AAAA,UACrB;AAAA,SACD,CAAA;AAED,QAAA,IAAA,CAAK,MAAA,EAAO;AAEZ,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,UAClB,UAAA;AAAA,UACA,SAAU,OAAA,IAAW,IAAA;AAAA,UACrB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,QAAQ,UAAA,EACR;AACE,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,IAAA,CAAK,oBAAA,EAAqB;AAE1B,QAAA,MAAA,CAAO,MAAM,aAAa,CAAA;AAE1B,QAAA,IAAA,CAAK,KAAK,MAAA,EAAQ;AAAA,UAChB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,UAAU,UAAA,EACV;AACE,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAA,CAAK,oBAAA,EAAqB;AAE1B,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,UAClB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,OAAA,CAAQ,EAAE,KAAA,EAAO,KAAA,EAAM,EACvB;AACE,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,IAAA,CAAK,oBAAA,EAAqB;AAE1B,QAAA,MAAA,CAAO,MAAM,cAAc,CAAA;AAE3B,QAAA,IAAA,CAAK,KAAK,OAAA,EAAS;AAAA,UACjB,KAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,SAAA,CAAU,EAAE,KAAA,EAAO,KAAA,EAAM,EACzB;AACE,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAA,CAAK,oBAAA,EAAqB;AAE1B,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,IAAA,CAAK,KAAK,SAAA,EAAW;AAAA,UACnB,KAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACjkHA,IAAA,kBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,4EAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,aAAA,GAAgB,qBAAA,EAAA;AACtB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AAEf,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,YAAY,CAAA;AAKtC,IAAA,IAAM,CAAA,GAAI;AAAA;AAAA,MAER,0BAAA,EAAkC,CAAA;AAAA,MAClC,yBAAA,EAAkC,CAAA;AAAA,MAClC,yBAAA,EAAkC,CAAA;AAAA,MAClC,2BAAA,EAAkC,CAAA;AAAA,MAClC,+BAAA,EAAkC,CAAA;AAAA,MAClC,mBAAA,EAAkC,CAAA;AAAA,MAClC,qBAAA,EAAkC,CAAA;AAAA,MAClC,qBAAA,EAAkC,CAAA;AAAA;AAAA,MAGlC,aAAA,EAAuB,CAAA;AAAA,MACvB,YAAA,EAAuB,CAAA;AAAA,MACvB,gBAAA,EAAuB,CAAA;AAAA,MACvB,UAAA,EAAuB,CAAA;AAAA,MACvB,oBAAA,EAAuB,CAAA;AAAA;AAAA,MAGvB,mBAAA,EAAsB;AAAA,KACxB;AAKA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,UAAA,SAAmBA,aAAAA,CAC1C;AAAA;AAAA;AAAA;AAAA,MAIE,WAAW,CAAA,GACX;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAgBA,WAAA,CAAY,EAAA,EAAI,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ;AAAA,QAAE,OAAA;AAAA,QAAS,WAAA;AAAA,QACpD,WAAA;AAAA,QAAa,MAAA;AAAA,QAAQ;AAAA,OAAa,EACpC;AACE,QAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAElB,QAAA,KAAA,EAAM;AAGN,QAAA,IAAI,CAAC,MAAA,EACL;AACE,UAAA,MAAM,IAAI,UAAU,sCAAsC,CAAA;AAAA,QAC5D;AAEA,QAAA,IAAI,CAAC,SAAA,EACL;AACE,UAAA,MAAM,IAAI,UAAU,yCAAyC,CAAA;AAAA,QAC/D;AAEA,QAAA,IAAI,CAAC,MAAA,EACL;AACE,UAAA,MAAM,IAAI,UAAU,sCAAsC,CAAA;AAAA,QAC5D;AAEA,QAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,KAAA,CAAM,SAAA,EAAW,OAAO,CAAA;AAErD,QAAA,IAAI,iBAAiB,EAAA,EACrB;AACE,UAAA,MAAM,IAAI,UAAU,4BAA4B,CAAA;AAAA,QAClD;AAEA,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AAEf,QAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,OAAO,CAAA,IAAK,WAAW,CAAA,EAC5C;AACE,UAAA,OAAA,GAAU,CAAA,CAAE,mBAAA;AAAA,QACd;AAEA,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAGhB,QAAA,IAAA,CAAK,aAAA,GAAgB,WAAA;AAGrB,QAAA,IAAA,CAAK,OAAA,GAAU,KAAA,CAAM,WAAA,CAAY,MAAM,CAAA;AAEvC,QAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,QAAA,EAClB;AACE,UAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,GAAW,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA;AAAA,QACjD;AAEA,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,GAAW,KAAA,CAAM,MAAA,EAAO;AACrC,QAAA,IAAA,CAAK,QAAQ,MAAA,GAAS,IAAA;AACtB,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,GAAU,KAAA,CAAM,iBAAA,CAAkB,EAAE,CAAA;AAGjD,QAAA,IAAI,IAAA,CAAK,OAAA,CAAQ,IAAA,KAAS,MAAA,EAC1B;AACE,UAAA,IAAA,CAAK,OAAA,CAAQ,OAAO,IAAA,CAAK,KAAA,CAAO,KAAK,MAAA,EAAO,GAAI,MAAS,CAAC,CAAA;AAAA,QAC5D;AAGA,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,UAAA;AAGhB,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAGf,QAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,QAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAG1B,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAEnB,QAAA,IAAA,CAAK,cAAc,YAAA,CAAa,KAAA;AAChC,QAAA,IAAA,CAAK,SAAA,GAAY,YAAA,CAAa,MAAA,IAAU,YAAA,CAAa,MAAA,CAAO,EAAA;AAE5D,QAAA,IAAI,aAAa,IAAA,CAAK,WAAA;AAEtB,QAAA,IAAI,KAAK,SAAA,EACT;AACE,UAAA,UAAA,IAAc,CAAA,IAAA,EAAO,KAAK,SAAS,CAAA,CAAA;AAAA,QACrC;AAEA,QAAA,IAAA,CAAK,QAAA,GAAW,KAAA,CAAM,UAAA,CAAW,YAAY,CAAA;AAC7C,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO;AAAA,UACnC,UAAU,UAAU,CAAA,CAAA;AAAA,UACpB,CAAA,SAAA,EAAY,KAAK,QAAQ,CAAA,CAAA;AAAA,UACzB,WAAW,MAAM,CAAA;AAAA,SAClB,CAAA;AAED,QAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,CAAC,WAAW,MAAA,CAAO,UAAA,CAAW,SAAS,CAAC,CAAA,EAChE;AACE,UAAA,MAAM,UAAU,CAAA,SAAA,EAAY,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,UAAU,CAAA,CAAA;AAExD,UAAA,IAAA,CAAK,QAAA,CAAS,KAAK,OAAO,CAAA;AAAA,QAC5B;AAEA,QAAA,IAAI,WAAA,EACJ;AACE,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAA;AAAA,QACnD;AAGA,QAAA,IAAA,CAAK,SAAS,EAAC;AAGf,QAAA,IAAA,CAAK,QAAQ,EAAC;AAAA,MAChB;AAAA;AAAA,MAGA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,KAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,EAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,EAAA,GAAK,IAAA;AAAA,MAC1C;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAK,KAAA,EACT;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,0BAA0B,CAAA;AAAA,MACpD;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,yBAAyB,CAAA;AAAA,MACnD;AAAA;AAAA;AAAA;AAAA,MAKA,eAAe,OAAA,EACf;AACE,QAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,EAC/B;AACE,UAAA,MAAA,CAAO,KAAK,6BAA6B,CAAA;AACzC,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAGA,QAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,WAAA,CAAY,OAAO,CAAA;AAEhD,QAAA,IAAI,CAAC,YAAA,EACL;AACE,UAAA,MAAA,CAAO,KAAK,sBAAsB,CAAA;AAClC,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,UAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,qBAAqB,CAAA;AAE7C,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,aAAa,YAAA,CAAa,KAAA;AAChC,QAAA,MAAM,QAAA,GAAW,YAAA,CAAa,MAAA,IAAU,YAAA,CAAa,MAAA,CAAO,EAAA;AAE5D,QAAA,IAAI,UAAA,KAAe,IAAA,CAAK,WAAA,IAAe,QAAA,KAAa,KAAK,SAAA,EACzD;AACE,UAAA,MAAA,CAAO,KAAK,0DAA0D,CAAA;AACtE,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,UAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,qBAAqB,CAAA;AAE7C,UAAA;AAAA,QACF;AAGA,QAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,WAAA,CAAY,oBAAoB,CAAA;AAE3D,QAAA,IAAI,CAAC,UAAA,EACL;AACE,UAAA,MAAA,CAAO,KAAK,mCAAmC,CAAA;AAC/C,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,UAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,qBAAqB,CAAA;AAE7C,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,SAAA,GAAY,IAAA,CAAK,uBAAA,CAAwB,UAAA,CAAW,KAAK,CAAA;AAE/D,QAAA,IAAI,cAAc,MAAA,EAClB;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,yCAAA,EAA4C,UAAA,CAAW,KAAK,CAAA,CAAE,CAAA;AAC1E,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,UAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,qBAAqB,CAAA;AAE7C,UAAA;AAAA,QACF;AACA,QAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,QAAA,MAAM,aAAa,IAAA,CAAK,MAAA;AAExB,QAAA,IAAI,UAAA,KAAe,CAAA,CAAE,gBAAA,IAAoB,SAAA,KAAc,EAAE,gBAAA,EACzD;AACE,UAAA,IAAA,CAAK,MAAA,GAAS,SAAA;AAEd,UAAA,IAAI,UAAA,CAAW,YAAY,MAAA,EAC3B;AACE,YAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,YAAA,MAAM,qCAAoB,IAAI,IAAA,EAAK,EAAE,OAAA,KAAa,OAAA,GAAU,GAAA;AAC5D,YAAA,MAAM,kBAAA,GAAqB,GAAA;AAG3B,YAAA,IAAI,IAAA,CAAK,kBAAA,GAAqB,iBAAA,GAAoB,kBAAA,EAClD;AACE,cAAA,MAAA,CAAO,MAAM,kCAAkC,CAAA;AAE/C,cAAA,IAAA,CAAK,mBAAmB,OAAO,CAAA;AAAA,YACjC;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,UAAA,KAAe,CAAA,CAAE,aAAA,IAAiB,SAAA,KAAc,EAAE,aAAA,EACtD;AACE,UAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,UAAA,IAAA,CAAK,KAAK,SAAS,CAAA;AAAA,QACrB,WACS,UAAA,KAAe,CAAA,CAAE,YAAA,IAAgB,SAAA,KAAc,EAAE,YAAA,EAC1D;AACE,UAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,UAAA,IAAA,CAAK,KAAK,QAAQ,CAAA;AAAA,QACpB;AAEA,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AAGrB,QAAA,MAAM,QAAA,GAAW,cAAc,CAAA,CAAE,gBAAA;AAGjC,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA;AAErD,UAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,UAAA,IAAA,CAAK,IAAA,CAAK,QAAA,EAAU,QAAA,EAAU,OAAA,EAAS,MAAM,YAAY,CAAA;AAAA,QAC3D;AAEA,QAAA,IAAI,QAAA,EACJ;AACE,UAAA,MAAM,SAAS,UAAA,CAAW,MAAA;AAC1B,UAAA,IAAI,WAAA,GAAc,MAAA;AAElB,UAAA,IAAI,WAAW,MAAA,IAAU,UAAA,CAAW,MAAA,CAAO,aAAa,MAAM,MAAA,EAC9D;AACE,YAAA,WAAA,GAAc,QAAA,CAAS,UAAA,CAAW,MAAA,CAAO,aAAa,CAAC,CAAA;AAAA,UACzD;AAEA,UAAA,IAAA,CAAK,gBAAA,CAAiB,CAAA,CAAE,qBAAA,EAAuB,MAAA,EAAQ,WAAW,CAAA;AAAA,QACpE;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,SAAA,CAAU,OAAO,IAAA,EACjB;AACE,QAAA,MAAA,CAAO,MAAM,aAAa,CAAA;AAE1B,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,UAAA,EACtB;AACE,UAAA,IAAA,CAAK,qBAAA,CAAsB,IAAA,EAAM,IAAA,CAAK,QAAQ,CAAA;AAAA,QAChD,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,wBAAA,CAAyB,IAAA,EAAM,IAAA,CAAK,QAAQ,CAAA;AAAA,QACnD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,SAAA,CAAU,OAAO,IAAA,EACjB;AACE,QAAA,MAAA,CAAO,MAAM,aAAa,CAAA;AAE1B,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,UAAA,EACtB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,MAAM,CAAA;AAAA,QACpD;AAGA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAGnB,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,GAAA,CAAI,CAAC,MAAA,KACnC;AACE,UAAA,OAAO,MAAA,CAAO,UAAA,CAAW,SAAS,CAAA,GAAI,YAAA,GAAe,MAAA;AAAA,QACvD,CAAC,CAAA;AAED,QAAA,IAAA,CAAK,wBAAA,CAAyB,MAAM,OAAO,CAAA;AAAA,MAC7C;AAAA;AAAA;AAAA;AAAA,MAKA,gBAAA,CAAiB,eAAA,EAAiB,MAAA,GAAS,MAAA,EAAW,aAAa,MAAA,EACnE;AAEE,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,gBAAA;AAGhB,QAAA,YAAA,CAAa,KAAK,cAAc,CAAA;AAEhC,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA,IAAA,CAAK,QAAQ,SAAA,EAAU;AACvB,UAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAAA,QACjB;AAEA,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA,uBAAA,EAA0B,eAAe,CAAA,CAAE,CAAA;AAExD,QAAA,IAAA,CAAK,IAAA,CAAK,YAAA,EAAc,eAAA,EAAiB,MAAA,EAAQ,UAAU,CAAA;AAAA,MAC7D;AAAA,MAEA,qBAAA,CAAsB,MAAM,OAAA,EAC5B;AACE,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,IAAI,CAAC,KAAK,aAAA,EACV;AACE,YAAA,MAAM,IAAI,UAAU,2BAA2B,CAAA;AAAA,UACjD;AAEA,UAAA,OAAA,GAAU,KAAA,CAAM,WAAW,OAAO,CAAA;AAClC,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,cAAA,EAAiB,IAAA,CAAK,aAAa,CAAA,CAAE,CAAA;AAAA,QACpD;AAEA,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,oBAAA;AAEhB,QAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAAW,eAAA;AAAA,UAAgB,OAAA,CAAQ,SAAA;AAAA,UACrD,IAAA,CAAK,GAAA,CAAI,eAAA,CAAgB,IAAA,CAAK,OAAO,CAAA;AAAA,UAAG,IAAA,CAAK,GAAA;AAAA,UAAK,IAAA,CAAK,OAAA;AAAA,UAAS,OAAA;AAAA,UAAS;AAAA,SAAI;AAE/E,QAAA,MAAM,cAAA,GAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,KAAK,OAAA,EAAS;AAAA,UAC1D,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,UACxB,CAAA;AAAA,UACA,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,UACxB,CAAA;AAAA,UACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,YAAA,IAAA,CAAK,0BAA0B,QAAQ,CAAA;AAAA,UACzC;AAAA,SACD,CAAA;AAED,QAAA,cAAA,CAAe,IAAA,EAAK;AAAA,MACtB;AAAA,MAEA,wBAAA,CAAyB,MAAM,OAAA,EAC/B;AACE,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,CAAC,KAAK,OAAA,EACV;AACE,UAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,UAAA,IAAA,CAAK,MAAA,CAAO,KAAK,EAAE,IAAA,EAAM,SAAS,KAAA,CAAM,UAAA,CAAW,OAAO,CAAA,EAAG,CAAA;AAE7D,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,IAAI,CAAC,KAAK,aAAA,EACV;AACE,YAAA,MAAM,IAAI,UAAU,2BAA2B,CAAA;AAAA,UACjD;AAEA,UAAA,OAAA,GAAU,KAAA,CAAM,WAAW,OAAO,CAAA;AAClC,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,cAAA,EAAiB,IAAA,CAAK,aAAa,CAAA,CAAE,CAAA;AAAA,QACpD;AAEA,QAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,OAAA,CAAQ,SAAA,EAAW;AAAA,UAC1C,IAAA;AAAA,UACA,YAAA,EAAgB,OAAA;AAAA,UAChB,aAAA,EAAgB;AAAA,YACd,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,YACxB,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,YACxB,CAAA;AAAA,YACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,cAAA,IAAA,CAAK,0BAA0B,QAAQ,CAAA;AAAA,YACzC,CAAA;AAAA,YACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,cAAA,IAAA,CAAK,0BAA0B,QAAQ,CAAA;AAAA,YACzC,CAAA;AAAA,YACA,aAAA,EAAgB,CAAC,QAAA,KACjB;AACE,cAAA,IAAA,CAAK,0BAA0B,QAAQ,CAAA;AAAA,YACzC;AAAA;AACF,SACD,CAAA;AAAA,MACH;AAAA,MAEA,0BAA0B,QAAA,EAC1B;AACE,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,QAAA,CAAS,WAAA,IAAe,GAAA,IAAO,QAAA,CAAS,cAAc,GAAA,EAC1D;AAEE,UAAA,IAAI,IAAA,CAAK,YAAY,IAAA,EACrB;AACE,YAAA,MAAM,MAAA,GAAS,IAAI,MAAA,CAAO,IAAA,EAAM,UAAU,KAAK,CAAA;AAE/C,YAAA,IAAI,OAAO,KAAA,EACX;AAEE,cAAA,MAAA,CAAO,IAAA,CAAK,OAAO,KAAK,CAAA;AACxB,cAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,2BAA2B,CAAA;AAEnD,cAAA;AAAA,YACF;AAEA,YAAA,IAAA,CAAK,OAAA,GAAU,MAAA;AAEf,YAAA,MAAA,CAAO,MAAM,iBAAiB,CAAA;AAE9B,YAAA,IAAA,CAAK,KAAK,UAAU,CAAA;AAGpB,YAAA,KAAA,MAAW,SAAA,IAAa,KAAK,MAAA,EAC7B;AACE,cAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,cAAA,IAAA,CAAK,wBAAA,CAAyB,SAAA,CAAU,IAAA,EAAM,SAAA,CAAU,OAAO,CAAA;AAAA,YACjE;AAAA,UACF;AAGA,UAAA,MAAM,aAAA,GAAgB,QAAA,CAAS,SAAA,CAAU,SAAS,CAAA;AAElD,UAAA,IAAI,OAAA,GAAU,SAAS,aAAa,CAAA;AAEpC,UAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,OAAO,CAAA,IAAK,WAAW,CAAA,EAC5C;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,CAAA,4DAAA,EAA+D,CAAA,CAAE,mBAAmB,CAAA,CAAE,CAAA;AAIlG,YAAA,OAAA,GAAU,CAAA,CAAE,mBAAA;AAAA,UACd;AAEA,UAAA,IAAI,UAAU,CAAA,EACd;AACE,YAAA,IAAA,CAAK,mBAAmB,OAAO,CAAA;AAAA,UACjC;AAAA,QACF,WACS,QAAA,CAAS,WAAA,KAAgB,GAAA,IAAO,QAAA,CAAS,gBAAgB,GAAA,EAClE;AACE,UAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,+BAA+B,CAAA;AAAA,QACzD,CAAA,MAAA,IACS,QAAA,CAAS,WAAA,IAAe,GAAA,EACjC;AACE,UAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,yBAAyB,CAAA;AAAA,QACnD;AAAA,MACF;AAAA,MAEA,mBAAmB,OAAA,EACnB;AAeE,QAAA,MAAM,UAAU,OAAA,IAAW,GAAA,GAAO,OAAA,GAAU,GAAA,GAAO,IAChD,IAAA,CAAK,KAAA,CAAA,CAAQ,OAAA,GAAU,CAAA,GAAK,MAAM,GAAA,GAAO,IAAA,CAAK,QAAQ,CAAA,GAAK,UAAU,GAAA,GAAQ,GAAA;AAEhF,QAAA,IAAA,CAAK,sCAAqB,IAAI,IAAA,EAAK,EAAE,OAAA,KAAa,OAAA,GAAU,GAAA;AAE5D,QAAA,MAAA,CAAO,MAAM,CAAA,+BAAA,EAAkC,IAAA,CAAK,MAAM,OAAA,GAAU,GAAI,CAAC,CAAA,IAAA,CAAM,CAAA;AAE/E,QAAA,YAAA,CAAa,KAAK,cAAc,CAAA;AAChC,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAW,MACjC;AACE,UAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,UAAA,IAAA,CAAK,wBAAA,CAAyB,IAAA,EAAM,IAAA,CAAK,QAAQ,CAAA;AAAA,QACnD,GAAG,OAAO,CAAA;AAAA,MACZ;AAAA,MAEA,wBAAwB,QAAA,EACxB;AACE,QAAA,QAAQ,QAAA;AACR,UACE,KAAK,SAAA;AAAW,YAAA,OAAO,CAAA,CAAE,aAAA;AAAA,UACzB,KAAK,QAAA;AAAU,YAAA,OAAO,CAAA,CAAE,YAAA;AAAA,UACxB,KAAK,YAAA;AAAc,YAAA,OAAO,CAAA,CAAE,gBAAA;AAAA,UAC5B,KAAK,MAAA;AAAQ,YAAA,OAAO,CAAA,CAAE,UAAA;AAAA,UACtB,KAAK,aAAA;AAAe,YAAA,OAAO,CAAA,CAAE,oBAAA;AAAA,UAC7B;AAAS,YAAA,OAAO,MAAA;AAAA;AAClB,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7mBA,IAAA,gBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,0EAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AAEf,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,UAAU,CAAA;AAKpC,IAAA,IAAM,CAAA,GAAI;AAAA;AAAA,MAER,uBAAA,EAA+B,CAAA;AAAA,MAC/B,sBAAA,EAA+B,CAAA;AAAA,MAC/B,sBAAA,EAA+B,CAAA;AAAA,MAC/B,4BAAA,EAA+B,CAAA;AAAA,MAC/B,iBAAA,EAA+B,CAAA;AAAA,MAC/B,oBAAA,EAA+B,CAAA;AAAA,MAC/B,oBAAA,EAA+B,CAAA;AAAA;AAAA,MAG/B,aAAA,EAAmB,CAAA;AAAA,MACnB,YAAA,EAAmB,CAAA;AAAA,MACnB,gBAAA,EAAmB,CAAA;AAAA;AAAA,MAGnB,mBAAA,EAAsB;AAAA,KACxB;AAKA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,QAAA,SAAiBA,aAAAA,CACxC;AAAA;AAAA;AAAA;AAAA,MAIE,WAAW,CAAA,GACX;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,OAAO,aAAA,CAAc,OAAA,EAAS,QAAA,EAC9B;AACE,QAAA,IACA;AACE,UAAA,QAAA,CAAS,eAAe,OAAO,CAAA;AAAA,QACjC,SACO,KAAA,EACP;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,kDAAA,EAAoD,KAAA,CAAM,OAAO,CAAA;AAE7E,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAEA,QAAA,QAAA,EAAS;AAAA,MACX;AAAA,MAEA,OAAO,eAAe,SAAA,EACtB;AACE,QAAA,IAAI,CAAC,SAAA,EACL;AACE,UAAA,MAAM,IAAI,UAAU,iDAAiD,CAAA;AAAA,QACvE;AACA,QAAA,IAAI,SAAA,CAAU,MAAA,KAAW,OAAA,CAAQ,SAAA,EACjC;AACE,UAAA,MAAM,IAAI,UAAU,sCAAsC,CAAA;AAAA,QAC5D;AACA,QAAA,IAAI,CAAC,SAAA,CAAU,SAAA,CAAU,SAAS,CAAA,EAClC;AACE,UAAA,MAAM,IAAI,UAAU,6CAA6C,CAAA;AAAA,QACnE;AACA,QAAA,IAAI,CAAC,SAAA,CAAU,SAAA,CAAU,OAAO,CAAA,EAChC;AACE,UAAA,MAAM,IAAI,UAAU,2CAA2C,CAAA;AAAA,QACjE;AACA,QAAA,MAAM,OAAA,GAAU,SAAA,CAAU,SAAA,CAAU,SAAS,CAAA;AAE7C,QAAA,IAAI,OAAA,EACJ;AACE,UAAA,MAAM,cAAA,GAAiB,SAAS,OAAO,CAAA;AAEvC,UAAA,IAAI,CAAC,KAAA,CAAM,SAAA,CAAU,cAAc,CAAA,IAAK,iBAAiB,CAAA,EACzD;AACE,YAAA,MAAM,IAAI,UAAU,mDAAmD,CAAA;AAAA,UACzE;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,WAAA,CAAY,EAAA,EAAI,SAAA,EAAW,WAAA,EAAa;AAAA,QACtC,YAAA;AAAA,QAAc,WAAA;AAAA,QAAa,OAAA;AAAA,QAAS;AAAA,OACtC,EACA;AACE,QAAA,MAAA,CAAO,MAAM,KAAK,CAAA;AAElB,QAAA,KAAA,EAAM;AAEN,QAAA,IAAI,CAAC,WAAA,EACL;AACE,UAAA,MAAM,IAAI,UAAU,2CAA2C,CAAA;AAAA,QACjE;AAEA,QAAA,QAAA,CAAS,eAAe,SAAS,CAAA;AAEjC,QAAA,MAAM,SAAA,GAAY,SAAA,CAAU,SAAA,CAAU,OAAO,CAAA;AAE7C,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,kBAAA,GAAqB,SAAA;AAC1B,QAAA,IAAA,CAAK,kBAAA,GAAqB,IAAA;AAC1B,QAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,QAAA,IAAA,CAAK,eAAA,GAAkB,kBAAkB,CAAA,CAAE,mBAAA;AAG3C,QAAA,IAAA,CAAK,MAAA,GAAS,OAAA,GAAU,CAAA,CAAE,aAAA,GAAgB,CAAA,CAAE,YAAA;AAE5C,QAAA,IAAA,CAAK,aAAA,GAAgB,WAAA;AACrB,QAAA,IAAA,CAAK,QAAA,GAAW,KAAA,CAAM,UAAA,CAAW,YAAY,CAAA;AAC7C,QAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,CAAA,OAAA,EAAU,SAAS,CAAA,CAAE,CAAA;AAGxC,QAAA,IAAA,CAAK,QAAA,GAAW,KAAK,QAAA,CAAS,IAAA,CAAK,CAAC,MAAA,KAAW,MAAA,CAAO,UAAA,CAAW,SAAS,CAAC,CAAA;AAC3E,QAAA,IAAI,CAAC,KAAK,QAAA,EACV;AACE,UAAA,IAAA,CAAK,WAAW,CAAA,SAAA,EAAY,IAAA,CAAK,GAAA,CAAI,QAAA,CAAS,UAAU,CAAA,CAAA;AAExD,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,IAAA,CAAK,QAAQ,CAAA;AAAA,QAClC;AAEA,QAAA,IAAI,WAAA,EACJ;AACE,UAAA,IAAA,CAAK,QAAA,CAAS,IAAA,CAAK,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAA;AAAA,QACnD;AAEA,QAAA,IAAA,CAAK,OAAA,GAAU,SAAA,CAAU,IAAA,CAAK,GAAA,CAAI,IAAA;AAClC,QAAA,SAAA,CAAU,MAAA,GAAS,MAAM,MAAA,EAAO;AAGhC,QAAA,IAAA,CAAK,QAAQ,EAAC;AAAA,MAChB;AAAA;AAAA,MAGA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,KAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,MAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,EAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,EAAA,GAAK,IAAA;AAAA,MAC1C;AAAA,MAEA,IAAI,IAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,KAAA;AAAA,MACd;AAAA,MAEA,IAAI,KAAK,KAAA,EACT;AACE,QAAA,IAAA,CAAK,KAAA,GAAQ,KAAA;AAAA,MACf;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,eAAe,OAAA,EACf;AACE,QAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,SAAA,EAC/B;AACE,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,YAAY,OAAO,CAAA;AAGxB,QAAA,IAAI,CAAC,KAAK,OAAA,EACV;AACE,UAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,CAAO,IAAA,EAAM,SAAS,KAAK,CAAA;AAAA,QAChD;AAEA,QAAA,OAAA,CAAQ,KAAA,CAAM,GAAA,EAAK,IAAA,EAAM,CAAE,CAAA,SAAA,EAAY,IAAA,CAAK,QAAQ,CAAA,CAAA,EAAI,CAAA,EAAG,IAAA,CAAK,QAAQ,CAAA,CAAG,CAAC,CAAA;AAE5E,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AACrB,QAAA,MAAM,YAAA,GAAe,OAAA,CAAQ,SAAA,CAAU,cAAc,CAAA;AACrD,QAAA,MAAM,cAAA,GAAiB,KAAK,QAAA,KAAa,CAAA;AAEzC,QAAA,IAAI,CAAC,cAAA,EACL;AACE,UAAA,IAAA,CAAK,gBAAA,EAAiB;AAAA,QACxB;AAEA,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAA,CAAK,IAAA,CAAK,WAAA,EAAa,cAAA,EAAgB,OAAA,EAAS,MAAM,YAAY,CAAA;AAElE,QAAA,IAAI,cAAA,EACJ;AACE,UAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,oBAAoB,CAAA;AAAA,QAC9C;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,KAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,SAAS,CAAA;AAEtB,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,MAAM,CAAA;AAAA,QACpD;AAEA,QAAA,IAAA,CAAK,cAAA,CAAe,KAAK,kBAAkB,CAAA;AAAA,MAC7C;AAAA;AAAA;AAAA;AAAA,MAKA,cAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,MAAM,CAAA;AAAA,QACpD;AAEA,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,aAAA,EACtB;AACE,UAAA,IAAA,CAAK,SAAS,CAAA,CAAE,YAAA;AAAA,QAClB;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,CAAO,OAAK,IAAA,EACZ;AACE,QAAA,MAAA,CAAO,MAAM,UAAU,CAAA;AAEvB,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,IAAA,CAAK,MAAM,CAAA;AAAA,QACpD;AAEA,QAAA,MAAM,OAAA,GAAU,IAAA,CAAK,KAAA,CAAA,CAAO,IAAA,CAAK,kBAAA,GAAA,qBAAyB,IAAA,EAAK,EAAE,OAAA,EAAQ,IAAK,GAAI,CAAA;AAGlF,QAAA,IAAI,WAAW,CAAA,EACf;AACE,UAAA,IAAI,CAAC,KAAK,cAAA,EACV;AACE,YAAA,MAAA,CAAO,MAAM,0BAA0B,CAAA;AAAA,UACzC;AAEA,UAAA,YAAA,CAAa,KAAK,cAAc,CAAA;AAEhC,UAAA,IAAA,CAAK,SAAA,CAAU,MAAM,SAAS,CAAA;AAAA,QAChC,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,YAAY,CAAE,CAAA,SAAA,EAAY,OAAO,CAAA,CAAG,GAAG,IAAI,CAAA;AAAA,QAClD;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,UAAU,IAAA,GAAO,IAAA,EAAM,MAAA,GAAS,IAAA,EAAM,aAAa,IAAA,EACnD;AACE,QAAA,MAAA,CAAO,MAAM,aAAa,CAAA;AAE1B,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,sBAAsB,EAAC;AAE7B,QAAA,IAAI,MAAA,EACJ;AACE,UAAA,mBAAA,CAAoB,IAAA,CAAK,CAAA,QAAA,EAAW,MAAM,CAAA,CAAE,CAAA;AAAA,QAC9C;AAEA,QAAA,IAAI,eAAe,IAAA,EACnB;AACE,UAAA,mBAAA,CAAoB,IAAA,CAAK,CAAA,aAAA,EAAgB,UAAU,CAAA,CAAE,CAAA;AAAA,QACvD;AAEA,QAAA,IAAA,CAAK,WAAA,CAAY,mBAAA,EAAqB,IAAA,EAAM,IAAA,EAAM,YAAY,CAAA;AAE9D,QAAA,IAAA,CAAK,iBAAiB,MAAA,KAAW,SAAA,GAAY,CAAA,CAAE,oBAAA,GAAuB,EAAE,iBAAiB,CAAA;AAAA,MAC3F;AAAA;AAAA;AAAA;AAAA,MAMA,iBAAiB,gBAAA,EACjB;AACE,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,gBAAA;AAEhB,QAAA,YAAA,CAAa,KAAK,cAAc,CAAA;AAChC,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA,IAAA,CAAK,QAAQ,SAAA,EAAU;AACvB,UAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AAAA,QACjB;AACA,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA,uBAAA,EAA0B,gBAAgB,CAAA,CAAE,CAAA;AAEzD,QAAA,IAAA,CAAK,IAAA,CAAK,cAAc,gBAAgB,CAAA;AAAA,MAC1C;AAAA,MAEA,YAAY,OAAA,EACZ;AACE,QAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAA,EAC/B;AACE,UAAA,IAAA,CAAK,QAAA,GAAW,QAAA,CAAS,OAAA,CAAQ,SAAA,CAAU,SAAS,CAAC,CAAA;AAAA,QACvD,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,WAAW,IAAA,CAAK,eAAA;AACrB,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,iDAAA,EAAoD,IAAA,CAAK,QAAQ,CAAA,CAAE,CAAA;AAAA,QAClF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,YAAY,mBAAA,EAAqB,IAAA,GAAK,MAAM,YAAA,GAAa,IAAA,EAAM,QAAM,IAAA,EACrE;AAEE,QAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,UAAA,MAAA,CAAO,KAAK,2BAA2B,CAAA;AAEvC,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,SAAA,GAAY,CAAA,oBAAA,EAAuB,KAAA,IAAS,IAAA,CAAK,aAAa,CAAA,CAAA;AAElE,QAAA,KAAA,MAAW,SAAS,mBAAA,EACpB;AACE,UAAA,SAAA,IAAa,KAAA;AAAA,QACf;AAEA,QAAA,IAAI,OAAA,GAAU,KAAA,CAAM,UAAA,CAAW,IAAA,CAAK,QAAQ,CAAA;AAE5C,QAAA,OAAA,CAAQ,KAAK,SAAS,CAAA;AAEtB,QAAA,IAAI,YAAA,EACJ;AACE,UAAA,OAAA,GAAU,OAAA,CAAQ,OAAO,YAAY,CAAA;AAAA,QACvC;AAEA,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,cAAA,EAAiB,IAAA,CAAK,aAAa,CAAA,CAAE,CAAA;AAAA,QACpD;AAEA,QAAA,IAAA,CAAK,OAAA,CAAQ,WAAA,CAAY,OAAA,CAAQ,MAAA,EAAQ;AAAA,UACvC,IAAA;AAAA,UACA,YAAA,EAAgB,OAAA;AAAA,UAChB,aAAA,EAAgB;AAAA,YACd,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,uBAAuB,CAAA;AAAA,YACjD,CAAA;AAAA,YACA,kBAAmB,MACnB;AACE,cAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,sBAAsB,CAAA;AAAA,YAChD,CAAA;AAAA,YACA,eAAA,EAAkB,CAAC,QAAA,KACnB;AACE,cAAA,IAAI,QAAA,CAAS,WAAA,KAAgB,GAAA,IAAO,QAAA,CAAS,gBAAgB,GAAA,EAC7D;AACE,gBAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,4BAA4B,CAAA;AAAA,cACtD,CAAA,MAEA;AACE,gBAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,sBAAsB,CAAA;AAAA,cAChD;AAAA,YACF,CAAA;AAAA,YACA,eAAgB,MAChB;AACE,cAAA,IAAA,CAAK,gBAAA,CAAiB,EAAE,sBAAsB,CAAA;AAAA,YAChD;AAAA;AACF,SACD,CAAA;AAAA,MACH;AAAA,MAEA,gBAAA,GACA;AACE,QAAA,IAAA,CAAK,sCAAqB,IAAI,IAAA,IAAO,OAAA,EAAQ,GAAK,KAAK,QAAA,GAAW,GAAA;AAElE,QAAA,YAAA,CAAa,KAAK,cAAc,CAAA;AAChC,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAW,MACjC;AACE,UAAA,IAAI,IAAA,CAAK,MAAA,KAAW,CAAA,CAAE,gBAAA,EACtB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAG7B,UAAA,IAAA,CAAK,KAAK,SAAS,CAAA;AAGnB,UAAA,IAAA,CAAK,SAAA,CAAU,MAAM,SAAS,CAAA;AAAA,QAChC,CAAA,EAAG,IAAA,CAAK,QAAA,GAAW,GAAI,CAAA;AAAA,MACzB;AAAA,MAEA,WAAA,GACA;AACE,QAAA,QAAQ,KAAK,MAAA;AACb,UACE,KAAK,CAAA,CAAE,aAAA;AAAe,YAAA,OAAO,SAAA;AAAA,UAC7B,KAAK,CAAA,CAAE,YAAA;AAAc,YAAA,OAAO,QAAA;AAAA,UAC5B,KAAK,CAAA,CAAE,gBAAA;AAAkB,YAAA,OAAO,YAAA;AAAA,UAChC;AAAS,YAAA,MAAM,IAAI,UAAU,mBAAmB,CAAA;AAAA;AAClD,MACF;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACpdA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,aAAA,GAAgB,qBAAA,EAAA;AACtB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AAEZ,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,SAAS,CAAA;AAEnC,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,OAAA,SAAgBA,aAAAA,CACvC;AAAA,MACE,YAAY,EAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAEf,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,QAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA;AAGxB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAGnB,QAAA,IAAA,CAAK,QAAQ,EAAC;AAAA,MAChB;AAAA,MAEA,IAAI,SAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,UAAA;AAAA,MACd;AAAA,MAEA,IAAI,cAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,eAAA;AAAA,MACd;AAAA,MAEA,IAAI,eAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,MACd;AAAA,MAEA,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,OAAA,GAAU,EAAC,EAC9B;AACE,QAAA,MAAM,cAAA,GAAiB,MAAA;AAEvB,QAAA,IAAI,MAAA,KAAW,MAAA,IAAa,IAAA,KAAS,MAAA,EACrC;AACE,UAAA,MAAM,IAAI,UAAU,sBAAsB,CAAA;AAAA,QAC5C;AAGA,QAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,eAAA,CAAgB,MAAM,CAAA;AACxC,QAAA,IAAI,CAAC,MAAA,EACL;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,gBAAA,EAAmB,cAAc,CAAA,CAAE,CAAA;AAAA,QACzD;AAGA,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAC7D,QAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,YAAA;AAE3C,QAAA,MAAM,gBAAgB,EAAC;AAEvB,QAAA,IAAI,QAAQ,YAAA,EACZ;AACE,UAAA,aAAA,CAAc,QAAA,GAAW,IAAI,GAAA,CAAI,KAAA,EAAO,OAAA,CAAQ,cAAc,IAAA,CAAK,GAAA,CAAI,aAAA,CAAc,GAAA,CAAI,IAAI,CAAA;AAE7F,UAAA,YAAA,CAAa,IAAA,CAAK,yBAAyB,IAAA,CAAK,GAAA,CAAI,cAAc,GAAA,CAAI,QAAA,EAAU,CAAA,CAAE,CAAA;AAAA,QACpF;AAEA,QAAA,IAAI,QAAQ,eAAA,EACZ;AACE,UAAA,aAAA,CAAc,oBAAoB,OAAA,CAAQ,eAAA;AAAA,QAC5C;AAGA,QAAA,KAAA,MAAW,SAAS,aAAA,EACpB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA,EAC7D;AACE,YAAA,IAAA,CAAK,EAAA,CAAG,KAAA,EAAO,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,UACrC;AAAA,QACF;AAEA,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAA;AAEhD,QAAA,IAAA,CAAK,QAAA,GAAW,IAAI,UAAA,CAAW,eAAA;AAAA,UAC7B,OAAA,CAAQ,OAAA;AAAA,UAAS,MAAA;AAAA,UAAQ,IAAA,CAAK,GAAA;AAAA,UAAK,aAAA;AAAA,UAAe;AAAA,SAAY;AAEhE,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,IAAA,CAAK,SAAS,IAAA,GAAO,IAAA;AAAA,QACvB;AAEA,QAAA,MAAM,iBAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,GAAA,EAAK,KAAK,QAAA,EAAU;AAAA,UAChE,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,iBAAA,EAAkB;AAAA,UACzB,CAAA;AAAA,UACA,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,iBAAA,EAAkB;AAAA,UACzB,CAAA;AAAA,UACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,YAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA;AAAA,UAChC;AAAA,SACD,CAAA;AAED,QAAA,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,IAAA,CAAK,QAAQ,CAAA;AAEvC,QAAA,cAAA,CAAe,IAAA,EAAK;AAAA,MACtB;AAAA,MAEA,cAAc,OAAA,EACd;AACE,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAEhB,QAAA,IAAA,CAAK,WAAA,CAAY,UAAU,OAAO,CAAA;AAGlC,QAAA,IAAI,CAAC,KAAK,WAAA,EACV;AACE,UAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,QACnB;AAEA,QAAA,IAAA,CAAK,MAAA,EAAO;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,CAAO,OAAA,GAAU,EAAC,EAClB;AACE,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AAErB,QAAA,IAAI,IAAA,CAAK,eAAe,UAAA,EACxB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,6CAA6C,CAAA;AAAA,QACtF;AAEA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,QACpD;AAEA,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,GAAA,EAAK,IAAA,EAAM,cAAc,IAAI,CAAA;AAAA,MACnD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,CAAO,OAAA,GAAU,EAAC,EAClB;AACE,QAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,GAAA;AAC3C,QAAA,MAAM,gBAAgB,OAAA,CAAQ,aAAA;AAC9B,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AAErB,QAAA,IAAI,IAAA,CAAK,eAAe,UAAA,EACxB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,6CAA6C,CAAA;AAAA,QACtF;AAEA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,QACpD;AAEA,QAAA,IAAI,WAAA,GAAc,GAAA,IAAO,WAAA,IAAe,GAAA,EACxC;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,WAAW,CAAA,CAAE,CAAA;AAAA,QAC3D;AAEA,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,WAAA,EAAa,aAAA,EAAe,cAAc,IAAI,CAAA;AAAA,MACpE;AAAA,MAEA,iBAAiB,QAAA,EACjB;AACE,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA;AAAA,QACF;AACA,QAAA,QAAQ,IAAA;AACR,UACE,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA;AAE1C,YAAA;AAAA,UAEF,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA;AAC1C,YAAA,IAAA,CAAK,UAAA,CAAW,UAAU,QAAQ,CAAA;AAClC,YAAA;AAAA,UAEF,SACA;AACE,YAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,WAAW,CAAA;AAEtD,YAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,QAAA,EAAU,KAAK,CAAA;AACtC,YAAA;AAAA,UACF;AAAA;AACF,MACF;AAAA,MAEA,iBAAA,GACA;AACE,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,eAAe,CAAA;AAAA,MAC7D;AAAA,MAEA,iBAAA,GACA;AACE,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,gBAAgB,CAAA;AAAA,MAC9D;AAAA,MAEA,MAAA,GACA;AACE,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,GAAA,CAAI,eAAe,IAAI,CAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAMA,WAAA,CAAY,YAAY,OAAA,EACxB;AACE,QAAA,IAAI,eAAe,QAAA,EACnB;AACE,UAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,UAAA,IAAA,CAAK,kBAAkB,OAAA,CAAQ,EAAA;AAC/B,UAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,IAAA;AAAA,QAClC,CAAA,MAAA,IACS,eAAe,OAAA,EACxB;AACE,UAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,UAAA,IAAA,CAAK,kBAAkB,OAAA,CAAQ,IAAA;AAC/B,UAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,EAAA;AAAA,QAClC;AAEA,QAAA,IAAA,CAAK,GAAA,CAAI,WAAW,IAAA,EAAM;AAAA,UACxB,UAAA;AAAA,UACA,OAAA,EAAU,IAAA;AAAA,UACV;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,OAAA,CAAQ,UAAA,EAAY,QAAA,EAAU,KAAA,EAC9B;AACE,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,IAAA,CAAK,MAAA,EAAO;AAEZ,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,UAClB,UAAA;AAAA,UACA,UAAW,QAAA,IAAY,IAAA;AAAA,UACvB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,UAAA,CAAW,YAAY,QAAA,EACvB;AACE,QAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,QAAA,IAAA,CAAK,MAAA,EAAO;AAEZ,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAA,CAAK,KAAK,WAAA,EAAa;AAAA,UACrB,UAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtSA,IAAA,eAAA,GAAA,UAAA,CAAA;AAAA,EAAA,yEAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,aAAA,GAAgB,qBAAA,EAAA;AACtB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AAEnB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,SAAS,CAAA;AAEnC,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,OAAA,SAAgBA,aAAAA,CACvC;AAAA,MACE,YAAY,EAAA,EACZ;AACE,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,GAAA,GAAM,EAAA;AACX,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,IAAA,CAAK,OAAA,GAAU,KAAA;AAEf,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,QAAA,IAAA,CAAK,gBAAA,GAAmB,IAAA;AAGxB,QAAA,IAAA,CAAK,WAAA,GAAc,KAAA;AAGnB,QAAA,IAAA,CAAK,QAAQ,EAAC;AAAA,MAChB;AAAA,MAEA,IAAI,SAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,UAAA;AAAA,MACd;AAAA,MAEA,IAAI,cAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,eAAA;AAAA,MACd;AAAA,MAEA,IAAI,eAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,MACd;AAAA,MAEA,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,OAAA,GAAU,EAAC,EAC9B;AACE,QAAA,MAAM,cAAA,GAAiB,MAAA;AAEvB,QAAA,IAAI,WAAW,MAAA,EACf;AACE,UAAA,MAAM,IAAI,UAAU,kCAAkC,CAAA;AAAA,QACxD;AAGA,QAAA,MAAA,GAAS,IAAA,CAAK,GAAA,CAAI,eAAA,CAAgB,MAAM,CAAA;AACxC,QAAA,IAAI,CAAC,MAAA,EACL;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,gBAAA,EAAmB,cAAc,CAAA,CAAE,CAAA;AAAA,QACzD;AAGA,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,aAAA,GAAgB,KAAA,CAAM,WAAA,CAAY,OAAA,CAAQ,aAAa,CAAA;AAC7D,QAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,iBAAA;AAG3C,QAAA,KAAA,MAAW,SAAS,aAAA,EACpB;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,aAAA,EAAe,KAAK,CAAA,EAC7D;AACE,YAAA,IAAA,CAAK,EAAA,CAAG,KAAA,EAAO,aAAA,CAAc,KAAK,CAAC,CAAA;AAAA,UACrC;AAAA,QACF;AAEA,QAAA,YAAA,CAAa,IAAA,CAAK,CAAA,cAAA,EAAiB,WAAW,CAAA,CAAE,CAAA;AAEhD,QAAA,IAAA,CAAK,QAAA,GAAW,IAAI,UAAA,CAAW,eAAA;AAAA,UAC7B,OAAA,CAAQ,OAAA;AAAA,UAAS,MAAA;AAAA,UAAQ,IAAA,CAAK,GAAA;AAAA,UAAK,IAAA;AAAA,UAAM;AAAA,SAAY;AAEvD,QAAA,IAAI,IAAA,EACJ;AACE,UAAA,IAAA,CAAK,SAAS,IAAA,GAAO,IAAA;AAAA,QACvB;AAEA,QAAA,MAAM,iBAAiB,IAAI,aAAA,CAAc,IAAA,CAAK,GAAA,EAAK,KAAK,QAAA,EAAU;AAAA,UAChE,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,iBAAA,EAAkB;AAAA,UACzB,CAAA;AAAA,UACA,kBAAmB,MACnB;AACE,YAAA,IAAA,CAAK,iBAAA,EAAkB;AAAA,UACzB,CAAA;AAAA,UACA,iBAAA,EAAoB,CAAC,QAAA,KACrB;AACE,YAAA,IAAA,CAAK,iBAAiB,QAAQ,CAAA;AAAA,UAChC;AAAA,SACD,CAAA;AAED,QAAA,IAAA,CAAK,WAAA,CAAY,OAAA,EAAS,IAAA,CAAK,QAAQ,CAAA;AAEvC,QAAA,cAAA,CAAe,IAAA,EAAK;AAAA,MACtB;AAAA,MAEA,cAAc,OAAA,EACd;AACE,QAAA,IAAA,CAAK,QAAA,GAAW,OAAA;AAEhB,QAAA,IAAA,CAAK,WAAA,CAAY,UAAU,OAAO,CAAA;AAGlC,QAAA,IAAI,CAAC,KAAK,WAAA,EACV;AACE,UAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,UAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,QACnB;AAEA,QAAA,IAAA,CAAK,MAAA,EAAO;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,CAAO,OAAA,GAAU,EAAC,EAClB;AACE,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AAErB,QAAA,IAAI,IAAA,CAAK,eAAe,UAAA,EACxB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,6CAA6C,CAAA;AAAA,QACtF;AAEA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,QACpD;AAEA,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,GAAA,EAAK,IAAA,EAAM,cAAc,IAAI,CAAA;AAAA,MACnD;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,MAAA,CAAO,OAAA,GAAU,EAAC,EAClB;AACE,QAAA,MAAM,WAAA,GAAc,QAAQ,WAAA,IAAe,GAAA;AAC3C,QAAA,MAAM,gBAAgB,OAAA,CAAQ,aAAA;AAC9B,QAAA,MAAM,YAAA,GAAe,KAAA,CAAM,UAAA,CAAW,OAAA,CAAQ,YAAY,CAAA;AAC1D,QAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AAErB,QAAA,IAAI,IAAA,CAAK,eAAe,UAAA,EACxB;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,iBAAA,CAAkB,6CAA6C,CAAA;AAAA,QACtF;AAEA,QAAA,IAAI,KAAK,WAAA,EACT;AACE,UAAA,MAAM,IAAI,MAAM,kCAAkC,CAAA;AAAA,QACpD;AAEA,QAAA,IAAI,WAAA,GAAc,GAAA,IAAO,WAAA,IAAe,GAAA,EACxC;AACE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,qBAAA,EAAwB,WAAW,CAAA,CAAE,CAAA;AAAA,QAC3D;AAEA,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,QAAA,IAAA,CAAK,QAAA,CAAS,KAAA,CAAM,WAAA,EAAa,aAAA,EAAe,cAAc,IAAI,CAAA;AAAA,MACpE;AAAA,MAEA,iBAAiB,QAAA,EACjB;AACE,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA;AAAA,QACF;AACA,QAAA,QAAQ,IAAA;AACR,UACE,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA;AAE1C,YAAA;AAAA,UAEF,KAAK,aAAA,CAAc,IAAA,CAAK,QAAA,CAAS,WAAW,CAAA;AAC1C,YAAA,IAAA,CAAK,UAAA,CAAW,UAAU,QAAQ,CAAA;AAClC,YAAA;AAAA,UAEF,SACA;AACE,YAAA,MAAM,KAAA,GAAQ,KAAA,CAAM,aAAA,CAAc,QAAA,CAAS,WAAW,CAAA;AAEtD,YAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,QAAA,EAAU,KAAK,CAAA;AACtC,YAAA;AAAA,UACF;AAAA;AACF,MACF;AAAA,MAEA,iBAAA,GACA;AACE,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,eAAe,CAAA;AAAA,MAC7D;AAAA,MAEA,iBAAA,GACA;AACE,QAAA,IAAI,KAAK,OAAA,EACT;AACE,UAAA;AAAA,QACF;AACA,QAAA,IAAA,CAAK,OAAA,CAAQ,QAAA,EAAU,IAAA,EAAM,OAAA,CAAQ,OAAO,gBAAgB,CAAA;AAAA,MAC9D;AAAA,MAEA,MAAA,GACA;AACE,QAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,QAAA,IAAA,CAAK,GAAA,CAAI,eAAe,IAAI,CAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAMA,WAAA,CAAY,YAAY,OAAA,EACxB;AACE,QAAA,IAAI,eAAe,QAAA,EACnB;AACE,UAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,UAAA,IAAA,CAAK,kBAAkB,OAAA,CAAQ,EAAA;AAC/B,UAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,IAAA;AAAA,QAClC,CAAA,MAAA,IACS,eAAe,OAAA,EACxB;AACE,UAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAClB,UAAA,IAAA,CAAK,kBAAkB,OAAA,CAAQ,IAAA;AAC/B,UAAA,IAAA,CAAK,mBAAmB,OAAA,CAAQ,EAAA;AAAA,QAClC;AAEA,QAAA,IAAA,CAAK,GAAA,CAAI,WAAW,IAAA,EAAM;AAAA,UACxB,UAAA;AAAA,UACA,OAAA,EAAU,IAAA;AAAA,UACV;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,OAAA,CAAQ,UAAA,EAAY,QAAA,EAAU,KAAA,EAC9B;AACE,QAAA,MAAA,CAAO,MAAM,gBAAgB,CAAA;AAE7B,QAAA,IAAA,CAAK,MAAA,EAAO;AAEZ,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,IAAA,CAAK,KAAK,QAAA,EAAU;AAAA,UAClB,UAAA;AAAA,UACA,UAAW,QAAA,IAAY,IAAA;AAAA,UACvB;AAAA,SACD,CAAA;AAAA,MACH;AAAA,MAEA,UAAA,CAAW,YAAY,QAAA,EACvB;AACE,QAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,QAAA,IAAA,CAAK,MAAA,EAAO;AAEZ,QAAA,MAAA,CAAO,MAAM,kBAAkB,CAAA;AAE/B,QAAA,IAAA,CAAK,KAAK,WAAA,EAAa;AAAA,UACrB,UAAA;AAAA,UACA;AAAA,SACD,CAAA;AAAA,MACH;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACvRA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAZ,SAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAEhB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,QAAQ,CAAA;AAqBlC,IAAAA,SAAA,CAAQ,QAAA,GAAW,CAAC,MAAA,KACpB;AAEE,MAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA,EACxB;AACE,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,IAAI,OAAO,WAAW,WAAA,EACtB;AACE,QAAA,MAAA,CAAO,KAAK,iCAAiC,CAAA;AAE7C,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,IACA;AACE,QAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,GAAG,CAAA,EAC9B;AACE,UAAA,MAAA,CAAO,KAAK,8CAA8C,CAAA;AAC1D,UAAA,MAAM,IAAI,MAAM,8CAA8C,CAAA;AAAA,QAChE;AAEA,QAAA,IAAI,CAAC,KAAA,CAAM,QAAA,CAAS,MAAA,CAAO,aAAa,CAAA,EACxC;AACE,UAAA,MAAA,CAAO,KAAK,wDAAwD,CAAA;AACpE,UAAA,MAAM,IAAI,MAAM,wDAAwD,CAAA;AAAA,QAC1E;AAEA,QAAA,IAAI,QAAQ,KAAA,CAAM,MAAA,CAAO,OAAA,EAAS,SAAS,MAAM,CAAA,CAAA,EACjD;AACE,UAAA,MAAA,CAAO,KAAK,kDAAkD,CAAA;AAC9D,UAAA,MAAM,IAAI,MAAM,kDAAkD,CAAA;AAAA,QACpE;AAAA,MACF,SAEO,KAAA,EACP;AACE,QAAA,OAAO,KAAA;AAAA,MACT;AAGA,MAAA,IACA;AACE,QAAA,CAAE,WAAW,YAAA,EAAc,MAAO,CAAA,CAAE,OAAA,CAAQ,CAAC,MAAA,KAC7C;AACE,UAAA,IAAI,CAAC,KAAA,CAAM,UAAA,CAAW,MAAA,CAAO,MAAM,CAAC,CAAA,EACpC;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,CAAA,wCAAA,EAA2C,MAAM,CAAA,CAAE,CAAA;AAC/D,YAAA,MAAM,IAAI,KAAA,CAAM,CAAA,wCAAA,EAA2C,MAAM,CAAA,CAAE,CAAA;AAAA,UACrE;AAAA,QACF,CAAC,CAAA;AAAA,MACH,SAEO,KAAA,EACP;AACE,QAAA,OAAO,KAAA;AAAA,MACT;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtFA,IAAA,iBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,2EAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAEhB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,WAAW,CAAA;AAKrC,IAAA,IAAM,CAAA,GAAI;AAAA;AAAA,MAER,gBAAA,EAAsB,CAAA;AAAA,MACtB,iBAAA,EAAsB,CAAA;AAAA,MACtB,mBAAA,EAAsB,CAAA;AAAA;AAAA,MAGtB,mBAAA,EAAsB,CAAA;AAAA,MACtB,mBAAA,EAAsB,CAAA;AAAA;AAAA,MAGtB,gBAAA,EAAmB;AAAA;AAAA,QAEjB,cAAe,OAAA,CAAQ,gCAAA;AAAA;AAAA,QAEvB,cAAe,OAAA,CAAQ;AAAA;AACzB,KACF;AAQA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,SAAA,CACvB;AAAA,MACE,WAAA,CAAY,OAAA,EAAS,gBAAA,GAAmB,CAAA,CAAE,gBAAA,EAC1C;AACE,QAAA,MAAA,CAAO,MAAM,OAAO,CAAA;AAEpB,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,mBAAA;AAGhB,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAGd,QAAA,IAAA,CAAK,UAAU,EAAC;AAEhB,QAAA,IAAA,CAAK,gBAAA,GAAmB,gBAAA;AACxB,QAAA,IAAA,CAAK,gBAAA,GAAmB,CAAA;AACxB,QAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AAEtB,QAAA,IAAA,CAAK,eAAA,GAAkB,KAAA;AAIvB,QAAA,IACA;AACE,UAAA,IAAA,CAAK,WAAA,GAAc,IAAI,WAAA,CAAY,MAAM,CAAA;AAAA,QAC3C,SACO,KAAA,EACP;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,wBAAA,EAA2B,KAAK,CAAA,CAAE,CAAA;AAAA,QAChD;AAEA,QAAA,IAAI,OAAO,YAAY,WAAA,EACvB;AACE,UAAA,MAAM,IAAI,UAAU,gDACiC,CAAA;AAAA,QACvD;AAEA,QAAA,IAAI,EAAE,mBAAmB,KAAA,CAAA,EACzB;AACE,UAAA,OAAA,GAAU,CAAE,OAAQ,CAAA;AAAA,QACtB;AAEA,QAAA,OAAA,CAAQ,OAAA,CAAQ,SAAS,MAAA,EACzB;AACE,UAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,MAAM,CAAA,EAClC;AACE,YAAA,MAAM,IAAI,UAAU,mDACoC,CAAA;AAAA,UAC1D;AAEA,UAAA,IAAI,OAAO,MAAA,IAAU,CAAC,MAAA,CAAO,MAAA,CAAO,MAAM,CAAA,EAC1C;AACE,YAAA,MAAM,IAAI,UAAU,sDACuC,CAAA;AAAA,UAC7D;AAEA,UAAA,IAAA,CAAK,QAAQ,IAAA,CAAK;AAAA,YAChB,QAAS,MAAA,CAAO,MAAA;AAAA,YAChB,MAAA,EAAS,OAAO,MAAA,IAAU,CAAA;AAAA,YAC1B,QAAS,CAAA,CAAE;AAAA,WACZ,CAAA;AAAA,QACH,GAAG,IAAI,CAAA;AAGP,QAAA,IAAA,CAAK,UAAA,EAAW;AAAA,MAClB;AAAA;AAAA;AAAA;AAAA,MAMA,IAAI,aAAA,GACJ;AACE,QAAA,OAAO,KAAK,MAAA,CAAO,aAAA;AAAA,MACrB;AAAA,MAEA,IAAI,GAAA,GACJ;AACE,QAAA,OAAO,KAAK,MAAA,CAAO,GAAA;AAAA,MACrB;AAAA,MAEA,IAAI,OAAA,GACJ;AACE,QAAA,OAAO,KAAK,MAAA,CAAO,OAAA;AAAA,MACrB;AAAA,MAEA,OAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,WAAW,CAAA;AAExB,QAAA,IAAI,IAAA,CAAK,aAAY,EACrB;AACE,UAAA,MAAA,CAAO,MAAM,gCAAgC,CAAA;AAE7C,UAAA;AAAA,QACF,CAAA,MAAA,IACS,IAAA,CAAK,YAAA,EAAa,EAC3B;AACE,UAAA,MAAA,CAAO,MAAM,yBAAyB,CAAA;AAEtC,UAAA;AAAA,QACF;AAEA,QAAA,IAAA,CAAK,eAAA,GAAkB,KAAA;AACvB,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,iBAAA;AAChB,QAAA,IAAA,CAAK,YAAA,CAAa,EAAE,MAAA,EAAQ,IAAA,CAAK,QAAQ,QAAA,EAAU,IAAA,CAAK,kBAAkB,CAAA;AAE1E,QAAA,IAAI,CAAC,KAAK,eAAA,EACV;AAEE,UAAA,IAAA,CAAK,MAAA,CAAO,SAAA,GAAY,IAAA,CAAK,UAAA,CAAW,KAAK,IAAI,CAAA;AACjD,UAAA,IAAA,CAAK,MAAA,CAAO,YAAA,GAAe,IAAA,CAAK,aAAA,CAAc,KAAK,IAAI,CAAA;AACvD,UAAA,IAAA,CAAK,MAAA,CAAO,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,KAAK,IAAI,CAAA;AAE3C,UAAA,IAAA,CAAK,OAAO,OAAA,EAAQ;AAAA,QACtB;AAEA,QAAA;AAAA,MACF;AAAA,MAEA,UAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,SAAS,CAAA;AAEtB,QAAA,IAAA,CAAK,eAAA,GAAkB,IAAA;AACvB,QAAA,IAAA,CAAK,gBAAA,GAAmB,CAAA;AACxB,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,mBAAA;AAGhB,QAAA,IAAI,IAAA,CAAK,mBAAmB,IAAA,EAC5B;AACE,UAAA,YAAA,CAAa,KAAK,cAAc,CAAA;AAChC,UAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AAAA,QACxB;AAGA,QAAA,IAAA,CAAK,MAAA,CAAO,YAAY,MAAM;AAAA,QAAC,CAAA;AAC/B,QAAA,IAAA,CAAK,MAAA,CAAO,eAAe,MAAM;AAAA,QAAC,CAAA;AAClC,QAAA,IAAA,CAAK,MAAA,CAAO,SAAS,MAAM;AAAA,QAAC,CAAA;AAE5B,QAAA,IAAA,CAAK,OAAO,UAAA,EAAW;AACvB,QAAA,IAAA,CAAK,YAAA,CAAa;AAAA,UAChB,QAAS,IAAA,CAAK,MAAA;AAAA,UACd,KAAA,EAAS;AAAA,SACV,CAAA;AAAA,MACH;AAAA,MAEA,KAAK,IAAA,EACL;AACE,QAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAErB,QAAA,IAAI,CAAC,IAAA,CAAK,WAAA,EAAY,EACtB;AACE,UAAA,MAAA,CAAO,KAAK,oDAAoD,CAAA;AAEhE,UAAA,OAAO,KAAA;AAAA,QACT;AAEA,QAAA,MAAM,OAAA,GAAU,KAAK,QAAA,EAAS;AAE9B,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA;;AAAA,EAAuB,OAAO;AAAA,CAAI,CAAA;AAE/C,QAAA,OAAO,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAO,CAAA;AAAA,MACjC;AAAA,MAEA,WAAA,GACA;AACE,QAAA,OAAO,IAAA,CAAK,WAAW,CAAA,CAAE,gBAAA;AAAA,MAC3B;AAAA,MAEA,YAAA,GACA;AACE,QAAA,OAAO,IAAA,CAAK,WAAW,CAAA,CAAE,iBAAA;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA,MAMA,UAAA,GACA;AACE,QAAA,IAAA,CAAK,gBAAA,IAAkB,CAAA;AAEvB,QAAA,IAAI,CAAA,GAAI,IAAA,CAAK,KAAA,CAAO,IAAA,CAAK,MAAA,EAAO,GAAI,IAAA,CAAK,GAAA,CAAI,CAAA,EAAG,IAAA,CAAK,gBAAgB,CAAA,GAAI,CAAC,CAAA;AAE1E,QAAA,IAAI,CAAA,GAAI,IAAA,CAAK,gBAAA,CAAiB,YAAA,EAC9B;AACE,UAAA,CAAA,GAAI,KAAK,gBAAA,CAAiB,YAAA;AAAA,QAC5B,CAAA,MAAA,IAES,CAAA,GAAI,IAAA,CAAK,gBAAA,CAAiB,YAAA,EACnC;AACE,UAAA,CAAA,GAAI,KAAK,gBAAA,CAAiB,YAAA;AAAA,QAC5B;AAEA,QAAA,MAAA,CAAO,MAAM,CAAA,sBAAA,EAAyB,IAAA,CAAK,gBAAgB,CAAA,6BAAA,EAAgC,CAAC,CAAA,QAAA,CAAU,CAAA;AAEtG,QAAA,IAAA,CAAK,cAAA,GAAiB,WAAW,MACjC;AACE,UAAA,IAAI,CAAC,KAAK,eAAA,IAAmB,EAAE,KAAK,WAAA,EAAY,IAAK,IAAA,CAAK,YAAA,EAAa,CAAA,EACvE;AAEE,YAAA,IAAA,CAAK,UAAA,EAAW;AAGhB,YAAA,IAAA,CAAK,OAAA,EAAQ;AAAA,UACf;AAAA,QACF,CAAA,EAAG,IAAI,GAAI,CAAA;AAAA,MACb;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,GACA;AAEE,QAAA,IAAI,aAAa,EAAC;AAElB,QAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KACtB;AACE,UAAA,IAAI,MAAA,CAAO,MAAA,KAAW,CAAA,CAAE,mBAAA,EACxB;AACE,YAAA;AAAA,UACF,CAAA,MAAA,IACS,UAAA,CAAW,MAAA,KAAW,CAAA,EAC/B;AACE,YAAA,UAAA,CAAW,KAAK,MAAM,CAAA;AAAA,UACxB,WACS,MAAA,CAAO,MAAA,GAAS,UAAA,CAAW,CAAC,EAAE,MAAA,EACvC;AACE,YAAA,UAAA,GAAa,CAAE,MAAO,CAAA;AAAA,UACxB,WACS,MAAA,CAAO,MAAA,KAAW,UAAA,CAAW,CAAC,EAAE,MAAA,EACzC;AACE,YAAA,UAAA,CAAW,KAAK,MAAM,CAAA;AAAA,UACxB;AAAA,QACF,CAAC,CAAA;AAED,QAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAC1B;AAEE,UAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,CAAC,MAAA,KACtB;AACE,YAAA,MAAA,CAAO,SAAS,CAAA,CAAE,mBAAA;AAAA,UACpB,CAAC,CAAA;AAGD,UAAA,IAAA,CAAK,UAAA,EAAW;AAEhB,UAAA;AAAA,QACF;AAEA,QAAA,MAAM,MAAM,IAAA,CAAK,KAAA,CAAO,KAAK,MAAA,EAAO,GAAG,WAAW,MAAO,CAAA;AAEzD,QAAA,IAAA,CAAK,MAAA,GAAS,UAAA,CAAW,GAAG,CAAA,CAAE,MAAA;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA,MAMA,UAAA,GACA;AACE,QAAA,IAAA,CAAK,gBAAA,GAAmB,CAAA;AACxB,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,gBAAA;AAGhB,QAAA,IAAI,IAAA,CAAK,mBAAmB,IAAA,EAC5B;AACE,UAAA,YAAA,CAAa,KAAK,cAAc,CAAA;AAChC,UAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AAAA,QACxB;AAEA,QAAA,IAAA,CAAK,SAAA,CAAU,EAAE,MAAA,EAAQ,IAAA,EAAM,CAAA;AAAA,MACjC;AAAA,MAEA,aAAA,CAAc,KAAA,EAAO,IAAA,EAAM,MAAA,EAC3B;AACE,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,mBAAA;AAChB,QAAA,IAAA,CAAK,YAAA,CAAa;AAAA,UAChB,QAAS,IAAA,CAAK,MAAA;AAAA,UACd,KAAA;AAAA,UACA,IAAA;AAAA,UACA;AAAA,SACD,CAAA;AAED,QAAA,IAAI,KAAK,eAAA,EACT;AACE,UAAA;AAAA,QACF,CAAA,MAIA;AACE,UAAA,IAAA,CAAK,OAAA,CAAQ,OAAA,CAAQ,SAAS,MAAA,EAC9B;AACE,YAAA,IAAI,IAAA,CAAK,MAAA,KAAW,MAAA,CAAO,MAAA,EAC3B;AACE,cAAA,MAAA,CAAO,SAAS,CAAA,CAAE,mBAAA;AAAA,YACpB;AAAA,UACF,GAAG,IAAI,CAAA;AAAA,QACT;AAEA,QAAA,IAAA,CAAK,WAAW,KAAK,CAAA;AAAA,MACvB;AAAA,MAEA,QAAQ,IAAA,EACR;AAEE,QAAA,IAAI,SAAS,UAAA,EACb;AACE,UAAA,MAAA,CAAO,MAAM,sDAAsD,CAAA;AAEnE,UAAA,IACA;AAEE,YAAA,IAAA,CAAK,MAAA,CAAO,KAAK,MAAM,CAAA;AAAA,UACzB,SACO,KAAA,EACP;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,CAAA,mCAAA,EAAsC,KAAK,CAAA,CAAE,CAAA;AAAA,UAC3D;AAEA,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,SAAS,MAAA,EACb;AACE,UAAA,MAAA,CAAO,MAAM,gDAAgD,CAAA;AAE7D,UAAA;AAAA,QACF,CAAA,MAAA,IAGS,OAAO,IAAA,KAAS,QAAA,EACzB;AACE,UAAA,IACA;AACE,YAAA,IAAI,IAAA,CAAK,WAAA;AACP,cAAA,IAAA,GAAO,IAAA,CAAK,WAAA,CAAY,MAAA,CAAO,IAAI,CAAA;AAAA;AAEnC,cAAA,IAAA,GAAO,OAAO,YAAA,CAAa,KAAA,CAAM,MAAM,IAAI,UAAA,CAAW,IAAI,CAAC,CAAA;AAAA,UAC/D,SACO,KAAA,EACP;AACE,YAAA,MAAA,CAAO,KAAA,CAAM,CAAA,4DAAA,EAA+D,KAAK,CAAA,CAAE,CAAA;AAEnF,YAAA;AAAA,UACF;AAEA,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA;;AAAA,EAA+B,IAAI;AAAA,CAAI,CAAA;AAAA,QACtD,CAAA,MAIA;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA;;AAAA,EAA6B,IAAI;AAAA,CAAI,CAAA;AAAA,QACpD;AAEA,QAAA,IAAA,CAAK,OAAO,EAAE,SAAA,EAAW,IAAA,EAAM,OAAA,EAAS,MAAM,CAAA;AAAA,MAChD;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC5YA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAA,SAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AAEnB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,QAAQ,CAAA;AAKlC,IAAAA,SAAA,CAAQ,YAAA,GAAe,CAAC,IAAA,EAAM,EAAA,KAC9B;AACE,MAAA,IAAI,OAAA;AACJ,MAAA,IAAI,SAAA;AACJ,MAAA,IAAI,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,MAAM,CAAA;AAEnC,MAAA,IAAI,cAAc,EAAA,EAClB;AACE,QAAA,MAAA,CAAO,KAAK,mDAAmD,CAAA;AAE/D,QAAA;AAAA,MACF;AAGA,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,SAAA,CAAU,CAAA,EAAG,SAAS,CAAA;AAC7C,MAAA,IAAI,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,SAAA,EAAW,kBAAkB,CAAA;AAExD,MAAA,IAAI,WAAW,EAAA,EACf;AACE,QAAA,MAAA,CAAO,IAAA,CAAK,CAAA,2DAAA,EAA8D,SAAS,CAAA,CAAA,CAAG,CAAA;AAEtF,QAAA;AAAA,MACF,CAAA,MAAA,IACS,CAAC,MAAA,CAAO,WAAA,EACjB;AACE,QAAA,OAAA,GAAU,IAAI,UAAA,CAAW,eAAA,CAAgB,EAAE,CAAA;AAC3C,QAAA,OAAA,CAAQ,SAAS,MAAA,CAAO,MAAA;AACxB,QAAA,OAAA,CAAQ,OAAO,MAAA,CAAO,GAAA;AAAA,MACxB,CAAA,MAEA;AACE,QAAA,OAAA,GAAU,IAAI,WAAW,gBAAA,EAAiB;AAC1C,QAAA,OAAA,CAAQ,cAAc,MAAA,CAAO,WAAA;AAC7B,QAAA,OAAA,CAAQ,gBAAgB,MAAA,CAAO,aAAA;AAAA,MACjC;AAEA,MAAA,OAAA,CAAQ,IAAA,GAAO,IAAA;AACf,MAAA,IAAI,cAAc,SAAA,GAAY,CAAA;AAK9B,MAAA,OAAO,IAAA,EACP;AACE,QAAA,SAAA,GAAY,SAAA,CAAU,MAAM,WAAW,CAAA;AAGvC,QAAA,IAAI,cAAc,EAAA,EAClB;AACE,UAAA,SAAA,GAAY,WAAA,GAAc,CAAA;AAC1B,UAAA;AAAA,QACF,CAAA,MAAA,IAES,cAAc,EAAA,EACvB;AACE,UAAA,MAAA,CAAO,KAAK,oCAAoC,CAAA;AAEhD,UAAA;AAAA,QACF;AAEA,QAAA,MAAA,GAAS,WAAA,CAAY,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,SAAS,CAAA;AAE1D,QAAA,IAAI,WAAW,IAAA,EACf;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,kBAAA,EAAoB,MAAA,CAAO,KAAK,CAAA;AAE5C,UAAA;AAAA,QACF;AAEA,QAAA,WAAA,GAAc,SAAA,GAAY,CAAA;AAAA,MAC5B;AAMA,MAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,gBAAgB,CAAA,EACtC;AACE,QAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,SAAA,CAAU,gBAAgB,CAAA;AAExD,QAAA,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,MAAA,CAAO,SAAA,EAAW,aAAa,CAAA;AAAA,MACrD,CAAA,MAEA;AACE,QAAA,OAAA,CAAQ,IAAA,GAAO,IAAA,CAAK,SAAA,CAAU,SAAS,CAAA;AAAA,MACzC;AAEA,MAAA,OAAO,OAAA;AAAA,IACT,CAAA;AAKA,IAAA,SAAS,SAAA,CAAU,MAAM,WAAA,EACzB;AAEE,MAAA,IAAI,KAAA,GAAQ,WAAA;AAEZ,MAAA,IAAI,GAAA,GAAM,CAAA;AAEV,MAAA,IAAI,UAAA,GAAa,CAAA;AAGjB,MAAA,IAAI,IAAA,CAAK,UAAU,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAA,CAAE,KAAA,CAAM,SAAS,CAAA,EACpD;AACE,QAAA,OAAO,EAAA;AAAA,MACT;AAEA,MAAA,OAAO,QAAQ,CAAA,EACf;AAEE,QAAA,UAAA,GAAa,IAAA,CAAK,OAAA,CAAQ,MAAA,EAAQ,KAAK,CAAA;AAGvC,QAAA,IAAI,eAAe,EAAA,EACnB;AACE,UAAA,OAAO,UAAA;AAAA,QACT;AAEA,QAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,aAAa,CAAA,EAAG,UAAA,GAAa,CAAC,CAAA,CAAE,KAAA,CAAM,SAAS,CAAA,IAAK,KAAK,MAAA,CAAO,UAAA,GAAa,CAAC,CAAA,CAAE,KAAA,CAAM,QAAQ,CAAA,EAClH;AAEE,UAAA,KAAA,GAAQ,UAAA,GAAa,CAAA;AAAA,QACvB,CAAA,MAEA;AACE,UAAA,GAAA,GAAM,UAAA;AAAA,QACR;AAAA,MACF;AAEA,MAAA,OAAO,GAAA;AAAA,IACT;AAEA,IAAA,SAAS,WAAA,CAAY,OAAA,EAAS,IAAA,EAAM,WAAA,EAAa,SAAA,EACjD;AACE,MAAA,IAAI,MAAA;AACJ,MAAA,MAAM,WAAA,GAAc,IAAA,CAAK,OAAA,CAAQ,GAAA,EAAK,WAAW,CAAA;AACjD,MAAA,MAAM,aAAa,IAAA,CAAK,SAAA,CAAU,WAAA,EAAa,WAAW,EAAE,IAAA,EAAK;AACjE,MAAA,MAAM,cAAc,IAAA,CAAK,SAAA,CAAU,cAAc,CAAA,EAAG,SAAS,EAAE,IAAA,EAAK;AAGpE,MAAA,QAAQ,UAAA,CAAW,aAAY;AAC/B,QACE,KAAK,KAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,OAAO,WAAW,CAAA;AACpC,UAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,CAAE,WAAW,CAAA,EACzC;AACE,YAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,KAAK,CAAA;AAClC,YAAA,IAAI,MAAA,EACJ;AACE,cAAA,OAAA,CAAQ,GAAA,GAAM,MAAA;AACd,cAAA,OAAA,CAAQ,aAAa,MAAA,CAAO,MAAA;AAAA,YAC9B;AAAA,UACF,CAAA,MAEA;AACE,YAAA,MAAA,GAAS,CAAA;AAAA,UACX;AACA,UAAA;AAAA,QACF,KAAK,MAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,QAAQ,WAAW,CAAA;AACrC,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,MAAM,CAAA;AACnC,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,IAAA,GAAO,MAAA;AACf,YAAA,OAAA,CAAQ,QAAA,GAAW,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA;AAAA,UAC1C;AACA,UAAA;AAAA,QACF,KAAK,IAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,MAAM,WAAW,CAAA;AACnC,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,IAAI,CAAA;AACjC,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,EAAA,GAAK,MAAA;AACb,YAAA,OAAA,CAAQ,MAAA,GAAS,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA;AAAA,UACxC;AACA,UAAA;AAAA,QACF,KAAK,cAAA;AACH,UAAA,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,cAAc,CAAA;AAElD,UAAA,IAAI,WAAW,EAAA,EACf;AACE,YAAA,MAAA,GAAS,MAAA;AAAA,UACX,CAAA,MAEA;AACE,YAAA,KAAA,MAAW,UAAU,MAAA,EACrB;AACE,cAAA,OAAA,CAAQ,SAAA,CAAU,gBAAgB,WAAA,CAAY,SAAA,CAAU,OAAO,SAAA,EAAW,MAAA,CAAO,MAAM,CAAC,CAAA;AACxF,cAAA,OAAA,CAAQ,OAAA,CAAQ,cAAc,CAAA,CAAE,OAAA,CAAQ,UAAA,CAAW,cAAc,CAAA,CAAE,MAAA,GAAS,CAAC,CAAA,CAAE,MAAA,GAAS,MAAA,CAAO,MAAA;AAAA,YACjG;AAAA,UACF;AACA,UAAA;AAAA,QACF,KAAK,SAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,WAAW,WAAW,CAAA;AACxC,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,SAAS,CAAA;AACtC,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,OAAA,GAAU,WAAA;AAAA,UACpB;AACA,UAAA;AAAA,QACF,KAAK,SAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,MAAA,GAAS,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,SAAS,CAAA;AAE7C,UAAA,IAAI,WAAW,EAAA,EACf;AACE,YAAA,MAAA,GAAS,MAAA;AAAA,UACX,CAAA,MAEA;AACE,YAAA,KAAA,MAAW,UAAU,MAAA,EACrB;AACE,cAAA,OAAA,CAAQ,SAAA,CAAU,WAAW,WAAA,CAAY,SAAA,CAAU,OAAO,SAAA,EAAW,MAAA,CAAO,MAAM,CAAC,CAAA;AACnF,cAAA,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,OAAA,CAAQ,UAAA,CAAW,SAAS,EAAE,MAAA,GAAS,CAAC,CAAA,CAAE,MAAA,GAAS,MAAA,CAAO,MAAA;AAAA,YACpF;AAAA,UACF;AACA,UAAA;AAAA,QACF,KAAK,gBAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,kBAAkB,WAAW,CAAA;AAC/C,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,gBAAgB,CAAA;AAC7C,UAAA;AAAA,QACF,KAAK,cAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,gBAAgB,WAAW,CAAA;AAC7C,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,cAAc,CAAA;AAC3C,UAAA;AAAA,QACF,KAAK,MAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,QAAQ,WAAW,CAAA;AACrC,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,MAAM,CAAA;AACnC,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,OAAO,MAAA,CAAO,KAAA;AAAA,UACxB;AACA,UAAA,IAAI,OAAA,YAAmB,WAAW,gBAAA,EAClC;AACE,YAAA,OAAA,CAAQ,SAAS,MAAA,CAAO,MAAA;AAAA,UAC1B;AACA,UAAA;AAAA,QACF,KAAK,cAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,gBAAgB,WAAW,CAAA;AAC7C,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,cAAc,CAAA;AAC3C,UAAA;AAAA,QACF,KAAK,kBAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,oBAAoB,WAAW,CAAA;AACjD,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,kBAAkB,CAAA;AAC/C,UAAA;AAAA,QACF,KAAK,oBAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,sBAAsB,WAAW,CAAA;AACnD,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,oBAAoB,CAAA;AACjD,UAAA;AAAA,QACF,KAAK,iBAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,mBAAmB,WAAW,CAAA;AAChD,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,iBAAiB,CAAA;AAC9C,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,kBAAkB,MAAA,CAAO,OAAA;AACjC,YAAA,OAAA,CAAQ,4BAA4B,MAAA,CAAO,SAAA;AAAA,UAC7C;AACA,UAAA;AAAA,QACF,KAAK,UAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,YAAY,WAAW,CAAA;AACzC,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,UAAU,CAAA;AACvC,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,QAAA,GAAW,MAAA;AAAA,UACrB;AACA,UAAA;AAAA,QACF,KAAK,UAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,YAAY,WAAW,CAAA;AACzC,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,UAAU,CAAA;AACvC,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,QAAA,GAAW,MAAA;AAAA,UACrB;AACA,UAAA;AAAA,QACF,KAAK,OAAA;AAAA,QACL,KAAK,GAAA;AACH,UAAA,OAAA,CAAQ,SAAA,CAAU,SAAS,WAAW,CAAA;AACtC,UAAA,MAAA,GAAS,OAAA,CAAQ,YAAY,OAAO,CAAA;AACpC,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAA,CAAQ,KAAA,GAAQ,MAAA;AAAA,UAClB;AACA,UAAA;AAAA,QACF;AAEE,UAAA,OAAA,CAAQ,SAAA,CAAU,YAAY,WAAW,CAAA;AACzC,UAAA,MAAA,GAAS,CAAA;AAAA;AAGb,MAAA,IAAI,WAAW,MAAA,EACf;AACE,QAAA,OAAO;AAAA,UACL,KAAA,EAAQ,yBAAyB,UAAU,CAAA,CAAA;AAAA,SAC7C;AAAA,MACF,CAAA,MAEA;AACE,QAAA,OAAO,IAAA;AAAA,MACT;AAAA,IACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC7TA,IAAA,mBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,6EAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AAEd,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,aAAa,CAAA;AAGvC,IAAA,IAAM,GAAA,GAAM,CAAE,cAAe,CAAA;AAG7B,IAAA,IAAM,QAAA,GAAW;AAAA,MACf,eAAA;AAAA,MACA,cAAA;AAAA,MACA,oBAAA;AAAA,MACA;AAAA,KACF;AAGA,IAAA,IAAM,SAAA,GAAY;AAAA,MAChB,eAAA;AAAA,MACA;AAAA,KACF;AAGA,IAAA,IAAI,OAAA;AACJ,IAAA,IAAI,EAAA;AACJ,IAAA,IAAI,SAAA;AAEJ,IAAA,MAAA,CAAO,OAAA,GAAU,CAAC,CAAA,EAAG,CAAA,EAAG,CAAA,KACxB;AACE,MAAA,OAAA,GAAU,CAAA;AACV,MAAA,EAAA,GAAK,CAAA;AACL,MAAA,SAAA,GAAY,CAAA;AAEZ,MAAA,KAAA,MAAW,SAAS,GAAA,EACpB;AACE,QAAA,IAAI,KAAA,OAAY,KAAA,EAChB;AACE,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAEA,MAAA,IAAI,OAAA,YAAmB,WAAW,eAAA,EAClC;AACE,QAAA,KAAA,MAAW,SAAS,QAAA,EACpB;AACE,UAAA,IAAI,KAAA,OAAY,KAAA,EAChB;AACE,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF,CAAA,MAAA,IAES,OAAA,YAAmB,UAAA,CAAW,gBAAA,EACvC;AACE,QAAA,KAAA,MAAW,SAAS,SAAA,EACpB;AACE,UAAA,IAAI,KAAA,OAAY,KAAA,EAChB;AACE,YAAA,OAAO,KAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAGA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAuBA,IAAA,SAAS,eAAA,GACT;AACE,MAAA,IAAI,QAAQ,CAAA,CAAE,IAAI,CAAA,CAAE,GAAA,CAAI,WAAW,KAAA,EACnC;AACE,QAAA,KAAA,CAAM,GAAG,CAAA;AAET,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,SAAS,cAAA,GACT;AACE,MAAA,IAAI,CAAC,QAAQ,MAAA,EACb;AACE,QAAA,IAAI,OAAA,CAAQ,QAAQ,MAAA,CAAO,CAAA,EAAG,CAAC,CAAA,KAAM,EAAA,CAAG,cAAc,QAAA,EACtD;AACE,UAAA,KAAA,CAAM,GAAG,CAAA;AAET,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAEA,IAAA,SAAS,oBAAA,GACT;AACE,MAAA,MAAM,GAAA,GAAM,KAAA,CAAM,eAAA,CAAgB,OAAA,CAAQ,IAAI,CAAA;AAC9C,MAAA,MAAM,aAAA,GAAgB,OAAA,CAAQ,SAAA,CAAU,gBAAgB,CAAA;AAExD,MAAA,IAAI,MAAM,aAAA,EACV;AACE,QAAA,KAAA,CAAM,GAAG,CAAA;AAET,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,SAAS,eAAA,GACT;AACE,MAAA,MAAM,UAAU,OAAA,CAAQ,QAAA;AACxB,MAAA,MAAM,UAAU,OAAA,CAAQ,OAAA;AACxB,MAAA,MAAM,OAAO,OAAA,CAAQ,IAAA;AACrB,MAAA,IAAI,EAAA;AAGJ,MAAA,IAAI,QAAQ,MAAA,EACZ;AACE,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,MAAA,EAC/B;AAIE,QAAA,IAAI,EAAA,CAAG,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA,EAC3C;AACE,UAAA,OAAO,KAAA;AAAA,QACT,CAAA,MAGA;AACE,UAAA,KAAA,MAAW,WAAA,IAAe,EAAA,CAAG,aAAA,CAAc,GAAA,EAC3C;AACE,YAAA,IAAI,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,GAAG,aAAA,CAAc,GAAA,EAAK,WAAW,CAAA,EAC1E;AACE,cAAA,EAAA,GAAK,EAAA,CAAG,aAAA,CAAc,GAAA,CAAI,WAAW,CAAA;AACrC,cAAA,IAAI,EAAA,CAAG,OAAA,CAAQ,QAAA,KAAa,OAAA,IACxB,EAAA,CAAG,OAAA,CAAQ,OAAA,KAAY,OAAA,IACvB,EAAA,CAAG,OAAA,CAAQ,IAAA,KAAS,IAAA,EACxB;AACE,gBAAA,KAAA,CAAM,GAAG,CAAA;AAET,gBAAA,OAAO,KAAA;AAAA,cACT;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF,WAOS,EAAA,CAAG,aAAA,CAAc,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA,EACjD;AACE,QAAA,OAAO,KAAA;AAAA,MACT,CAAA,MAIA;AACE,QAAA,KAAA,MAAW,WAAA,IAAe,EAAA,CAAG,aAAA,CAAc,IAAA,EAC3C;AACE,UAAA,IAAI,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,GAAG,aAAA,CAAc,IAAA,EAAM,WAAW,CAAA,EAC3E;AACE,YAAA,EAAA,GAAK,EAAA,CAAG,aAAA,CAAc,IAAA,CAAK,WAAW,CAAA;AACtC,YAAA,IAAI,EAAA,CAAG,OAAA,CAAQ,QAAA,KAAa,OAAA,IACxB,EAAA,CAAG,OAAA,CAAQ,OAAA,KAAY,OAAA,IACvB,EAAA,CAAG,OAAA,CAAQ,IAAA,KAAS,IAAA,EACxB;AACE,cAAA,KAAA,CAAM,GAAG,CAAA;AAET,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAGA,IAAA,SAAS,eAAA,GACT;AACE,MAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,CAAE,SAAS,CAAA,EACvC;AACE,QAAA,MAAA,CAAO,MAAM,+EAA+E,CAAA;AAE5F,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AAEA,IAAA,SAAS,qBAAA,GACT;AACE,MAAA,MAAM,GAAA,GAAM,MAAM,eAAA,CAAgB,OAAA,CAAQ,IAAI,CAAA,EAAG,aAAA,GAAgB,OAAA,CAAQ,SAAA,CAAU,gBAAgB,CAAA;AAEnG,MAAA,IAAI,MAAM,aAAA,EACV;AACE,QAAA,MAAA,CAAO,MAAM,mGAAmG,CAAA;AAEhH,QAAA,OAAO,KAAA;AAAA,MACT;AAAA,IACF;AAGA,IAAA,SAAS,cAAA,GACT;AACE,MAAA,MAAM,mBAAmB,CAAE,MAAA,EAAQ,IAAA,EAAM,SAAA,EAAW,QAAQ,KAAM,CAAA;AAElE,MAAA,KAAA,MAAW,UAAU,gBAAA,EACrB;AACE,QAAA,IAAI,CAAC,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAA,EAC7B;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,iCAAA,EAAoC,MAAM,CAAA,uBAAA,CAAyB,CAAA;AAEhF,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,IACF;AAGA,IAAA,SAAS,MAAM,WAAA,EACf;AACE,MAAA,MAAM,IAAA,GAAO,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA;AAErC,MAAA,IAAI,EAAA;AACJ,MAAA,IAAI,WAAW,CAAA,QAAA,EAAW,WAAW,IAAI,OAAA,CAAQ,aAAA,CAAc,WAAW,CAAC,CAAA;AAAA,CAAA;AAE3E,MAAA,KAAA,MAAW,OAAO,IAAA,EAClB;AACE,QAAA,QAAA,IAAY,QAAQ,GAAG,CAAA;AAAA,CAAA;AAAA,MACzB;AAEA,MAAA,EAAA,GAAK,OAAA,CAAQ,UAAU,IAAI,CAAA;AAE3B,MAAA,IAAI,CAAC,QAAQ,MAAA,EACb;AACE,QAAA,EAAA,IAAM,CAAA,KAAA,EAAQ,KAAA,CAAM,MAAA,EAAQ,CAAA,CAAA;AAAA,MAC9B;AAEA,MAAA,QAAA,IAAY,OAAO,EAAE,CAAA;AAAA,CAAA;AACrB,MAAA,QAAA,IAAY,CAAA,MAAA,EAAS,OAAA,CAAQ,SAAA,CAAU,MAAM,CAAC,CAAA;AAAA,CAAA;AAC9C,MAAA,QAAA,IAAY,CAAA,SAAA,EAAY,QAAQ,OAAO,CAAA;AAAA,CAAA;AACvC,MAAA,QAAA,IAAY,CAAA,MAAA,EAAS,OAAA,CAAQ,IAAI,CAAA,CAAA,EAAI,QAAQ,MAAM,CAAA;AAAA,CAAA;AACnD,MAAA,QAAA,IAAY,MAAA;AAEZ,MAAA,SAAA,CAAU,KAAK,QAAQ,CAAA;AAAA,IACzB;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC3QA,IAAA,cAAA,GAAA,UAAA,CAAA;AAAA,EAAA,wEAAA,CAAAA,SAAA,EAAA;AAAA,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AAGnB,IAAAA,SAAA,CAAQ,QAAA,GAAW;AAAA;AAAA,MAEjB,kBAAA,EAAqB,IAAA;AAAA,MACrB,QAAA,EAAqB,IAAA;AAAA,MACrB,KAAA,EAAqB,IAAA;AAAA,MACrB,GAAA,EAAqB,IAAA;AAAA,MACrB,iBAAA,EAAqB,IAAA;AAAA;AAAA,MAGrB,YAAA,EAAe,IAAA;AAAA,MACf,GAAA,EAAe,IAAA;AAAA,MACf,WAAA,EAAe,IAAA;AAAA;AAAA,MAGf,WAAA,EAAc,IAAA;AAAA;AAAA,MAGd,mBAAA,EAAsB,KAAA;AAAA;AAAA,MAGtB,cAAA,EAAiC,IAAA;AAAA,MACjC,+BAAiC,OAAA,CAAQ,MAAA;AAAA,MACzC,8BAAA,EAAiC,KAAA;AAAA,MACjC,iBAAA,EAAiC,EAAA;AAAA;AAAA,MAGjC,QAAA,EAA0B,IAAA;AAAA,MAC1B,gBAAA,EAA0B,GAAA;AAAA,MAC1B,uBAAA,EAA0B,EAAA;AAAA,MAC1B,gBAAA,EAA0B,IAAA;AAAA;AAAA,MAG1B,OAAA,EAAmC,IAAA;AAAA,MACnC,kCAAmC,OAAA,CAAQ,gCAAA;AAAA,MAC3C,kCAAmC,OAAA,CAAQ,gCAAA;AAAA;AAAA,MAG3C,aAAA,EAAgB,IAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMhB,QAAA,EAAW,CAAA,EAAG,KAAA,CAAM,iBAAA,CAAkB,EAAE,CAAC,CAAA,QAAA;AAAA,KAC3C;AAGA,IAAA,IAAM,MAAA,GAAS;AAAA,MACb,SAAA,EAAY;AAAA,QAEV,QAAQ,OAAA,EACR;AAOE,UAAA,MAAM,WAAW,EAAC;AAElB,UAAA,IAAI,MAAA,CAAO,QAAA,CAAS,OAAO,CAAA,EAC3B;AACE,YAAA,QAAA,CAAS,IAAA,CAAK,EAAE,MAAA,EAAQ,OAAA,EAAS,CAAA;AAAA,UACnC,WACS,KAAA,CAAM,OAAA,CAAQ,OAAO,CAAA,IAAK,QAAQ,MAAA,EAC3C;AACE,YAAA,KAAA,MAAW,UAAU,OAAA,EACrB;AACE,cAAA,IAAI,MAAA,CAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,MAAA,EAAQ,QAAQ,CAAA,IACrD,MAAA,CAAO,QAAA,CAAS,MAAA,CAAO,MAAM,CAAA,EACjC;AACE,gBAAA,QAAA,CAAS,KAAK,MAAM,CAAA;AAAA,cACtB,CAAA,MAAA,IACS,MAAA,CAAO,QAAA,CAAS,MAAM,CAAA,EAC/B;AACE,gBAAA,QAAA,CAAS,IAAA,CAAK,EAAE,MAAA,EAAgB,CAAA;AAAA,cAClC;AAAA,YACF;AAAA,UACF,CAAA,MAEA;AACE,YAAA;AAAA,UACF;AAEA,UAAA,OAAO,QAAA;AAAA,QACT,CAAA;AAAA,QAEA,IAAI,GAAA,EACJ;AACE,UAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,GAAG,CAAA,EACtB;AACE,YAAA,GAAA,GAAM,CAAA,EAAG,OAAA,CAAQ,GAAG,CAAA,CAAA,EAAI,GAAG,CAAA,CAAA;AAAA,UAC7B;AACA,UAAA,MAAM,MAAA,GAAS,GAAA,CAAI,KAAA,CAAM,GAAG,CAAA;AAE5B,UAAA,IAAI,CAAC,MAAA,EACL;AACE,YAAA;AAAA,UACF,CAAA,MAAA,IACS,CAAC,MAAA,CAAO,IAAA,EACjB;AACE,YAAA;AAAA,UACF,CAAA,MAEA;AACE,YAAA,OAAO,MAAA;AAAA,UACT;AAAA,QACF;AAAA,OACF;AAAA,MAEA,QAAA,EAAW;AAAA,QAET,mBAAmB,kBAAA,EACnB;AACE,UAAA,IAAI,QAAQ,KAAA,CAAM,CAAA,CAAA,EAAI,kBAAkB,CAAA,CAAA,CAAA,EAAK,eAAe,MAAM,EAAA,EAClE;AACE,YAAA;AAAA,UACF,CAAA,MAEA;AACE,YAAA,OAAO,kBAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QACA,kBAAkB,iBAAA,EAClB;AACE,UAAA,IAAI,OAAO,sBAAsB,QAAA,EACjC;AACE,YAAA,OAAO,iBAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QACA,WAAW,UAAA,EACX;AACE,UAAA,IAAI,OAAO,eAAe,QAAA,EAC1B;AACE,YAAA,OAAO,UAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QAEA,iCAAiC,gCAAA,EACjC;AACE,UAAA,IAAI,KAAA,CAAM,SAAA,CAAU,gCAAgC,CAAA,EACpD;AACE,YAAA,MAAM,KAAA,GAAQ,OAAO,gCAAgC,CAAA;AAErD,YAAA,IAAI,QAAQ,CAAA,EACZ;AACE,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAA;AAAA,QAEA,iCAAiC,gCAAA,EACjC;AACE,UAAA,IAAI,KAAA,CAAM,SAAA,CAAU,gCAAgC,CAAA,EACpD;AACE,YAAA,MAAM,KAAA,GAAQ,OAAO,gCAAgC,CAAA;AAErD,YAAA,IAAI,QAAQ,CAAA,EACZ;AACE,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAA;AAAA,QAEA,YAAY,WAAA,EACZ;AACE,UAAA,IAAI,OAAO,gBAAgB,QAAA,EAC3B;AACE,YAAA,MAAM,GAAA,GAAM,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,SAAS,CAAA;AAEhD,YAAA,IAAI,QAAQ,EAAA,EACZ;AACE,cAAA,OAAO,GAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAA;AAAA,QAEA,aAAa,YAAA,EACb;AACE,UAAA,OAAO,YAAA;AAAA,QACT,CAAA;AAAA,QAEA,YAAY,WAAA,EACZ;AACE,UAAA,IAAK,SAAA,CAAU,IAAA,CAAK,WAAW,CAAA,EAC/B;AACE,YAAA,WAAA,GAAc,WAAA,CAAY,OAAO,CAAC,CAAA;AAAA,UACpC;AAEA,UAAA,IAAI,OAAA,CAAQ,KAAA,CAAM,WAAA,EAAa,MAAM,MAAM,EAAA,EAC3C;AACE,YAAA;AAAA,UACF,CAAA,MAEA;AACE,YAAA,OAAO,WAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QAEA,kBAAkB,iBAAA,EAClB;AACE,UAAA,IAAI,KAAA,CAAM,SAAA,CAAU,iBAAiB,CAAA,EACrC;AACE,YAAA,MAAM,KAAA,GAAQ,OAAO,iBAAiB,CAAA;AAEtC,YAAA,IAAI,QAAQ,CAAA,EACZ;AACE,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAA;AAAA,QAEA,eAAe,cAAA,EACf;AACE,UAAA,IAAI,OAAO,mBAAmB,SAAA,EAC9B;AACE,YAAA,OAAO,cAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QAEA,8BAA8B,MAAA,EAC9B;AACE,UAAA,IAAI,OAAO,WAAW,QAAA,EACtB;AACE,YAAA,MAAA,GAAS,OAAO,WAAA,EAAY;AAE5B,YAAA,IAAI,MAAA,KAAW,OAAA,CAAQ,MAAA,IAAU,MAAA,KAAW,QAAQ,MAAA,EACpD;AACE,cAAA,OAAO,MAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAA;AAAA,QAEA,+BAA+B,8BAAA,EAC/B;AACE,UAAA,IAAI,OAAO,mCAAmC,SAAA,EAC9C;AACE,YAAA,OAAO,8BAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QAEA,SAAS,QAAA,EACT;AACE,UAAA,OAAO,OAAO,QAAQ,CAAA;AAAA,QACxB,CAAA;AAAA,QAEA,MAAM,KAAA,EACN;AACE,UAAA,OAAO,OAAO,KAAK,CAAA;AAAA,QACrB,CAAA;AAAA,QAEA,IAAI,GAAA,EACJ;AACE,UAAA,OAAO,OAAO,GAAG,CAAA;AAAA,QACnB,CAAA;AAAA,QAEA,SAAS,QAAA,EACT;AACE,UAAA,IAAI,OAAO,aAAa,SAAA,EACxB;AACE,YAAA,OAAO,QAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QAEA,iBAAiB,gBAAA,EACjB;AACE,UAAA,IAAI,KAAA,CAAM,SAAA,CAAU,gBAAgB,CAAA,EACpC;AACE,YAAA,MAAM,KAAA,GAAQ,OAAO,gBAAgB,CAAA;AAErC,YAAA,IAAI,SAAS,CAAA,EACb;AACE,cAAA,OAAO,KAAA;AAAA,YACT;AAAA,UACF;AAAA,QACF,CAAA;AAAA,QAEA,wBAAwB,uBAAA,EACxB;AACE,UAAA,IAAI,OAAO,4BAA4B,UAAA,EACvC;AACE,YAAA,OAAO,uBAAA;AAAA,UACT;AAEA,UAAA,OAAO,OAAO,uBAAuB,CAAA;AAAA,QACvC,CAAA;AAAA,QAEA,iBAAiB,gBAAA,EACjB;AACE,UAAA,IAAI,CAAC,QAAA,CAAS,IAAA,CAAK,gBAAgB,CAAA,EACnC;AACE,YAAA,gBAAA,GAAmB,CAAA,EAAG,OAAA,CAAQ,GAAG,CAAA,CAAA,EAAI,gBAAgB,CAAA,CAAA;AAAA,UACvD;AAEA,UAAA,MAAM,MAAA,GAAS,GAAA,CAAI,KAAA,CAAM,gBAAgB,CAAA;AAEzC,UAAA,IAAI,CAAC,MAAA,EACL;AACE,YAAA;AAAA,UACF,CAAA,MAAA,IACS,OAAO,IAAA,EAChB;AACE,YAAA;AAAA,UACF,CAAA,MAEA;AACE,YAAA,OAAO,MAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QAEA,oBAAoB,mBAAA,EACpB;AACE,UAAA,IAAI,OAAO,wBAAwB,SAAA,EACnC;AACE,YAAA,OAAO,mBAAA;AAAA,UACT;AAAA,QACF,CAAA;AAAA,QAEA,cAAc,aAAA,EACd;AACE,UAAA,MAAM,gBAAgB,EAAC;AAEvB,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,IAAK,cAAc,MAAA,EAClD;AACE,YAAA,KAAA,MAAW,UAAU,aAAA,EACrB;AACE,cAAA,IAAI,OAAO,WAAW,QAAA,EACtB;AACE,gBAAA,aAAA,CAAc,KAAK,MAAM,CAAA;AAAA,cAC3B;AAAA,YACF;AAAA,UACF,CAAA,MAEA;AACE,YAAA;AAAA,UACF;AAEA,UAAA,OAAO,aAAA;AAAA,QACT;AAAA;AACF,KACF;AAEA,IAAAA,SAAA,CAAQ,IAAA,GAAO,CAAC,GAAA,EAAK,GAAA,KACrB;AAEE,MAAA,KAAA,MAAW,SAAA,IAAa,OAAO,SAAA,EAC/B;AACE,QAAA,IAAI,CAAC,GAAA,CAAI,cAAA,CAAe,SAAS,CAAA,EACjC;AACE,UAAA,MAAM,IAAI,UAAA,CAAW,kBAAA,CAAmB,SAAS,CAAA;AAAA,QACnD,CAAA,MAEA;AACE,UAAA,MAAM,KAAA,GAAQ,IAAI,SAAS,CAAA;AAC3B,UAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,SAAA,CAAU,SAAS,EAAE,KAAK,CAAA;AAEvD,UAAA,IAAI,kBAAkB,MAAA,EACtB;AACE,YAAA,GAAA,CAAI,SAAS,CAAA,GAAI,aAAA;AAAA,UACnB,CAAA,MAEA;AACE,YAAA,MAAM,IAAI,UAAA,CAAW,kBAAA,CAAmB,SAAA,EAAW,KAAK,CAAA;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAGA,MAAA,KAAA,MAAW,SAAA,IAAa,OAAO,QAAA,EAC/B;AACE,QAAA,IAAI,GAAA,CAAI,cAAA,CAAe,SAAS,CAAA,EAChC;AACE,UAAA,MAAM,KAAA,GAAQ,IAAI,SAAS,CAAA;AAK3B,UAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,EACvB;AACE,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,aAAA,GAAgB,MAAA,CAAO,QAAA,CAAS,SAAS,EAAE,KAAK,CAAA;AAEtD,UAAA,IAAI,kBAAkB,MAAA,EACtB;AACE,YAAA,GAAA,CAAI,SAAS,CAAA,GAAI,aAAA;AAAA,UACnB,CAAA,MAEA;AACE,YAAA,MAAM,IAAI,UAAA,CAAW,kBAAA,CAAmB,SAAA,EAAW,KAAK,CAAA;AAAA,UAC1D;AAAA,QACF;AAAA,MACF;AAAA,IACF,CAAA;AAAA,EAAA;AAAA,CAAA,CAAA;;;AClZA,IAAA,UAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAMY,aAAAA,GAAe,SAAA,CAAQ,QAAQ,CAAA,CAAE,YAAA;AACvC,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,iBAAA,EAAA;AAChB,IAAA,IAAM,WAAA,GAAc,mBAAA,EAAA;AACpB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,QAAA,GAAW,gBAAA,EAAA;AACjB,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,YAAA,GAAe,oBAAA,EAAA;AACrB,IAAA,IAAM,SAAA,GAAY,iBAAA,EAAA;AAClB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,WAAA,GAAc,mBAAA,EAAA;AACpB,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AAEf,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,IAAI,CAAA;AAE9B,IAAA,IAAM,CAAA,GAAI;AAAA;AAAA,MAER,WAAA,EAAqB,CAAA;AAAA,MACrB,YAAA,EAAqB,CAAA;AAAA,MACrB,kBAAA,EAAqB,CAAA;AAAA,MACrB,gBAAA,EAAqB,CAAA;AAAA;AAAA,MAGrB,mBAAA,EAAsB,CAAA;AAAA,MACtB,aAAA,EAAsB;AAAA,KACxB;AASA,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,EAAA,SAAWA,aAAAA,CAClC;AAAA;AAAA,MAEE,WAAW,CAAA,GACX;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,YAAY,aAAA,EACZ;AAEE,QAAA,IAAI,CAAC,aAAA,EACL;AACE,UAAA,MAAM,IAAI,UAAU,sBAAsB,CAAA;AAAA,QAC5C;AAGA,QAAA,MAAM,aAAA,GAAgB,CAAE,UAAA,EAAY,KAAA,EAAO,mBAAoB,CAAA;AAE/D,QAAA,MAAA,CAAO,KAAA;AAAA,UAAM,0BAAA;AAAA,UACX,MAAA,CAAO,OAAA,CAAQ,aAAa,CAAA,CAAE,MAAA,CAAO,CAAC,CAAE,GAAI,CAAA,KAAM,CAAC,aAAA,CAAc,QAAA,CAAS,GAAG,CAAC;AAAA,SAChF;AAEA,QAAA,KAAA,EAAM;AAEN,QAAA,IAAA,CAAK,MAAA,GAAS;AAAA,UACZ,aAAc;AAAC,SACjB;AAEA,QAAA,IAAA,CAAK,iBAAiB,MAAA,CAAO,MAAA,CAAO,EAAC,EAAG,OAAO,QAAQ,CAAA;AACvD,QAAA,IAAA,CAAK,oBAAoB,EAAC;AAC1B,QAAA,IAAA,CAAK,WAAW,EAAC;AAGjB,QAAA,IAAA,CAAK,cAAc,EAAC;AAEpB,QAAA,IAAA,CAAK,YAAY,EAAC;AAClB,QAAA,IAAA,CAAK,UAAA,GAAa,IAAA;AAClB,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,WAAA;AACjB,QAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AACd,QAAA,IAAA,CAAK,aAAA,GAAgB;AAAA,UACnB,MAAO,EAAC;AAAA,UACR,MAAO,EAAC;AAAA,UACR,KAAO,EAAC;AAAA,UACR,KAAO;AAAC,SACV;AAGA,QAAA,IAAA,CAAK,QAAQ,EAAC;AAEd,QAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAGnB,QAAA,IACA;AACE,UAAA,IAAA,CAAK,YAAY,aAAa,CAAA;AAAA,QAChC,SACO,KAAA,EACP;AACE,UAAA,IAAA,CAAK,UAAU,CAAA,CAAE,gBAAA;AACjB,UAAA,IAAA,CAAK,SAAS,CAAA,CAAE,mBAAA;AAChB,UAAA,MAAM,KAAA;AAAA,QACR;AAGA,QAAA,IAAA,CAAK,YAAA,GAAe,IAAI,WAAA,CAAY,IAAI,CAAA;AAAA,MAC1C;AAAA,MAEA,IAAI,CAAA,GACJ;AACE,QAAA,OAAO,CAAA;AAAA,MACT;AAAA,MAEA,IAAI,MAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,OAAA;AAAA,MACd;AAAA,MAEA,IAAI,OAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA,MAEA,IAAI,aAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,cAAA;AAAA,MACd;AAAA,MAEA,IAAI,SAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,UAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAUA,KAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,SAAS,CAAA;AAEtB,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,WAAA,EACvB;AACE,UAAA,IAAA,CAAK,WAAW,OAAA,EAAQ;AAAA,QAC1B,CAAA,MAAA,IACS,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,kBAAA,EAC5B;AACE,UAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAG5B,UAAA,IAAI,IAAA,CAAK,gBAAgB,IAAA,EACzB;AACE,YAAA,YAAA,CAAa,KAAK,WAAW,CAAA;AAC7B,YAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,YAAA,IAAA,CAAK,WAAW,UAAA,EAAW;AAAA,UAC7B;AAGA,UAAA,IAAA,CAAK,UAAU,CAAA,CAAE,WAAA;AACjB,UAAA,IAAA,CAAK,WAAW,OAAA,EAAQ;AAAA,QAC1B,CAAA,MAAA,IACS,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,YAAA,EAC5B;AACE,UAAA,MAAA,CAAO,MAAM,sCAAsC,CAAA;AAAA,QACrD,CAAA,MAEA;AACE,UAAA,MAAA,CAAO,MAAM,wEAAwE,CAAA;AAAA,QACvF;AAGA,QAAA,IAAA,CAAK,iBAAA,CAAkB,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,QAAA;AAAA,MACxD;AAAA;AAAA;AAAA;AAAA,MAKA,QAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,YAAY,CAAA;AAEzB,QAAA,IAAA,CAAK,kBAAkB,QAAA,GAAW,IAAA;AAClC,QAAA,IAAA,CAAK,aAAa,QAAA,EAAS;AAAA,MAC7B;AAAA;AAAA;AAAA;AAAA,MAKA,WAAW,OAAA,EACX;AACE,QAAA,MAAA,CAAO,MAAM,cAAc,CAAA;AAE3B,QAAA,IAAA,CAAK,kBAAkB,QAAA,GAAW,KAAA;AAClC,QAAA,IAAA,CAAK,YAAA,CAAa,WAAW,OAAO,CAAA;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GACA;AACE,QAAA,OAAO,IAAA,CAAK,YAAA;AAAA,MACd;AAAA;AAAA;AAAA;AAAA,MAKA,YAAA,GACA;AACE,QAAA,OAAO,KAAK,YAAA,CAAa,UAAA;AAAA,MAC3B;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,GACA;AACE,QAAA,OAAO,IAAA,CAAK,WAAW,WAAA,EAAY;AAAA,MACrC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAWA,IAAA,CAAK,QAAQ,OAAA,EACb;AACE,QAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAErB,QAAA,MAAM,OAAA,GAAU,IAAI,UAAA,CAAW,IAAI,CAAA;AAEnC,QAAA,OAAA,CAAQ,OAAA,CAAQ,QAAQ,OAAO,CAAA;AAE/B,QAAA,OAAO,OAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,WAAA,CAAY,MAAA,EAAQ,IAAA,EAAM,OAAA,EAC1B;AACE,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAI,CAAA;AAEhC,QAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAA;AAElC,QAAA,OAAO,OAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,SAAA,CAAU,MAAA,EAAQ,SAAA,EAAW,MAAA,EAAQ,OAAA,EACrC;AACE,QAAA,MAAA,CAAO,MAAM,aAAa,CAAA;AAE1B,QAAA,OAAO,IAAI,UAAA,CAAW,IAAA,EAAM,MAAA,EAAQ,SAAA,EAAW,QAAQ,OAAO,CAAA;AAAA,MAChE;AAAA;AAAA;AAAA;AAAA,MAKA,MAAA,CAAO,SAAA,EAAW,WAAA,EAAa,OAAA,EAC/B;AACE,QAAA,MAAA,CAAO,MAAM,UAAU,CAAA;AAEvB,QAAA,OAAO,IAAI,QAAA,CAAS,IAAA,EAAM,SAAA,EAAW,aAAa,OAAO,CAAA;AAAA,MAC3D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAYA,WAAA,CAAY,MAAA,EAAQ,IAAA,EAAM,OAAA,EAC1B;AACE,QAAA,MAAA,CAAO,MAAM,eAAe,CAAA;AAE5B,QAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAI,CAAA;AAEhC,QAAA,OAAA,CAAQ,IAAA,CAAK,MAAA,EAAQ,IAAA,EAAM,OAAO,CAAA;AAElC,QAAA,OAAO,OAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA,MAKA,kBAAkB,OAAA,EAClB;AACE,QAAA,MAAA,CAAO,MAAM,qBAAqB,CAAA;AAElC,QAAA,KAAA,MAAW,GAAA,IAAO,KAAK,SAAA,EACvB;AACE,UAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA,CAAE,SAAQ,EACjC;AACE,YAAA,IAAA,CAAK,SAAA,CAAU,GAAG,CAAA,CAAE,SAAA,CAAU,OAAO,CAAA;AAAA,UACvC;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,IAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAGrB,QAAA,IAAA,CAAK,oBAAoB,EAAC;AAE1B,QAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,kBAAA,EACvB;AACE,UAAA,MAAA,CAAO,MAAM,mBAAmB,CAAA;AAEhC,UAAA;AAAA,QACF;AAGA,QAAA,IAAA,CAAK,aAAa,KAAA,EAAM;AAGxB,QAAA,MAAM,YAAA,GAAe,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,SAAS,CAAA,CAAE,MAAA;AAGjD,QAAA,KAAA,MAAW,OAAA,IAAW,KAAK,SAAA,EAC3B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,SAAA,EAAW,OAAO,CAAA,EAChE;AACE,YAAA,MAAA,CAAO,KAAA,CAAM,CAAA,gBAAA,EAAmB,OAAO,CAAA,CAAE,CAAA;AACzC,YAAA,IAAI;AAAE,cAAA,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,CAAE,SAAA,EAAU;AAAA,YAAG,SAEpC,KAAA,EAAO;AAAA,YAAC;AAAA,UACjB;AAAA,QACF;AAGA,QAAA,KAAA,MAAW,SAAA,IAAa,KAAK,WAAA,EAC7B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,IAAA,CAAK,IAAA,CAAK,aAAa,SAAS,CAAA;AAClE,YAAA,IAAI;AAAE,cAAA,IAAA,CAAK,WAAA,CAAY,SAAS,CAAA,CAAE,KAAA,EAAM;AAAA,YAAG,SAEpC,KAAA,EAAO;AAAA,YAAC;AAAA,QACnB;AAEA,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,kBAAA;AAEjB,QAAA,MAAM,gBAAA,GACJ,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,IAAI,CAAA,CAAE,MAAA,GACrC,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,IAAI,CAAA,CAAE,MAAA,GACrC,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,GAAG,CAAA,CAAE,MAAA,GACpC,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,aAAA,CAAc,GAAG,CAAA,CAAE,MAAA;AAEtC,QAAA,IAAI,gBAAA,KAAqB,CAAA,IAAK,YAAA,KAAiB,CAAA,EAC/C;AACE,UAAA,IAAA,CAAK,WAAW,UAAA,EAAW;AAAA,QAC7B,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,WAAA,GAAc,WAAW,MAC9B;AACE,YAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,YAAA,IAAA,CAAK,WAAW,UAAA,EAAW;AAAA,UAC7B,GAAG,GAAI,CAAA;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAOA,gBAAgB,MAAA,EAChB;AACE,QAAA,OAAO,KAAA,CAAM,eAAA,CAAgB,MAAA,EAAQ,IAAA,CAAK,eAAe,eAAe,CAAA;AAAA,MAC1E;AAAA;AAAA;AAAA;AAAA,MAKA,IAAI,SAAA,EACJ;AACE,QAAA,QAAQ,SAAA;AACR,UACE,KAAK,oBAAA;AACH,YAAA,OAAO,KAAK,cAAA,CAAe,kBAAA;AAAA,UAE7B,KAAK,OAAA;AACH,YAAA,OAAO,KAAK,cAAA,CAAe,KAAA;AAAA,UAE7B,KAAK,KAAA;AACH,YAAA,OAAO,KAAK,cAAA,CAAe,GAAA;AAAA,UAE7B,KAAK,mBAAA;AACH,YAAA,OAAO,KAAK,cAAA,CAAe,iBAAA;AAAA,UAE7B;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,gDAAgD,SAAS,CAAA;AAErE,YAAA,OAAO,MAAA;AAAA;AACX,MACF;AAAA;AAAA;AAAA;AAAA;AAAA,MAMA,GAAA,CAAI,WAAW,KAAA,EACf;AACE,QAAA,QAAQ,SAAA;AACR,UACE,KAAK,oBAAA,EAAsB;AACzB,YAAA,IAAA,CAAK,cAAA,CAAe,kBAAA,GAAqB,MAAA,CAAO,KAAK,CAAA;AACrD,YAAA;AAAA,UACF;AAAA,UAEA,KAAK,UAAA,EAAY;AACf,YAAA,IAAA,CAAK,cAAA,CAAe,QAAA,GAAW,MAAA,CAAO,KAAK,CAAA;AAC3C,YAAA;AAAA,UACF;AAAA,UAEA,KAAK,OAAA,EAAS;AACZ,YAAA,IAAA,CAAK,cAAA,CAAe,KAAA,GAAQ,MAAA,CAAO,KAAK,CAAA;AACxC,YAAA;AAAA,UACF;AAAA,UAEA,KAAK,KAAA,EAAO;AACV,YAAA,IAAA,CAAK,cAAA,CAAe,GAAA,GAAM,MAAA,CAAO,KAAK,CAAA;AAEtC,YAAA,IAAA,CAAK,eAAe,QAAA,GAAW,IAAA;AAC/B,YAAA;AAAA,UACF;AAAA,UAEA,KAAK,mBAAA,EAAqB;AACxB,YAAA,IAAA,CAAK,cAAA,CAAe,iBAAA,GAAoB,MAAA,CAAO,KAAK,CAAA;AACpD,YAAA;AAAA,UACF;AAAA,UAEA,KAAK,cAAA,EAAgB;AACnB,YAAA,IAAA,CAAK,eAAe,YAAA,GAAe,KAAA;AACnC,YAAA;AAAA,UACF;AAAA,UAEA,KAAK,eAAA,EAAiB;AACpB,YAAA,IAAA,CAAK,eAAe,aAAA,GAAgB,KAAA;AACpC,YAAA;AAAA,UACF;AAAA,UAEA;AACE,YAAA,MAAA,CAAO,IAAA,CAAK,gDAAgD,SAAS,CAAA;AAErE,YAAA,OAAO,KAAA;AAAA;AAGX,QAAA,OAAO,IAAA;AAAA,MACT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,eAAe,WAAA,EACf;AACE,QAAA,IAAA,CAAK,cAAc,WAAA,CAAY,IAAI,CAAA,CAAE,WAAA,CAAY,EAAE,CAAA,GAAI,WAAA;AACvD,QAAA,IAAA,CAAK,KAAK,gBAAA,EAAkB;AAAA,UAC1B;AAAA,SACD,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,mBAAmB,WAAA,EACnB;AACE,QAAA,OAAO,KAAK,aAAA,CAAc,WAAA,CAAY,IAAI,CAAA,CAAE,YAAY,EAAE,CAAA;AAC1D,QAAA,IAAA,CAAK,KAAK,sBAAA,EAAwB;AAAA,UAChC;AAAA,SACD,CAAA;AAAA,MACH;AAAA;AAAA;AAAA;AAAA,MAKA,UAAU,MAAA,EACV;AACE,QAAA,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,EAAE,CAAA,GAAI,MAAA;AAAA,MAC7B;AAAA;AAAA;AAAA;AAAA,MAKA,cAAc,MAAA,EACd;AACE,QAAA,OAAO,IAAA,CAAK,QAAA,CAAS,MAAA,CAAO,EAAE,CAAA;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,CAAW,SAAS,IAAA,EACpB;AACE,QAAA,IAAA,CAAK,WAAA,CAAY,OAAO,CAAA,GAAI,OAAA;AAC5B,QAAA,IAAA,CAAK,IAAA,CAAK,cAAc,IAAI,CAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAKA,UAAA,CAAW,SAAS,IAAA,EACpB;AACE,QAAA,IAAA,CAAK,WAAA,CAAY,OAAO,CAAA,GAAI,OAAA;AAC5B,QAAA,IAAA,CAAK,IAAA,CAAK,cAAc,IAAI,CAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAKA,eAAe,OAAA,EACf;AACE,QAAA,OAAO,IAAA,CAAK,YAAY,OAAO,CAAA;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA,MAKA,aAAA,CAAc,SAAS,IAAA,EACvB;AACE,QAAA,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,EAAE,CAAA,GAAI,OAAA;AAC7B,QAAA,IAAA,CAAK,IAAA,CAAK,iBAAiB,IAAI,CAAA;AAAA,MACjC;AAAA;AAAA;AAAA;AAAA,MAKA,kBAAkB,OAAA,EAClB;AACE,QAAA,OAAO,IAAA,CAAK,SAAA,CAAU,OAAA,CAAQ,EAAE,CAAA;AAAA,MAClC;AAAA;AAAA;AAAA;AAAA,MAKA,WAAW,IAAA,EACX;AACE,QAAA,IAAA,CAAK,IAAA,CAAK,cAAc,IAAI,CAAA;AAAA,MAC9B;AAAA;AAAA;AAAA;AAAA,MAKA,aAAa,IAAA,EACb;AACE,QAAA,IAAA,CAAK,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAAA,MAChC;AAAA;AAAA;AAAA;AAAA,MAKA,mBAAmB,IAAA,EACnB;AACE,QAAA,IAAA,CAAK,IAAA,CAAK,sBAAsB,IAAI,CAAA;AAAA,MACtC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,eAAe,OAAA,EACf;AACE,QAAA,MAAM,SAAS,OAAA,CAAQ,MAAA;AAGvB,QAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,IAAA,KAAS,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA,IAC9C,OAAA,CAAQ,IAAA,CAAK,IAAA,KAAS,IAAA,CAAK,QAAA,CAAS,IAAI,IAAA,EAC5C;AACE,UAAA,MAAA,CAAO,MAAM,kCAAkC,CAAA;AAC/C,UAAA,IAAI,OAAA,CAAQ,MAAA,KAAW,OAAA,CAAQ,GAAA,EAC/B;AACE,YAAA,OAAA,CAAQ,SAAS,GAAG,CAAA;AAAA,UACtB;AAEA,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,OAAA,CAAQ,IAAA,CAAK,MAAA,KAAW,OAAA,CAAQ,IAAA,EACpC;AACE,UAAA,OAAA,CAAQ,SAAS,GAAG,CAAA;AAEpB,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,YAAA,CAAa,gBAAA,CAAiB,IAAA,EAAM,OAAO,CAAA,EAC/C;AACE,UAAA;AAAA,QACF;AAGA,QAAA,IAAI,MAAA,KAAW,QAAQ,MAAA,EACvB;AAEE,UAAA,IAAI,YAAA,CAAa,uBAAA,CAAwB,IAAA,EAAM,IAAA,CAAK,YAAY,OAAO,CAAA;AAAA,QAEzE,WACS,MAAA,KAAW,OAAA,CAAQ,GAAA,IAAO,MAAA,KAAW,QAAQ,MAAA,EACtD;AAEE,UAAA,IAAI,YAAA,CAAa,0BAAA,CAA2B,IAAA,EAAM,IAAA,CAAK,YAAY,OAAO,CAAA;AAAA,QAE5E;AAOA,QAAA,IAAI,MAAA,KAAW,QAAQ,OAAA,EACvB;AACE,UAAA,IAAI,IAAA,CAAK,SAAA,CAAU,YAAY,CAAA,CAAE,WAAW,CAAA,EAC5C;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,YAAA;AAAA,UACF;AAEA,UAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAI,CAAA;AAEhC,UAAA,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,QAC/B,CAAA,MAAA,IACS,MAAA,KAAW,OAAA,CAAQ,OAAA,EAC5B;AACE,UAAA,IAAI,IAAA,CAAK,SAAA,CAAU,YAAY,CAAA,CAAE,WAAW,CAAA,EAC5C;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,YAAA;AAAA,UACF;AACA,UAAA,MAAM,OAAA,GAAU,IAAI,OAAA,CAAQ,IAAI,CAAA;AAEhC,UAAA,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,QAC/B,CAAA,MAAA,IACS,MAAA,KAAW,OAAA,CAAQ,SAAA,EAC5B;AACE,UAAA,IAAI,IAAA,CAAK,SAAA,CAAU,cAAc,CAAA,CAAE,WAAW,CAAA,EAC9C;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,YAAA;AAAA,UACF;AAAA,QACF,CAAA,MAAA,IACS,MAAA,KAAW,OAAA,CAAQ,MAAA,EAC5B;AAEE,UAAA,IAAI,CAAC,QAAQ,MAAA,IAAU,IAAA,CAAK,UAAU,eAAe,CAAA,CAAE,WAAW,CAAA,EAClE;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAEjB,YAAA;AAAA,UACF;AAAA,QACF;AAEA,QAAA,IAAI,MAAA;AACJ,QAAA,IAAI,OAAA;AAGJ,QAAA,IAAI,CAAC,QAAQ,MAAA,EACb;AACE,UAAA,QAAQ,MAAA;AACR,YACE,KAAK,OAAA,CAAQ,MAAA;AACX,cAAA,IAAI,OAAO,iBAAA,EACX;AACE,gBAAA,IAAI,OAAA,CAAQ,SAAA,CAAU,UAAU,CAAA,EAChC;AACE,kBAAA,MAAM,WAAW,OAAA,CAAQ,QAAA;AAEzB,kBAAA,MAAA,GAAS,IAAA,CAAK,WAAA;AAAA,oBACZ,QAAA,CAAS,OAAA;AAAA,oBAAS,QAAA,CAAS,QAAA;AAAA,oBAAU,QAAA,CAAS;AAAA,mBAAM;AACtD,kBAAA,IAAI,MAAA,EACJ;AACE,oBAAA,OAAA,GAAU,MAAA,CAAO,KAAA;AACjB,oBAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,EAAQ,EACrB;AACE,sBAAA,OAAA,CAAQ,eAAe,OAAO,CAAA;AAAA,oBAChC,CAAA,MAEA;AACE,sBAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,oBACnB;AAAA,kBACF,CAAA,MAEA;AACE,oBAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,kBACnB;AAAA,gBACF,CAAA,MAEA;AACE,kBAAA,OAAA,GAAU,IAAI,WAAW,IAAI,CAAA;AAC7B,kBAAA,OAAA,CAAQ,cAAc,OAAO,CAAA;AAAA,gBAC/B;AAAA,cACF,CAAA,MAEA;AACE,gBAAA,MAAA,CAAO,KAAK,6CAA6C,CAAA;AACzD,gBAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,cACnB;AACA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,GAAA;AAEX,cAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,MAAA;AACX,cAAA,OAAA,GAAU,IAAA,CAAK,aAAa,OAAO,CAAA;AACnC,cAAA,IAAI,OAAA,EACJ;AACE,gBAAA,OAAA,CAAQ,eAAe,OAAO,CAAA;AAAA,cAChC,CAAA,MAEA;AACE,gBAAA,MAAA,CAAO,MAAM,oDAAoD,CAAA;AAAA,cACnE;AACA,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,GAAA;AAKX,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,MAAA;AAEX,cAAA,IAAA,CAAK,KAAK,UAAA,EAAY;AAAA,gBACpB,OAAQ,OAAA,CAAQ,KAAA;AAAA,gBAChB;AAAA,eACD,CAAA;AACD,cAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,cAAA;AAAA,YACF,KAAK,OAAA,CAAQ,SAAA;AACX,cAAA,QAAA,CAAS,aAAA,CAAc,SAAS,MAChC;AACE,gBAAA,IAAA,CAAK,KAAK,cAAA,EAAgB;AAAA,kBACxB,OAAQ,OAAA,CAAQ,KAAA;AAAA,kBAChB;AAAA,iBACD,CAAA;AAAA,cACH,CAAC,CAAA;AACD,cAAA;AAAA,YACF;AACE,cAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AACjB,cAAA;AAAA;AACJ,QACF,CAAA,MAGA;AACE,UAAA,MAAA,GAAS,KAAK,WAAA,CAAY,OAAA,CAAQ,SAAS,OAAA,CAAQ,QAAA,EAAU,QAAQ,MAAM,CAAA;AAE3E,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,MAAA,CAAO,eAAe,OAAO,CAAA;AAAA,UAC/B,CAAA,MAAA,IACS,MAAA,KAAW,OAAA,CAAQ,MAAA,EAC5B;AACE,YAAA,OAAA,GAAU,IAAA,CAAK,aAAa,OAAO,CAAA;AACnC,YAAA,IAAI,OAAA,EACJ;AACE,cAAA,OAAA,CAAQ,eAAe,OAAO,CAAA;AAAA,YAChC,CAAA,MAEA;AACE,cAAA,MAAA,CAAO,MAAM,yDAAyD,CAAA;AACtE,cAAA,OAAA,CAAQ,KAAA,CAAM,KAAK,6BAA6B,CAAA;AAAA,YAClD;AAAA,UACF,CAAA,MAAA,IAOS,MAAA,KAAW,OAAA,CAAQ,GAAA,EAC5B;AACE,YAAA,OAAA,CAAQ,MAAM,GAAG,CAAA;AAAA,UACnB;AAAA,QACF;AAAA,MACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MASA,YAAA,CAAa,EAAE,OAAA,EAAS,QAAA,EAAU,QAAO,EACzC;AACE,QAAA,MAAM,aAAa,OAAA,GAAU,QAAA;AAC7B,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,UAAU,CAAA;AAC1C,QAAA,MAAM,aAAa,OAAA,GAAU,MAAA;AAC7B,QAAA,MAAM,QAAA,GAAW,IAAA,CAAK,SAAA,CAAU,UAAU,CAAA;AAE1C,QAAA,IAAI,QAAA,EACJ;AACE,UAAA,OAAO,QAAA;AAAA,QACT,WACS,QAAA,EACT;AACE,UAAA,OAAO,QAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA,OAAO,IAAA;AAAA,QACT;AAAA,MACF;AAAA;AAAA;AAAA;AAAA,MAKA,WAAA,CAAY,OAAA,EAAS,QAAA,EAAU,MAAA,EAC/B;AACE,QAAA,IAAI,EAAA,GAAK,UAAU,QAAA,GAAW,MAAA;AAC9B,QAAA,IAAI,MAAA,GAAS,IAAA,CAAK,QAAA,CAAS,EAAE,CAAA;AAE7B,QAAA,IAAI,MAAA,EACJ;AACE,UAAA,OAAO,MAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA,EAAA,GAAK,UAAU,MAAA,GAAS,QAAA;AACxB,UAAA,MAAA,GAAS,IAAA,CAAK,SAAS,EAAE,CAAA;AACzB,UAAA,IAAI,MAAA,EACJ;AACE,YAAA,OAAO,MAAA;AAAA,UACT,CAAA,MAEA;AACE,YAAA,OAAO,IAAA;AAAA,UACT;AAAA,QACF;AAAA,MACF;AAAA,MAEA,YAAY,aAAA,EACZ;AAGE,QAAA,MAAA,CAAO,IAAA,CAAK,IAAA,CAAK,cAAA,EAAgB,aAAa,CAAA;AAK9C,QAAA,IAAI,IAAA,CAAK,cAAA,CAAe,YAAA,KAAiB,CAAA,EACzC;AACE,UAAA,IAAA,CAAK,eAAe,YAAA,GAAe,GAAA;AAAA,QACrC;AAGA,QAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,WAAA,EACzB;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,WAAA,GAAc,KAAA,CAAM,OAAA,EAAQ;AAAA,QAClD;AAGA,QAAA,IAAA,CAAK,cAAA,CAAe,QAAA,GAAW,KAAA,CAAM,iBAAA,CAAkB,CAAC,CAAA;AAGxD,QAAA,MAAM,eAAA,GAAkB,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,KAAA,EAAM;AAEtD,QAAA,eAAA,CAAgB,IAAA,GAAO,IAAA;AACvB,QAAA,IAAA,CAAK,eAAe,eAAA,GAAkB,eAAA,CAAgB,UAAS,CAAE,OAAA,CAAQ,UAAU,EAAE,CAAA;AAGrF,QAAA,IACA;AACE,UAAA,IAAA,CAAK,UAAA,GAAa,IAAI,SAAA,CAAU,IAAA,CAAK,eAAe,OAAA,EAAS;AAAA;AAAA,YAE3D,YAAA,EAAe,KAAK,cAAA,CAAe,gCAAA;AAAA,YACnC,YAAA,EAAe,KAAK,cAAA,CAAe;AAAA,WACpC,CAAA;AAGD,UAAA,IAAA,CAAK,UAAA,CAAW,YAAA,GAAe,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA;AAC9D,UAAA,IAAA,CAAK,UAAA,CAAW,SAAA,GAAY,kBAAA,CAAmB,IAAA,CAAK,IAAI,CAAA;AACxD,UAAA,IAAA,CAAK,UAAA,CAAW,YAAA,GAAe,qBAAA,CAAsB,IAAA,CAAK,IAAI,CAAA;AAC9D,UAAA,IAAA,CAAK,UAAA,CAAW,MAAA,GAAS,eAAA,CAAgB,IAAA,CAAK,IAAI,CAAA;AAAA,QACpD,SACO,KAAA,EACP;AACE,UAAA,MAAA,CAAO,KAAK,KAAK,CAAA;AACjB,UAAA,MAAM,IAAI,UAAA,CAAW,kBAAA,CAAmB,SAAA,EAAW,IAAA,CAAK,eAAe,OAAO,CAAA;AAAA,QAChF;AAGA,QAAA,OAAO,KAAK,cAAA,CAAe,OAAA;AAI3B,QAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,kBAAA,EACzB;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,kBAAA,GAAqB,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,IAAA;AAAA,QACnE;AAIA,QAAA,IAAI,CAAC,IAAA,CAAK,cAAA,CAAe,gBAAA,EACzB;AACE,UAAA,MAAM,gBAAA,GAAmB,IAAA,CAAK,cAAA,CAAe,GAAA,CAAI,KAAA,EAAM;AAEvD,UAAA,gBAAA,CAAiB,IAAA,GAAO,IAAA;AACxB,UAAA,gBAAA,CAAiB,WAAA,EAAY;AAC7B,UAAA,gBAAA,CAAiB,YAAA,EAAa;AAC9B,UAAA,IAAA,CAAK,eAAe,gBAAA,GAAmB,gBAAA;AAAA,QACzC;AAGA,QAAA,IAAA,CAAK,eAAe,iBAAA,IAAqB,GAAA;AAGzC,QAAA,IAAI,IAAA,CAAK,eAAe,WAAA,EACxB;AACE,UAAA,IAAA,CAAK,cAAA,CAAe,QAAA,GAAW,IAAA,CAAK,cAAA,CAAe,WAAA,CAAY,IAAA;AAAA,QACjE,CAAA,MAIA;AACE,UAAA,IAAA,CAAK,eAAe,WAAA,GAAc,IAAI,GAAA,CAAI,KAAA,EAAO,MAAM,iBAAA,CAAkB,CAAC,CAAA,EAAG,IAAA,CAAK,eAAe,QAAA,EAAU,IAAA,EAAM,EAAE,SAAA,EAAW,MAAM,CAAA;AAAA,QACtI;AAEA,QAAA,IAAA,CAAK,QAAA,GAAW;AAAA,UACd,QAAA,EAAY,IAAA;AAAA,UACZ,SAAA,EAAY,IAAA;AAAA,UACZ,GAAA,EAAY,KAAK,cAAA,CAAe,WAAA;AAAA,UAChC,QAAA,CAAS,OAAA,GAAU,EAAC,EACpB;AACE,YAAA,MAAM,SAAA,GAAY,QAAQ,SAAA,IAAa,IAAA;AACvC,YAAA,MAAM,QAAA,GAAW,QAAQ,QAAA,IAAY,IAAA;AACrC,YAAA,IAAI,OAAA,GAAU,GAAA;AAEd,YAAA,IAAI,SAAA,EACJ;AACE,cAAA,OAAA,IAAW,KAAK,SAAA,IAAa,8CAAA;AAAA,YAC/B,CAAA,MAEA;AACE,cAAA,OAAA,IAAW,IAAA,CAAK,QAAA,IAAY,IAAA,CAAK,GAAA,CAAI,QAAA,EAAS;AAAA,YAChD;AAEA,YAAA,IAAI,aAAa,SAAA,GAAY,CAAC,KAAK,SAAA,GAAY,CAAC,KAAK,QAAA,CAAA,EACrD;AACE,cAAA,OAAA,IAAW,KAAA;AAAA,YACb;AAEA,YAAA,OAAA,IAAW,GAAA;AAEX,YAAA,OAAO,OAAA;AAAA,UACT;AAAA,SACF;AAGA,QAAA,MAAM,mBAAA,GAAsB;AAAA,UAC1B,oBAAA;AAAA,UAAsB,UAAA;AAAA,UAAY,OAAA;AAAA,UAAS,KAAA;AAAA,UAAO,mBAAA;AAAA,UAAqB,cAAA;AAAA,UAAgB,UAAA;AAAA,UAAY;AAAA,SACrG;AAEA,QAAA,KAAA,MAAW,SAAA,IAAa,KAAK,cAAA,EAC7B;AACE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,IAAA,CAAK,cAAA,EAAgB,SAAS,CAAA,EACvE;AACE,YAAA,IAAI,mBAAA,CAAoB,OAAA,CAAQ,SAAS,CAAA,KAAM,EAAA,EAC/C;AACE,cAAA,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,cAAA,EAAgB,SAAA,EAAW;AAAA,gBACpD,QAAA,EAAe,IAAA;AAAA,gBACf,YAAA,EAAe;AAAA,eAChB,CAAA;AAAA,YACH,CAAA,MAEA;AACE,cAAA,MAAA,CAAO,cAAA,CAAe,IAAA,CAAK,cAAA,EAAgB,SAAA,EAAW;AAAA,gBACpD,QAAA,EAAe,KAAA;AAAA,gBACf,YAAA,EAAe;AAAA,eAChB,CAAA;AAAA,YACH;AAAA,UACF;AAAA,QACF;AAEA,QAAA,MAAA,CAAO,MAAM,4CAA4C,CAAA;AACzD,QAAA,KAAA,MAAW,SAAA,IAAa,KAAK,cAAA,EAC7B;AAEE,UAAA,IAAI,OAAO,SAAA,CAAU,cAAA,CAAe,KAAK,MAAA,CAAO,QAAA,EAAU,SAAS,CAAA,EACnE;AACE,YAAA,QAAQ,SAAA;AACR,cACE,KAAK,KAAA;AAAA,cACL,KAAK,kBAAA;AACH,gBAAA,MAAA,CAAO,KAAA,CAAM,KAAK,SAAS,CAAA,EAAA,EAAK,KAAK,cAAA,CAAe,SAAS,CAAC,CAAA,CAAE,CAAA;AAChE,gBAAA;AAAA,cACF,KAAK,UAAA;AAAA,cACL,KAAK,KAAA;AAAA,cACL,KAAK,mBAAA;AACH,gBAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAA,EAAK,SAAS,CAAA,WAAA,CAAa,CAAA;AACxC,gBAAA;AAAA,cACF;AACE,gBAAA,MAAA,CAAO,KAAA,CAAM,CAAA,EAAA,EAAK,SAAS,CAAA,EAAA,EAAK,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,cAAA,CAAe,SAAS,CAAC,CAAC,CAAA,CAAE,CAAA;AAAA;AACpF,UACF;AAAA,QACF;AAEA,QAAA;AAAA,MACF;AAAA,KACF;AAOA,IAAA,SAAS,sBAAsB,IAAA,EAC/B;AACE,MAAA,IAAA,CAAK,IAAA,CAAK,cAAc,IAAI,CAAA;AAAA,IAC9B;AAGA,IAAA,SAAS,mBAAmB,IAAA,EAC5B;AACE,MAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,kBAAA,EACvB;AACE,QAAA;AAAA,MACF;AAEA,MAAA,IAAA,CAAK,UAAU,CAAA,CAAE,YAAA;AACjB,MAAA,IAAA,CAAK,MAAA,GAAS,IAAA;AAEd,MAAA,IAAA,CAAK,IAAA,CAAK,aAAa,IAAI,CAAA;AAE3B,MAAA,IAAI,IAAA,CAAK,kBAAkB,QAAA,EAC3B;AACE,QAAA,IAAA,CAAK,aAAa,QAAA,EAAS;AAAA,MAC7B;AAAA,IACF;AAGA,IAAA,SAAS,sBAAsB,IAAA,EAC/B;AAEE,MAAA,MAAM,mBAAA,GAAsB,CAAE,MAAA,EAAQ,KAAA,EAAO,QAAQ,KAAM,CAAA;AAE3D,MAAA,KAAA,MAAW,QAAQ,mBAAA,EACnB;AACE,QAAA,KAAA,MAAW,EAAA,IAAM,IAAA,CAAK,aAAA,CAAc,IAAI,CAAA,EACxC;AACE,UAAA,IAAI,MAAA,CAAO,UAAU,cAAA,CAAe,IAAA,CAAK,KAAK,aAAA,CAAc,IAAI,CAAA,EAAG,EAAE,CAAA,EACrE;AACE,YAAA,IAAA,CAAK,aAAA,CAAc,IAAI,CAAA,CAAE,EAAE,EAAE,gBAAA,EAAiB;AAAA,UAChD;AAAA,QACF;AAAA,MACF;AAEA,MAAA,IAAA,CAAK,IAAA,CAAK,gBAAgB,IAAI,CAAA;AAG9B,MAAA,IAAA,CAAK,aAAa,iBAAA,EAAkB;AAEpC,MAAA,IAAI,IAAA,CAAK,OAAA,KAAY,CAAA,CAAE,kBAAA,EACvB;AACE,QAAA,IAAA,CAAK,UAAU,CAAA,CAAE,gBAAA;AACjB,QAAA,IAAA,CAAK,SAAS,CAAA,CAAE,aAAA;AAAA,MAClB;AAAA,IACF;AAGA,IAAA,SAAS,gBAAgB,IAAA,EACzB;AACE,MAAA,MAAM,YAAY,IAAA,CAAK,SAAA;AACvB,MAAA,IAAI,UAAU,IAAA,CAAK,OAAA;AAEnB,MAAA,OAAA,GAAU,MAAA,CAAO,YAAA,CAAa,OAAA,EAAS,IAAI,CAAA;AAE3C,MAAA,IAAI,CAAC,OAAA,EACL;AACE,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,KAAK,OAAA,KAAY,CAAA,CAAE,kBAAA,IACnB,OAAA,YAAmB,WAAW,eAAA,EAClC;AACE,QAAA;AAAA,MACF;AAGA,MAAA,IAAI,CAAC,WAAA,CAAY,OAAA,EAAS,IAAA,EAAM,SAAS,CAAA,EACzC;AACE,QAAA;AAAA,MACF;AAEA,MAAA,IAAI,OAAA,YAAmB,WAAW,eAAA,EAClC;AACE,QAAA,OAAA,CAAQ,SAAA,GAAY,SAAA;AACpB,QAAA,IAAA,CAAK,eAAe,OAAO,CAAA;AAAA,MAC7B,CAAA,MAAA,IACS,OAAA,YAAmB,UAAA,CAAW,gBAAA,EACvC;AAME,QAAA,IAAI,WAAA;AAEJ,QAAA,QAAQ,QAAQ,MAAA;AAChB,UACE,KAAK,OAAA,CAAQ,MAAA;AACX,YAAA,WAAA,GAAc,IAAA,CAAK,aAAA,CAAc,GAAA,CAAI,OAAA,CAAQ,UAAU,CAAA;AACvD,YAAA,IAAI,WAAA,EACJ;AACE,cAAA,WAAA,CAAY,gBAAgB,OAAO,CAAA;AAAA,YACrC;AACA,YAAA;AAAA,UACF,KAAK,OAAA,CAAQ,GAAA;AAEX,YAAA;AAAA,UACF;AACE,YAAA,WAAA,GAAc,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,OAAA,CAAQ,UAAU,CAAA;AACxD,YAAA,IAAI,WAAA,EACJ;AACE,cAAA,WAAA,CAAY,gBAAgB,OAAO,CAAA;AAAA,YACrC;AACA,YAAA;AAAA;AACJ,MACF;AAAA,IACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;ACtoCA,IAAA,0BAAA,GAAA,UAAA,CAAA;AAAA,EAAA,oFAAA,CAAAZ,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,MAAA,GAAS,cAAA,EAAA;AACf,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAEhB,IAAA,IAAM,MAAA,GAAS,IAAI,MAAA,CAAO,oBAAoB,CAAA;AAE9C,IAAA,MAAA,CAAO,OAAA,GAAU,MAAM,kBAAA,CACvB;AAAA,MACE,YAAY,GAAA,EACZ;AACE,QAAA,MAAA,CAAO,KAAA,CAAM,oBAAoB,GAAG,CAAA;AAEpC,QAAA,IAAA,CAAK,IAAA,GAAO,GAAA;AACZ,QAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAChB,QAAA,IAAA,CAAK,cAAA,GAAiB,IAAA;AACtB,QAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AAEX,QAAA,MAAM,UAAA,GAAa,OAAA,CAAQ,KAAA,CAAM,GAAA,EAAK,aAAa,CAAA;AAEnD,QAAA,IAAI,eAAe,EAAA,EACnB;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,uBAAA,EAA0B,GAAG,CAAA,CAAE,CAAA;AAC3C,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAE,CAAA;AAAA,QAChD,WACS,UAAA,CAAW,MAAA,KAAW,KAAA,IAAS,UAAA,CAAW,WAAW,IAAA,EAC9D;AACE,UAAA,MAAA,CAAO,IAAA,CAAK,CAAA,8BAAA,EAAiC,UAAA,CAAW,MAAM,CAAA,CAAE,CAAA;AAChE,UAAA,MAAM,IAAI,SAAA,CAAU,CAAA,kBAAA,EAAqB,GAAG,CAAA,CAAE,CAAA;AAAA,QAChD,CAAA,MAEA;AACE,UAAA,IAAA,CAAK,QAAA,GAAW,CAAA,IAAA,EAAO,UAAA,CAAW,IAAI,CAAA,EAAG,UAAA,CAAW,IAAA,GAAO,CAAA,CAAA,EAAI,UAAA,CAAW,IAAI,CAAA,CAAA,GAAK,EAAE,CAAA,aAAA,CAAA;AACrF,UAAA,IAAA,CAAK,cAAA,GAAiB,UAAA,CAAW,MAAA,CAAO,WAAA,EAAY;AAAA,QACtD;AAAA,MACF;AAAA,MAEA,IAAI,aAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,cAAA;AAAA,MACd;AAAA,MAEA,IAAI,cAAc,KAAA,EAClB;AACE,QAAA,IAAA,CAAK,cAAA,GAAiB,MAAM,WAAA,EAAY;AAAA,MAC1C;AAAA,MAEA,IAAI,OAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,QAAA;AAAA,MACd;AAAA,MAEA,IAAI,GAAA,GACJ;AACE,QAAA,OAAO,IAAA,CAAK,IAAA;AAAA,MACd;AAAA,MAEA,OAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,WAAW,CAAA;AAExB,QAAA,IAAI,IAAA,CAAK,aAAY,EACrB;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,UAAA,EAAa,IAAA,CAAK,IAAI,CAAA,qBAAA,CAAuB,CAAA;AAE1D,UAAA;AAAA,QACF,CAAA,MAAA,IACS,IAAA,CAAK,YAAA,EAAa,EAC3B;AACE,UAAA,MAAA,CAAO,KAAA,CAAM,CAAA,UAAA,EAAa,IAAA,CAAK,IAAI,CAAA,cAAA,CAAgB,CAAA;AAEnD,UAAA;AAAA,QACF;AAEA,QAAA,IAAI,KAAK,GAAA,EACT;AACE,UAAA,IAAA,CAAK,UAAA,EAAW;AAAA,QAClB;AAEA,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA,wBAAA,EAA2B,IAAA,CAAK,IAAI,CAAA,CAAE,CAAA;AAEnD,QAAA,IACA;AACE,UAAA,IAAA,CAAK,GAAA,GAAM,IAAI,SAAA,CAAU,IAAA,CAAK,MAAM,KAAK,CAAA;AAEzC,UAAA,IAAA,CAAK,IAAI,UAAA,GAAa,aAAA;AAEtB,UAAA,IAAA,CAAK,GAAA,CAAI,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,KAAK,IAAI,CAAA;AACxC,UAAA,IAAA,CAAK,GAAA,CAAI,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,KAAK,IAAI,CAAA;AAC1C,UAAA,IAAA,CAAK,GAAA,CAAI,SAAA,GAAY,IAAA,CAAK,UAAA,CAAW,KAAK,IAAI,CAAA;AAC9C,UAAA,IAAA,CAAK,GAAA,CAAI,OAAA,GAAU,IAAA,CAAK,QAAA,CAAS,KAAK,IAAI,CAAA;AAAA,QAC5C,SACO,KAAA,EACP;AACE,UAAA,IAAA,CAAK,SAAS,KAAK,CAAA;AAAA,QACrB;AAAA,MACF;AAAA,MAEA,UAAA,GACA;AACE,QAAA,MAAA,CAAO,MAAM,cAAc,CAAA;AAE3B,QAAA,IAAI,KAAK,GAAA,EACT;AAEE,UAAA,IAAA,CAAK,GAAA,CAAI,SAAS,MAAM;AAAA,UAAC,CAAA;AACzB,UAAA,IAAA,CAAK,GAAA,CAAI,UAAU,MAAM;AAAA,UAAC,CAAA;AAC1B,UAAA,IAAA,CAAK,GAAA,CAAI,YAAY,MAAM;AAAA,UAAC,CAAA;AAC5B,UAAA,IAAA,CAAK,GAAA,CAAI,UAAU,MAAM;AAAA,UAAC,CAAA;AAE1B,UAAA,IAAA,CAAK,IAAI,KAAA,EAAM;AACf,UAAA,IAAA,CAAK,GAAA,GAAM,IAAA;AAAA,QACb;AAAA,MACF;AAAA,MAEA,KAAK,OAAA,EACL;AACE,QAAA,MAAA,CAAO,MAAM,QAAQ,CAAA;AAErB,QAAA,IAAI,IAAA,CAAK,aAAY,EACrB;AACE,UAAA,IAAA,CAAK,GAAA,CAAI,KAAK,OAAO,CAAA;AAErB,UAAA,OAAO,IAAA;AAAA,QACT,CAAA,MAEA;AACE,UAAA,MAAA,CAAO,KAAK,+CAA+C,CAAA;AAE3D,UAAA,OAAO,KAAA;AAAA,QACT;AAAA,MACF;AAAA,MAEA,WAAA,GACA;AACE,QAAA,OAAO,KAAK,GAAA,IAAO,IAAA,CAAK,GAAA,CAAI,UAAA,KAAe,KAAK,GAAA,CAAI,IAAA;AAAA,MACtD;AAAA,MAEA,YAAA,GACA;AACE,QAAA,OAAO,KAAK,GAAA,IAAO,IAAA,CAAK,GAAA,CAAI,UAAA,KAAe,KAAK,GAAA,CAAI,UAAA;AAAA,MACtD;AAAA;AAAA;AAAA;AAAA,MAOA,OAAA,GACA;AACE,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA,UAAA,EAAa,IAAA,CAAK,IAAI,CAAA,UAAA,CAAY,CAAA;AAE/C,QAAA,IAAA,CAAK,SAAA,EAAU;AAAA,MACjB;AAAA,MAEA,QAAA,CAAS,EAAE,QAAA,EAAU,IAAA,EAAM,QAAO,EAClC;AACE,QAAA,MAAA,CAAO,KAAA,CAAM,CAAA,UAAA,EAAa,IAAA,CAAK,IAAI,CAAA,OAAA,CAAS,CAAA;AAE5C,QAAA,IAAI,aAAa,KAAA,EACjB;AACE,UAAA,MAAA,CAAO,MAAM,gCAAgC,CAAA;AAAA,QAC/C;AAEA,QAAA,IAAA,CAAK,YAAA,CAAa,CAAC,QAAA,EAAU,IAAA,EAAM,MAAM,CAAA;AAAA,MAC3C;AAAA,MAEA,UAAA,CAAW,EAAE,IAAA,EAAK,EAClB;AACE,QAAA,MAAA,CAAO,MAAM,4BAA4B,CAAA;AAEzC,QAAA,IAAA,CAAK,OAAO,IAAI,CAAA;AAAA,MAClB;AAAA,MAEA,SAAS,CAAA,EACT;AACE,QAAA,MAAA,CAAO,IAAA,CAAK,CAAA,UAAA,EAAa,IAAA,CAAK,IAAI,YAAY,CAAC,CAAA;AAAA,MACjD;AAAA,KACF;AAAA,EAAA;AAAA,CAAA,CAAA;;;AChLA,IAAA,aAAA,GAAA,UAAA,CAAA;AAAA,EAAA,uEAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAAA,IAAA,IAAM,GAAA,GAAM,eAAA,EAAA;AACZ,IAAA,IAAM,CAAA,GAAI,iBAAA,EAAA;AACV,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AACnB,IAAA,IAAM,KAAA,GAAQ,aAAA,EAAA;AACd,IAAA,IAAM,EAAA,GAAK,UAAA,EAAA;AACX,IAAA,IAAM,GAAA,GAAM,WAAA,EAAA;AACZ,IAAA,IAAM,cAAA,GAAiB,sBAAA,EAAA;AACvB,IAAA,IAAM,OAAA,GAAU,eAAA,EAAA;AAChB,IAAA,IAAM,kBAAA,GAAqB,0BAAA,EAAA;AAC3B,IAAA,IAAM,KAAA,GAAQ,cAAiB,OAAO,CAAA;AACtC,IAAA,IAAM,UAAA,GAAa,kBAAA,EAAA;AAEnB,IAAA,KAAA,CAAM,YAAA,EAAc,IAAI,OAAO,CAAA;AAK/B,IAAA,MAAA,CAAO,OAAA,GAAU;AAAA,MACf,CAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,EAAA;AAAA,MACA,GAAA;AAAA,MACA,cAAA;AAAA,MACA,kBAAA;AAAA,MACA,OAAA;AAAA,MACA,UAAA;AAAA;AAAA,MAEA,KAAA,EAAQ,WAAA,EAAA;AAAA,MACR,IAAI,IAAA,GAAO;AAAE,QAAA,OAAO,GAAA,CAAI,KAAA;AAAA,MAAO,CAAA;AAAA,MAC/B,IAAI,OAAA,GAAU;AAAE,QAAA,OAAO,GAAA,CAAI,OAAA;AAAA,MAAS;AAAA,KACtC;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC/BA,IAAA,qBAAA,GAAA,UAAA,CAAA;AAAA,EAAA,kFAAA,CAAAA,SAAA,EAAA,MAAA,EAAA;AAEA,IAAA,IAAI,GAAA,GAAM,OAAO,SAAA,CAAU,cAAA;AAA3B,IAAA,IACI,MAAA,GAAS,GAAA;AASb,IAAA,SAAS,MAAA,GAAS;AAAA,IAAC;AASnB,IAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,MAAA,MAAA,CAAO,SAAA,mBAAY,MAAA,CAAO,MAAA,CAAO,IAAI,CAAA;AAMrC,MAAA,IAAI,CAAC,IAAI,MAAA,EAAO,CAAE,WAAW,MAAA,GAAS,KAAA;AAAA,IACxC;AAWA,IAAA,SAAS,EAAA,CAAG,EAAA,EAAI,OAAA,EAAS,IAAA,EAAM;AAC7B,MAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AACV,MAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,MAAA,IAAA,CAAK,OAAO,IAAA,IAAQ,KAAA;AAAA,IACtB;AAaA,IAAA,SAAS,WAAA,CAAY,OAAA,EAAS,KAAA,EAAO,EAAA,EAAI,SAAS,IAAA,EAAM;AACtD,MAAA,IAAI,OAAO,OAAO,UAAA,EAAY;AAC5B,QAAA,MAAM,IAAI,UAAU,iCAAiC,CAAA;AAAA,MACvD;AAEA,MAAA,IAAI,QAAA,GAAW,IAAI,EAAA,CAAG,EAAA,EAAI,OAAA,IAAW,OAAA,EAAS,IAAI,CAAA,EAC9C,GAAA,GAAM,MAAA,GAAS,MAAA,GAAS,KAAA,GAAQ,KAAA;AAEpC,MAAA,IAAI,CAAC,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA,UAAW,OAAA,CAAQ,GAAG,CAAA,GAAI,QAAA,EAAU,OAAA,CAAQ,YAAA,EAAA;AAAA,WAAA,IAC3D,CAAC,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA,CAAE,EAAA,EAAI,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA,CAAE,IAAA,CAAK,QAAQ,CAAA;AAAA,WAChE,OAAA,CAAQ,QAAQ,GAAG,CAAA,GAAI,CAAC,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA,EAAG,QAAQ,CAAA;AAE3D,MAAA,OAAO,OAAA;AAAA,IACT;AASA,IAAA,SAAS,UAAA,CAAW,SAAS,GAAA,EAAK;AAChC,MAAA,IAAI,EAAE,OAAA,CAAQ,YAAA,KAAiB,GAAG,OAAA,CAAQ,OAAA,GAAU,IAAI,MAAA,EAAO;AAAA,WAC1D,OAAO,OAAA,CAAQ,OAAA,CAAQ,GAAG,CAAA;AAAA,IACjC;AASA,IAAA,SAASY,aAAAA,GAAe;AACtB,MAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,EAAO;AAC1B,MAAA,IAAA,CAAK,YAAA,GAAe,CAAA;AAAA,IACtB;AASA,IAAAA,aAAAA,CAAa,SAAA,CAAU,UAAA,GAAa,SAAS,UAAA,GAAa;AACxD,MAAA,IAAI,KAAA,GAAQ,EAAC,EACT,MAAA,EACA,IAAA;AAEJ,MAAA,IAAI,IAAA,CAAK,YAAA,KAAiB,CAAA,EAAG,OAAO,KAAA;AAEpC,MAAA,KAAK,IAAA,IAAS,MAAA,GAAS,IAAA,CAAK,OAAA,EAAU;AACpC,QAAA,IAAI,GAAA,CAAI,IAAA,CAAK,MAAA,EAAQ,IAAI,CAAA,EAAG,KAAA,CAAM,IAAA,CAAK,MAAA,GAAS,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,GAAI,IAAI,CAAA;AAAA,MACtE;AAEA,MAAA,IAAI,OAAO,qBAAA,EAAuB;AAChC,QAAA,OAAO,KAAA,CAAM,MAAA,CAAO,MAAA,CAAO,qBAAA,CAAsB,MAAM,CAAC,CAAA;AAAA,MAC1D;AAEA,MAAA,OAAO,KAAA;AAAA,IACT,CAAA;AASA,IAAAA,aAAAA,CAAa,SAAA,CAAU,SAAA,GAAY,SAAS,UAAU,KAAA,EAAO;AAC3D,MAAA,IAAI,GAAA,GAAM,SAAS,MAAA,GAAS,KAAA,GAAQ,OAChC,QAAA,GAAW,IAAA,CAAK,QAAQ,GAAG,CAAA;AAE/B,MAAA,IAAI,CAAC,QAAA,EAAU,OAAO,EAAC;AACvB,MAAA,IAAI,QAAA,CAAS,EAAA,EAAI,OAAO,CAAC,SAAS,EAAE,CAAA;AAEpC,MAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,QAAA,CAAS,MAAA,EAAQ,EAAA,GAAK,IAAI,KAAA,CAAM,CAAC,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAClE,QAAA,EAAA,CAAG,CAAC,CAAA,GAAI,QAAA,CAAS,CAAC,CAAA,CAAE,EAAA;AAAA,MACtB;AAEA,MAAA,OAAO,EAAA;AAAA,IACT,CAAA;AASA,IAAAA,aAAAA,CAAa,SAAA,CAAU,aAAA,GAAgB,SAAS,cAAc,KAAA,EAAO;AACnE,MAAA,IAAI,GAAA,GAAM,SAAS,MAAA,GAAS,KAAA,GAAQ,OAChC,SAAA,GAAY,IAAA,CAAK,QAAQ,GAAG,CAAA;AAEhC,MAAA,IAAI,CAAC,WAAW,OAAO,CAAA;AACvB,MAAA,IAAI,SAAA,CAAU,IAAI,OAAO,CAAA;AACzB,MAAA,OAAO,SAAA,CAAU,MAAA;AAAA,IACnB,CAAA;AASA,IAAAA,aAAAA,CAAa,SAAA,CAAU,IAAA,GAAO,SAAS,IAAA,CAAK,OAAO,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI;AACrE,MAAA,IAAI,GAAA,GAAM,MAAA,GAAS,MAAA,GAAS,KAAA,GAAQ,KAAA;AAEpC,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,GAAG,GAAG,OAAO,KAAA;AAE/B,MAAA,IAAI,SAAA,GAAY,KAAK,OAAA,CAAQ,GAAG,GAC5B,GAAA,GAAM,SAAA,CAAU,QAChB,IAAA,EACA,CAAA;AAEJ,MAAA,IAAI,UAAU,EAAA,EAAI;AAChB,QAAA,IAAI,SAAA,CAAU,MAAM,IAAA,CAAK,cAAA,CAAe,OAAO,SAAA,CAAU,EAAA,EAAI,QAAW,IAAI,CAAA;AAE5E,QAAA,QAAQ,GAAA;AAAK,UACX,KAAK,CAAA;AAAG,YAAA,OAAO,SAAA,CAAU,EAAA,CAAG,IAAA,CAAK,SAAA,CAAU,OAAO,CAAA,EAAG,IAAA;AAAA,UACrD,KAAK,CAAA;AAAG,YAAA,OAAO,UAAU,EAAA,CAAG,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,EAAE,CAAA,EAAG,IAAA;AAAA,UACzD,KAAK,CAAA;AAAG,YAAA,OAAO,UAAU,EAAA,CAAG,IAAA,CAAK,UAAU,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA,EAAG,IAAA;AAAA,UAC7D,KAAK,CAAA;AAAG,YAAA,OAAO,SAAA,CAAU,GAAG,IAAA,CAAK,SAAA,CAAU,SAAS,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,IAAA;AAAA,UACjE,KAAK,CAAA;AAAG,YAAA,OAAO,SAAA,CAAU,GAAG,IAAA,CAAK,SAAA,CAAU,SAAS,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,IAAA;AAAA,UACrE,KAAK,CAAA;AAAG,YAAA,OAAO,SAAA,CAAU,EAAA,CAAG,IAAA,CAAK,SAAA,CAAU,OAAA,EAAS,IAAI,EAAA,EAAI,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA,EAAG,IAAA;AAAA;AAG3E,QAAA,KAAK,CAAA,GAAI,CAAA,EAAG,IAAA,GAAO,IAAI,KAAA,CAAM,MAAK,CAAC,CAAA,EAAG,CAAA,GAAI,GAAA,EAAK,CAAA,EAAA,EAAK;AAClD,UAAA,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA;AAAA,QAC3B;AAEA,QAAA,SAAA,CAAU,EAAA,CAAG,KAAA,CAAM,SAAA,CAAU,OAAA,EAAS,IAAI,CAAA;AAAA,MAC5C,CAAA,MAAO;AACL,QAAA,IAAI,MAAA,GAAS,UAAU,MAAA,EACnB,CAAA;AAEJ,QAAA,KAAK,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AAC3B,UAAA,IAAI,SAAA,CAAU,CAAC,CAAA,CAAE,IAAA,EAAM,IAAA,CAAK,cAAA,CAAe,KAAA,EAAO,SAAA,CAAU,CAAC,CAAA,CAAE,EAAA,EAAI,MAAA,EAAW,IAAI,CAAA;AAElF,UAAA,QAAQ,GAAA;AAAK,YACX,KAAK,CAAA;AAAG,cAAA,SAAA,CAAU,CAAC,CAAA,CAAE,EAAA,CAAG,KAAK,SAAA,CAAU,CAAC,EAAE,OAAO,CAAA;AAAG,cAAA;AAAA,YACpD,KAAK,CAAA;AAAG,cAAA,SAAA,CAAU,CAAC,EAAE,EAAA,CAAG,IAAA,CAAK,UAAU,CAAC,CAAA,CAAE,SAAS,EAAE,CAAA;AAAG,cAAA;AAAA,YACxD,KAAK,CAAA;AAAG,cAAA,SAAA,CAAU,CAAC,EAAE,EAAA,CAAG,IAAA,CAAK,UAAU,CAAC,CAAA,CAAE,OAAA,EAAS,EAAA,EAAI,EAAE,CAAA;AAAG,cAAA;AAAA,YAC5D,KAAK,CAAA;AAAG,cAAA,SAAA,CAAU,CAAC,CAAA,CAAE,EAAA,CAAG,IAAA,CAAK,SAAA,CAAU,CAAC,CAAA,CAAE,OAAA,EAAS,EAAA,EAAI,EAAA,EAAI,EAAE,CAAA;AAAG,cAAA;AAAA,YAChE;AACE,cAAA,IAAI,CAAC,IAAA,EAAM,KAAK,CAAA,GAAI,CAAA,EAAG,IAAA,GAAO,IAAI,KAAA,CAAM,GAAA,GAAK,CAAC,CAAA,EAAG,CAAA,GAAI,KAAK,CAAA,EAAA,EAAK;AAC7D,gBAAA,IAAA,CAAK,CAAA,GAAI,CAAC,CAAA,GAAI,SAAA,CAAU,CAAC,CAAA;AAAA,cAC3B;AAEA,cAAA,SAAA,CAAU,CAAC,EAAE,EAAA,CAAG,KAAA,CAAM,UAAU,CAAC,CAAA,CAAE,SAAS,IAAI,CAAA;AAAA;AACpD,QACF;AAAA,MACF;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAWA,IAAAA,cAAa,SAAA,CAAU,EAAA,GAAK,SAAS,EAAA,CAAG,KAAA,EAAO,IAAI,OAAA,EAAS;AAC1D,MAAA,OAAO,WAAA,CAAY,IAAA,EAAM,KAAA,EAAO,EAAA,EAAI,SAAS,KAAK,CAAA;AAAA,IACpD,CAAA;AAWA,IAAAA,cAAa,SAAA,CAAU,IAAA,GAAO,SAAS,IAAA,CAAK,KAAA,EAAO,IAAI,OAAA,EAAS;AAC9D,MAAA,OAAO,WAAA,CAAY,IAAA,EAAM,KAAA,EAAO,EAAA,EAAI,SAAS,IAAI,CAAA;AAAA,IACnD,CAAA;AAYA,IAAAA,aAAAA,CAAa,UAAU,cAAA,GAAiB,SAAS,eAAe,KAAA,EAAO,EAAA,EAAI,SAAS,IAAA,EAAM;AACxF,MAAA,IAAI,GAAA,GAAM,MAAA,GAAS,MAAA,GAAS,KAAA,GAAQ,KAAA;AAEpC,MAAA,IAAI,CAAC,IAAA,CAAK,OAAA,CAAQ,GAAG,GAAG,OAAO,IAAA;AAC/B,MAAA,IAAI,CAAC,EAAA,EAAI;AACP,QAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AACpB,QAAA,OAAO,IAAA;AAAA,MACT;AAEA,MAAA,IAAI,SAAA,GAAY,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAEhC,MAAA,IAAI,UAAU,EAAA,EAAI;AAChB,QAAA,IACE,SAAA,CAAU,EAAA,KAAO,EAAA,KAChB,CAAC,IAAA,IAAQ,SAAA,CAAU,IAAA,CAAA,KACnB,CAAC,OAAA,IAAW,SAAA,CAAU,OAAA,KAAY,OAAA,CAAA,EACnC;AACA,UAAA,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA,QACtB;AAAA,MACF,CAAA,MAAO;AACL,QAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,MAAA,GAAS,EAAC,EAAG,SAAS,SAAA,CAAU,MAAA,EAAQ,CAAA,GAAI,MAAA,EAAQ,CAAA,EAAA,EAAK;AACvE,UAAA,IACE,UAAU,CAAC,CAAA,CAAE,EAAA,KAAO,EAAA,IACnB,QAAQ,CAAC,SAAA,CAAU,CAAC,CAAA,CAAE,QACtB,OAAA,IAAW,SAAA,CAAU,CAAC,CAAA,CAAE,YAAY,OAAA,EACrC;AACA,YAAA,MAAA,CAAO,IAAA,CAAK,SAAA,CAAU,CAAC,CAAC,CAAA;AAAA,UAC1B;AAAA,QACF;AAKA,QAAA,IAAI,MAAA,CAAO,MAAA,EAAQ,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA,GAAI,MAAA,CAAO,MAAA,KAAW,CAAA,GAAI,MAAA,CAAO,CAAC,CAAA,GAAI,MAAA;AAAA,aACpE,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA,MAC3B;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AASA,IAAAA,aAAAA,CAAa,SAAA,CAAU,kBAAA,GAAqB,SAAS,mBAAmB,KAAA,EAAO;AAC7E,MAAA,IAAI,GAAA;AAEJ,MAAA,IAAI,KAAA,EAAO;AACT,QAAA,GAAA,GAAM,MAAA,GAAS,SAAS,KAAA,GAAQ,KAAA;AAChC,QAAA,IAAI,KAAK,OAAA,CAAQ,GAAG,CAAA,EAAG,UAAA,CAAW,MAAM,GAAG,CAAA;AAAA,MAC7C,CAAA,MAAO;AACL,QAAA,IAAA,CAAK,OAAA,GAAU,IAAI,MAAA,EAAO;AAC1B,QAAA,IAAA,CAAK,YAAA,GAAe,CAAA;AAAA,MACtB;AAEA,MAAA,OAAO,IAAA;AAAA,IACT,CAAA;AAKA,IAAAA,aAAAA,CAAa,SAAA,CAAU,GAAA,GAAMA,aAAAA,CAAa,SAAA,CAAU,cAAA;AACpD,IAAAA,aAAAA,CAAa,SAAA,CAAU,WAAA,GAAcA,aAAAA,CAAa,SAAA,CAAU,EAAA;AAK5D,IAAAA,cAAa,QAAA,GAAW,MAAA;AAKxB,IAAAA,cAAa,YAAA,GAAeA,aAAAA;AAK5B,IAAA,IAAI,WAAA,KAAgB,OAAO,MAAA,EAAQ;AACjC,MAAA,MAAA,CAAO,OAAA,GAAUA,aAAAA;AAAA,IACnB;AAAA,EAAA;AAAA,CAAA,CAAA;;;AC1UA,IAAA,YAAA,GAAkB,OAAA,CAAA,aAAA,EAAA,CAAA;;;ACLlB,IAAA,YAAA,GAAyB,OAAA,CAAA,qBAAA,EAAA,EAAA,CAAA,CAAA;AAGzB,IAAO,wBAAQ,YAAA,CAAAA,OAAAA;;;AC4IR,IAAM,aAAA,GAAN,cAA4B,KAAA,CAAM;AAAA,EACrC,WAAA,CACI,OAAA,EACO,IAAA,EACA,OAAA,EACT;AACE,IAAA,KAAA,CAAM,OAAO,CAAA;AAHN,IAAA,IAAA,CAAA,IAAA,GAAA,IAAA;AACA,IAAA,IAAA,CAAA,OAAA,GAAA,OAAA;AAGP,IAAA,IAAA,CAAK,IAAA,GAAO,eAAA;AAAA,EAChB;AACJ;AAEO,IAAM,mBAAA,GAAN,cAAkC,aAAA,CAAc;AAAA,EACnD,WAAA,CAAY,SAAiB,OAAA,EAAe;AACxC,IAAA,KAAA,CAAM,OAAA,EAAS,cAAc,OAAO,CAAA;AACpC,IAAA,IAAA,CAAK,IAAA,GAAO,qBAAA;AAAA,EAChB;AACJ;AAEO,IAAM,SAAA,GAAN,cAAwB,aAAA,CAAc;AAAA,EACzC,WAAA,CAAY,SAAiB,OAAA,EAAe;AACxC,IAAA,KAAA,CAAM,OAAA,EAAS,cAAc,OAAO,CAAA;AACpC,IAAA,IAAA,CAAK,IAAA,GAAO,WAAA;AAAA,EAChB;AACJ;AAEO,IAAM,eAAA,GAAN,cAA8B,aAAA,CAAc;AAAA,EAC/C,WAAA,CAAY,SAAiB,OAAA,EAAe;AACxC,IAAA,KAAA,CAAM,OAAA,EAAS,oBAAoB,OAAO,CAAA;AAC1C,IAAA,IAAA,CAAK,IAAA,GAAO,iBAAA;AAAA,EAChB;AACJ;;;ACvJO,IAAM,uBAAN,MAAmD;AAAA,EAKtD,WAAA,CAAY,UAAkB,UAAA,EAAqB;AAJnD,IAAA,IAAA,CAAQ,WAAA,GAAqC,IAAA;AAKzC,IAAA,IAAA,CAAK,QAAA,GAAW,QAAA;AAChB,IAAA,IAAI,cAAA,GAAiB,EAAA;AACrB,IAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,EAAK;AAC/C,MAAA,cAAA,GAAiB,OAAA,CAAQ,IAAI,wBAAA,IAA4B,EAAA;AAAA,IAC7D;AACA,IAAA,IAAA,CAAK,aAAa,UAAA,IAAc,cAAA;AAAA,EACpC;AAAA,EAEA,MAAM,aAAa,MAAA,EAA6C;AAC5D,IAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAC7B,MAAA,MAAM,IAAI,oBAAoB,mDAAmD,CAAA;AAAA,IACrF;AAEA,IAAA,IAAI;AACA,MAAA,MAAM,WAAW,MAAM,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,UAAU,CAAA,oBAAA,CAAA,EAAwB;AAAA,QACnE,MAAA,EAAQ,KAAA;AAAA,QACR,OAAA,EAAS;AAAA,UACL,eAAA,EAAiB,CAAA,OAAA,EAAU,IAAA,CAAK,QAAQ,CAAA,CAAA;AAAA,UACxC,cAAA,EAAgB,kBAAA;AAAA,UAChB,QAAA,EAAU;AAAA,SACd;AAAA,QACA,WAAA,EAAa;AAAA,OAChB,CAAA;AAED,MAAA,IAAI,CAAC,SAAS,EAAA,EAAI;AACd,QAAA,IAAI,QAAA,CAAS,MAAA,KAAW,GAAA,IAAO,QAAA,CAAS,WAAW,GAAA,EAAK;AACpD,UAAA,MAAM,IAAI,mBAAA;AAAA,YACN,+CAAA;AAAA,YACA,EAAE,MAAA,EAAQ,QAAA,CAAS,MAAA;AAAO,WAC9B;AAAA,QACJ;AACA,QAAA,MAAM,IAAI,mBAAA;AAAA,UACN,CAAA,iCAAA,EAAoC,SAAS,MAAM,CAAA,CAAA;AAAA,UACnD,EAAE,MAAA,EAAQ,QAAA,CAAS,MAAA;AAAO,SAC9B;AAAA,MACJ;AAEA,MAAA,MAAM,IAAA,GAAyB,MAAM,QAAA,CAAS,IAAA,EAAK;AACnD,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA,CAAK,gBAAA,CAAiB,IAAI,CAAA;AAC7C,MAAA,OAAO,IAAA,CAAK,WAAA;AAAA,IAChB,SAAS,KAAA,EAAO;AACZ,MAAA,IAAI,iBAAiB,mBAAA,EAAqB;AACtC,QAAA,MAAM,KAAA;AAAA,MACV;AACA,MAAA,MAAM,IAAI,mBAAA;AAAA,QACN,CAAA,uBAAA,EAA0B,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,eAAe,CAAA,CAAA;AAAA,QAClF,EAAE,eAAe,KAAA;AAAM,OAC3B;AAAA,IACJ;AAAA,EACJ;AAAA,EAEA,MAAM,kBAAA,GAA8C;AAEhD,IAAA,OAAO,IAAA,CAAK,aAAa,EAAE,IAAA,EAAM,aAAa,QAAA,EAAU,IAAA,CAAK,UAAU,CAAA;AAAA,EAC3E;AAAA,EAEA,eAAA,GAA2B;AACvB,IAAA,OAAO,KAAK,WAAA,KAAgB,IAAA;AAAA,EAChC;AAAA,EAEQ,iBAAiB,IAAA,EAAwC;AAC7D,IAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,KAAA;AAClC,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,MAAA;AACpC,IAAA,MAAM,WAAW,IAAA,CAAK,QAAA;AACtB,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,SAAA;AAC1C,IAAA,MAAM,aAAa,IAAA,CAAK,UAAA;AACxB,IAAA,MAAM,SAAA,GAAY,IAAA,CAAK,UAAA,IAAc,IAAA,CAAK,SAAA;AAE1C,IAAA,IAAI,CAAC,KAAA,IAAS,CAAC,MAAA,EAAQ;AACnB,MAAA,MAAM,IAAI,mBAAA;AAAA,QACN;AAAA,OACJ;AAAA,IACJ;AAEA,IAAA,OAAO;AAAA,MACH,KAAA;AAAA,MACA,MAAA;AAAA,MACA,UAAU,QAAA,IAAY,EAAA;AAAA,MACtB,SAAA;AAAA,MACA,UAAA;AAAA,MACA;AAAA,KACJ;AAAA,EACJ;AACJ,CAAA;AAMO,IAAM,gCAAN,MAA4D;AAAA,EAA5D,WAAA,GAAA;AACH,IAAA,IAAA,CAAQ,WAAA,GAAqC,IAAA;AAAA,EAAA;AAAA,EAE7C,MAAM,aAAa,MAAA,EAA6C;AAC5D,IAAA,IAAI,MAAA,CAAO,SAAS,QAAA,EAAU;AAC1B,MAAA,MAAM,IAAI,oBAAoB,4DAA4D,CAAA;AAAA,IAC9F;AAEA,IAAA,IAAA,CAAK,WAAA,GAAc;AAAA,MACf,OAAO,MAAA,CAAO,KAAA;AAAA,MACd,QAAQ,MAAA,CAAO,MAAA;AAAA,MACf,UAAU,MAAA,CAAO;AAAA,KACrB;AAEA,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EAChB;AAAA,EAEA,eAAA,GAA2B;AACvB,IAAA,OAAO,KAAK,WAAA,KAAgB,IAAA;AAAA,EAChC;AACJ,CAAA;AAOA,IAAM,eAAA,GAAkB,6BAAA;AACxB,IAAM,cAAA,GAAiB,eAAA;AACvB,IAAM,gBAAA,GAAmB,MAAA;AAElB,IAAM,wBAAN,MAAoD;AAAA,EAApD,WAAA,GAAA;AACH,IAAA,IAAA,CAAQ,WAAA,GAAqC,IAAA;AAAA,EAAA;AAAA,EAE7C,MAAM,aAAa,MAAA,EAA6C;AAC5D,IAAA,IAAI,MAAA,CAAO,SAAS,WAAA,EAAa;AAC7B,MAAA,MAAM,IAAI,oBAAoB,oDAAoD,CAAA;AAAA,IACtF;AAEA,IAAA,MAAM,YAAY,MAAA,CAAO,SAAA;AACzB,IAAA,MAAM,QAAA,GAAW,OAAO,QAAA,IAAY,gBAAA;AACpC,IAAA,MAAM,KAAA,GAAQ,eAAA;AACd,IAAA,MAAM,SAAA,GAAY,OAAO,SAAA,IAAa,cAAA;AAEtC,IAAA,MAAM,MAAA,GAAS,CAAA,IAAA,EAAO,SAAS,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAE5C,IAAA,IAAA,CAAK,WAAA,GAAc;AAAA,MACf,KAAA;AAAA,MACA,MAAA;AAAA,MACA,QAAA;AAAA,MACA,SAAA;AAAA,MACA,UAAA,EAAY,CAAC,EAAE,SAAA,EAAW,WAAA,EAAa,OAAO,SAAS,CAAA,CAAA,EAAI,SAAA,EAAW,IAAA,EAAM;AAAA,KAChF;AAEA,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EAChB;AAAA,EAEA,eAAA,GAA2B;AACvB,IAAA,OAAO,KAAK,WAAA,KAAgB,IAAA;AAAA,EAChC;AACJ,CAAA;AAKO,SAAS,mBAAmB,MAAA,EAAkC;AACjE,EAAA,QAAQ,OAAO,IAAA;AAAM,IACjB,KAAK,WAAA;AACD,MAAA,OAAO,IAAI,oBAAA,CAAqB,MAAA,CAAO,QAAA,EAAU,OAAO,UAAU,CAAA;AAAA,IACtE,KAAK,QAAA;AACD,MAAA,OAAO,IAAI,6BAAA,EAA8B;AAAA,IAC7C,KAAK,WAAA;AACD,MAAA,OAAO,IAAI,qBAAA,EAAsB;AAAA,IACrC;AACI,MAAA,MAAM,IAAI,oBAAoB,6BAA6B,CAAA;AAAA;AAEvE;;;ACxLO,SAAS,gBAAA,CAAiB,OAAe,SAAA,EAA2B;AAEvE,EAAA,IAAI,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAGrC,EAAA,IAAI,OAAA,CAAQ,UAAU,CAAA,EAAG;AACrB,IAAA,OAAO,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA,EACtC;AAGA,EAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AACzB,IAAA,OAAA,GAAU,KAAA,GAAQ,OAAA,CAAQ,SAAA,CAAU,CAAC,CAAA;AACrC,IAAA,OAAO,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA,EACtC;AAGA,EAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,KAAK,CAAA,EAAG;AAC3B,IAAA,OAAO,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AAAA,EACtC;AAGA,EAAA,OAAA,GAAU,KAAA,GAAQ,OAAA;AAClB,EAAA,OAAO,CAAA,IAAA,EAAO,OAAO,CAAA,CAAA,EAAI,SAAS,CAAA,CAAA;AACtC;AAKO,SAAS,oBAAA,CACZ,KAAA,EACA,WAAA,GAAsB,KAAA,EAChB;AACN,EAAA,IAAI,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AAGrC,EAAA,IAAI,OAAA,CAAQ,UAAU,CAAA,EAAG;AACrB,IAAA,OAAO,OAAA;AAAA,EACX;AAGA,EAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,GAAG,CAAA,EAAG;AACzB,IAAA,OAAO,WAAA,GAAc,OAAA,CAAQ,SAAA,CAAU,CAAC,CAAA;AAAA,EAC5C;AAGA,EAAA,IAAI,OAAA,CAAQ,UAAA,CAAW,WAAW,CAAA,EAAG;AACjC,IAAA,OAAO,OAAA;AAAA,EACX;AAGA,EAAA,OAAO,WAAA,GAAc,OAAA;AACzB;AAKO,SAAS,wBAAwB,MAAA,EAAwB;AAC5D,EAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,cAAc,CAAA;AACzC,EAAA,OAAO,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,GAAI,MAAA;AAC9B;AAKO,SAAS,kBAAA,CAAmB,KAAA,EAAe,SAAA,GAAoB,CAAA,EAAY;AAC9E,EAAA,MAAM,OAAA,GAAU,KAAA,CAAM,OAAA,CAAQ,KAAA,EAAO,EAAE,CAAA;AACvC,EAAA,OAAO,QAAQ,MAAA,IAAU,SAAA;AAC7B;;;ACvDO,IAAM,cAAN,MAAkC;AAAA,EAgBrC,WAAA,CACI,OAAA,EACA,SAAA,EACA,YAAA,EACA,gBACA,MAAA,EACF;AApBF,IAAA,IAAA,CAAO,MAAA,GAAqB,MAAA;AAI5B,IAAA,IAAA,CAAO,QAAA,GAAmB,CAAA;AAK1B;AAAA,IAAA,IAAA,CAAQ,QAAA,GAAoB,KAAA;AAC5B,IAAA,IAAA,CAAQ,iBAAA,GAAwC,IAAA;AAW5C,IAAA,IAAA,CAAK,EAAA,GAAK,KAAK,cAAA,EAAe;AAC9B,IAAA,IAAA,CAAK,OAAA,GAAU,OAAA;AACf,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,IAAA,IAAA,CAAK,YAAA,GAAe,YAAA;AACpB,IAAA,IAAA,CAAK,cAAA,GAAiB,cAAA;AACtB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AAEd,IAAA,IAAA,CAAK,oBAAA,EAAqB;AAAA,EAC9B;AAAA,EAEQ,cAAA,GAAyB;AAC7B,IAAA,OAAO,CAAA,KAAA,EAAQ,IAAA,CAAK,GAAA,EAAK,IAAI,IAAA,CAAK,MAAA,EAAO,CAAE,QAAA,CAAS,EAAE,CAAA,CAAE,MAAA,CAAO,CAAA,EAAG,CAAC,CAAC,CAAA,CAAA;AAAA,EACxE;AAAA,EAEQ,oBAAA,GAA6B;AAEjC,IAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,UAAA,EAAY,CAAC,GAAA,KAAa;AACtC,MAAA,MAAM,IAAA,GAAO,IAAI,QAAA,EAAU,WAAA;AAC3B,MAAA,IAAI,IAAA,KAAS,GAAA,IAAO,IAAA,KAAS,GAAA,EAAK;AAC9B,QAAA,IAAA,CAAK,MAAA,GAAS,SAAA;AACd,QAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,cAAA,EAAgB,IAAI,CAAA;AAAA,MACzC;AAAA,IACJ,CAAC,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,WAAA,EAAa,MAAM;AAC/B,MAAA,IAAA,CAAK,MAAA,GAAS,SAAA;AACd,MAAA,IAAA,CAAK,SAAA,GAAY,KAAK,GAAA,EAAI;AAC1B,MAAA,IAAA,CAAK,kBAAA,EAAmB;AACxB,MAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,gBAAA,EAAkB,IAAI,CAAA;AAAA,IAC3C,CAAC,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,gBAAA,EAAkB,CAAC,GAAA,KAAa;AAC5C,MAAA,GAAA,CAAI,cAAA,CAAe,OAAA,GAAU,CAAC,KAAA,KAAe;AACzC,QAAA,IAAI,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA,EAAG;AACnC,UAAA,IAAA,CAAK,iBAAA,GAAoB,KAAA,CAAM,OAAA,CAAQ,CAAC,CAAA;AAAA,QAC5C;AAAA,MACJ,CAAA;AAAA,IACJ,CAAC,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,OAAA,EAAS,CAAC,GAAA,KAAa;AACnC,MAAA,IAAA,CAAK,aAAA,CAAc,KAAK,KAAK,CAAA;AAAA,IACjC,CAAC,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,QAAA,EAAU,CAAC,GAAA,KAAa;AACpC,MAAA,IAAA,CAAK,aAAA,CAAc,GAAA,EAAK,KAAA,IAAS,aAAa,CAAA;AAAA,IAClD,CAAC,CAAA;AAGD,IAAA,IAAA,CAAK,OAAA,CAAQ,EAAA,CAAG,UAAA,EAAY,CAAC,GAAA,KAAa;AACtC,MAAA,IAAA,CAAK,aAAA,CAAc,GAAA,EAAK,KAAA,IAAS,eAAe,CAAA;AAAA,IACpD,CAAC,CAAA;AAAA,EACL;AAAA,EAEQ,cAAc,MAAA,EAAuB;AACzC,IAAA,IAAA,CAAK,MAAA,GAAS,OAAA;AACd,IAAA,IAAA,CAAK,OAAA,GAAU,KAAK,GAAA,EAAI;AACxB,IAAA,IAAA,CAAK,iBAAA,EAAkB;AACvB,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AACzB,IAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAChB,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,YAAA,EAAc,IAAA,EAAM,MAAM,CAAA;AAAA,EAC/C;AAAA,EAEQ,kBAAA,GAA2B;AAC/B,IAAA,IAAA,CAAK,gBAAA,GAAmB,MAAA,CAAO,WAAA,CAAY,MAAM;AAC7C,MAAA,IAAI,KAAK,SAAA,EAAW;AAChB,QAAA,IAAA,CAAK,QAAA,GAAW,KAAK,KAAA,CAAA,CAAO,IAAA,CAAK,KAAI,GAAI,IAAA,CAAK,aAAa,GAAI,CAAA;AAAA,MACnE;AAAA,IACJ,GAAG,GAAI,CAAA;AAAA,EACX;AAAA,EAEQ,iBAAA,GAA0B;AAC9B,IAAA,IAAI,KAAK,gBAAA,EAAkB;AACvB,MAAA,aAAA,CAAc,KAAK,gBAAgB,CAAA;AACnC,MAAA,IAAA,CAAK,gBAAA,GAAmB,MAAA;AAAA,IAC5B;AAAA,EACJ;AAAA;AAAA,EAGA,IAAA,GAAa;AACT,IAAA,IAAI,IAAA,CAAK,OAAA,IAAW,CAAC,IAAA,CAAK,QAAA,EAAU;AAChC,MAAA,IAAA,CAAK,OAAA,CAAQ,IAAA,CAAK,EAAE,KAAA,EAAO,MAAM,CAAA;AACjC,MAAA,IAAA,CAAK,QAAA,GAAW,IAAA;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,MAAA,GAAe;AACX,IAAA,IAAI,IAAA,CAAK,OAAA,IAAW,IAAA,CAAK,QAAA,EAAU;AAC/B,MAAA,IAAA,CAAK,OAAA,CAAQ,MAAA,CAAO,EAAE,KAAA,EAAO,MAAM,CAAA;AACnC,MAAA,IAAA,CAAK,QAAA,GAAW,KAAA;AAAA,IACpB;AAAA,EACJ;AAAA,EAEA,MAAA,GAAe;AACX,IAAA,IAAI,KAAK,OAAA,EAAS;AACd,MAAA,IAAA,CAAK,QAAQ,SAAA,EAAU;AAAA,IAC3B;AAAA,EACJ;AAAA,EAEA,OAAA,GAAmB;AACf,IAAA,OAAO,IAAA,CAAK,QAAA;AAAA,EAChB;AAAA,EAEA,eAAA,GAAsC;AAClC,IAAA,OAAO,IAAA,CAAK,iBAAA;AAAA,EAChB;AAAA,EAEA,oBAAA,GAA+B;AAC3B,IAAA,MAAM,EAAA,GAAK,MAAA,CAAO,IAAA,CAAK,KAAA,CAAM,IAAA,CAAK,QAAA,GAAW,EAAE,CAAC,CAAA,CAAE,QAAA,CAAS,CAAA,EAAG,GAAG,CAAA;AACjE,IAAA,MAAM,EAAA,GAAK,OAAO,IAAA,CAAK,QAAA,GAAW,EAAE,CAAA,CAAE,QAAA,CAAS,GAAG,GAAG,CAAA;AACrD,IAAA,OAAO,CAAA,EAAG,EAAE,CAAA,CAAA,EAAI,EAAE,CAAA,CAAA;AAAA,EACtB;AAAA,EAEA,OAAA,GAAgB;AACZ,IAAA,IAAA,CAAK,iBAAA,EAAkB;AACvB,IAAA,IAAA,CAAK,OAAA,GAAU,IAAA;AACf,IAAA,IAAA,CAAK,iBAAA,GAAoB,IAAA;AAAA,EAC7B;AACJ;AAKO,IAAM,cAAN,MAAkB;AAAA,EAOrB,WAAA,CACI,WAAA,EACA,MAAA,EACA,UAAA,EACF;AAVF,IAAA,IAAA,CAAQ,EAAA,GAAiB,IAAA;AACzB;AAAA,IAAA,IAAA,CAAQ,WAAA,GAAkC,IAAA;AAUtC,IAAA,IAAA,CAAK,WAAA,GAAc,WAAA;AACnB,IAAA,IAAA,CAAK,MAAA,GAAS,MAAA;AACd,IAAA,IAAA,CAAK,UAAA,GAAa,UAAA;AAAA,EACtB;AAAA,EAEA,aAAa,EAAA,EAAe;AACxB,IAAA,IAAA,CAAK,EAAA,GAAK,EAAA;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,YAAA,CACF,YAAA,EACA,OAAA,EACoB;AACpB,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AACV,MAAA,MAAM,IAAI,UAAU,4BAA4B,CAAA;AAAA,IACpD;AAEA,IAAA,IAAI,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,WAAA,CAAY,WAAW,OAAA,EAAS;AACzD,MAAA,MAAM,IAAI,UAAU,+BAA+B,CAAA;AAAA,IACvD;AAEA,IAAA,IAAI;AAEA,MAAA,MAAM,UAAU,YAAA,CAAa,YAAA,CAAa,EAAE,KAAA,EAAO,MAAM,CAAA;AAGzD,MAAA,MAAM,SAAA,GAAY,OAAA,EAAS,SAAA,IAAa,IAAA,CAAK,mBAAA,EAAoB;AAGjE,MAAA,MAAM,SAAA,GAAY,IAAA,CAAK,aAAA,CAAc,IAAA,CAAK,YAAY,MAAM,CAAA;AAC5D,MAAA,MAAM,SAAA,GAAY,gBAAA,CAAiB,YAAA,EAAc,SAAS,CAAA;AAG1D,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,EAAA,CAAG,IAAA,CAAK,SAAA,EAAW;AAAA,QACpC,gBAAA,EAAkB,OAAA,EAAS,gBAAA,IAAoB,EAAE,OAAO,IAAA,EAAK;AAAA,QAC7D,QAAA,EAAU,KAAK,UAAA,CAAW;AAAA,OAC7B,CAAA;AAGD,MAAA,MAAM,OAAO,IAAI,WAAA;AAAA,QACb,OAAA;AAAA,QACA,UAAA;AAAA,QACA,YAAA;AAAA,QACA,SAAA;AAAA,QACA,IAAA,CAAK;AAAA,OACT;AAEA,MAAA,IAAA,CAAK,MAAA,GAAS,YAAA;AACd,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,MAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,eAAA,EAAiB,IAAI,CAAA;AAEtC,MAAA,OAAO,IAAA;AAAA,IACX,SAAS,KAAA,EAAO;AACZ,MAAA,MAAM,IAAI,SAAA;AAAA,QACN,CAAA,yBAAA,EAA4B,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,eAAe,CAAA,CAAA;AAAA,QACpF,EAAE,eAAe,KAAA;AAAM,OAC3B;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,WAAW,OAAA,EAA2B;AAClC,IAAA,IAAI,CAAC,OAAA,EAAS;AACV,MAAA,MAAM,IAAI,UAAU,qBAAqB,CAAA;AAAA,IAC7C;AAEA,IAAA,IAAI;AACA,MAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,eAAA,EAAiB,GAAA,EAAK,UAAS,IAAK,SAAA;AAC9D,MAAA,MAAM,SAAA,GAAY,KAAK,mBAAA,EAAoB;AAE3C,MAAA,OAAA,CAAQ,MAAA,CAAO;AAAA,QACX,gBAAA,EAAkB,EAAE,KAAA,EAAO,IAAA,EAAK;AAAA,QAChC,QAAA,EAAU,KAAK,UAAA,CAAW;AAAA,OAC7B,CAAA;AAED,MAAA,MAAM,OAAO,IAAI,WAAA;AAAA,QACb,OAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,SAAA;AAAA,QACA,IAAA,CAAK;AAAA,OACT;AAEA,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,MAAA,OAAO,IAAA;AAAA,IACX,SAAS,KAAA,EAAO;AACZ,MAAA,MAAM,IAAI,SAAA;AAAA,QACN,CAAA,uBAAA,EAA0B,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,eAAe,CAAA,CAAA;AAAA,QAClF,EAAE,eAAe,KAAA;AAAM,OAC3B;AAAA,IACJ;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,mBAAmB,OAAA,EAA2B;AAC1C,IAAA,MAAM,SAAA,GAAY,OAAA,CAAQ,eAAA,EAAiB,GAAA,EAAK,UAAS,IAAK,SAAA;AAC9D,IAAA,MAAM,SAAA,GAAY,KAAK,mBAAA,EAAoB;AAE3C,IAAA,MAAM,OAAO,IAAI,WAAA;AAAA,MACb,OAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,SAAA;AAAA,MACA,IAAA,CAAK;AAAA,KACT;AAEA,IAAA,IAAA,CAAK,MAAA,GAAS,SAAA;AACd,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AACnB,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,eAAA,EAAiB,IAAI,CAAA;AAEtC,IAAA,OAAO,IAAA;AAAA,EACX;AAAA,EAEA,cAAA,GAAqC;AACjC,IAAA,OAAO,IAAA,CAAK,WAAA;AAAA,EAChB;AAAA,EAEA,gBAAA,GAAyB;AACrB,IAAA,IAAI,KAAK,WAAA,EAAa;AAClB,MAAA,IAAA,CAAK,YAAY,OAAA,EAAQ;AACzB,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,IACvB;AAAA,EACJ;AAAA,EAEQ,mBAAA,GAA8B;AAElC,IAAA,IAAI,KAAK,WAAA,CAAY,UAAA,IAAc,KAAK,WAAA,CAAY,UAAA,CAAW,SAAS,CAAA,EAAG;AACvE,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,UAAA,CAAW,CAAC,CAAA,CAAE,SAAA;AAAA,IAC1C;AAEA,IAAA,OAAO,IAAA,CAAK,gBAAA,CAAiB,IAAA,CAAK,WAAA,CAAY,MAAM,CAAA;AAAA,EACxD;AAAA,EAEQ,iBAAiB,MAAA,EAAwB;AAC7C,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,cAAc,CAAA;AACzC,IAAA,OAAO,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,GAAI,SAAA;AAAA,EAC9B;AAAA,EAEQ,cAAc,MAAA,EAAwB;AAC1C,IAAA,MAAM,KAAA,GAAQ,MAAA,CAAO,KAAA,CAAM,QAAQ,CAAA;AACnC,IAAA,OAAO,KAAA,GAAQ,KAAA,CAAM,CAAC,CAAA,GAAI,EAAA;AAAA,EAC9B;AAAA,EAEA,OAAA,GAAgB;AACZ,IAAA,IAAA,CAAK,gBAAA,EAAiB;AACtB,IAAA,IAAA,CAAK,EAAA,GAAK,IAAA;AAAA,EACd;AACJ,CAAA;;;AL3TO,IAAM,WAAN,MAAe;AAAA,EAWlB,YAAY,MAAA,EAAwB;AAPpC,IAAA,IAAA,CAAQ,WAAA,GAAqC,IAAA;AAC7C,IAAA,IAAA,CAAQ,EAAA,GAAiB,IAAA;AACzB;AAAA,IAAA,IAAA,CAAQ,WAAA,GAAkC,IAAA;AAC1C,IAAA,IAAA,CAAQ,gBAAA,GAAqC,cAAA;AAC7C,IAAA,IAAA,CAAQ,UAAA,GAAqB,CAAA;AAC7B,IAAA,IAAA,CAAQ,UAAA,GAAqB,CAAA;AAGzB,IAAA,IAAA,CAAK,MAAA,GAAS;AAAA,MACV,mBAAA,EAAqB,IAAA;AAAA,MACrB,KAAA,EAAO,KAAA;AAAA,MACP,GAAG;AAAA,KACP;AAEA,IAAA,IAAA,CAAK,MAAA,GAAS,IAAI,qBAAA,EAAa;AAC/B,IAAA,IAAA,CAAK,YAAA,GAAe,kBAAA,CAAmB,MAAA,CAAO,IAAI,CAAA;AAGlD,IAAA,IAAI,IAAA,CAAK,OAAO,KAAA,EAAO;AACnB,MAAA,YAAA,CAAAE,OAAAA,CAAM,KAAA,CAAM,MAAA,CAAO,SAAS,CAAA;AAAA,IAChC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,UAAA,GAA4B;AAC9B,IAAA,IAAI;AAEA,MAAA,IAAA,CAAK,cAAc,MAAM,IAAA,CAAK,aAAa,YAAA,CAAa,IAAA,CAAK,OAAO,IAAI,CAAA;AAGxE,MAAA,MAAM,KAAK,mBAAA,EAAoB;AAG/B,MAAA,IAAA,CAAK,qBAAA,EAAsB;AAAA,IAE/B,SAAS,KAAA,EAAO;AACZ,MAAA,MAAM,YAAA,GAAe,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU,eAAA;AAC9D,MAAA,IAAA,CAAK,UAAU,IAAI,eAAA,CAAgB,CAAA,uBAAA,EAA0B,YAAY,EAAE,CAAC,CAAA;AAC5E,MAAA,MAAM,KAAA;AAAA,IACV;AAAA,EACJ;AAAA,EAEA,MAAc,mBAAA,GAAqC;AAC/C,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACnB,MAAA,MAAM,IAAI,gBAAgB,0BAA0B,CAAA;AAAA,IACxD;AAEA,IAAA,IAAI;AAEA,MAAA,MAAM,SAAS,IAAI,YAAA,CAAAA,QAAM,kBAAA,CAAmB,IAAA,CAAK,YAAY,KAAK,CAAA;AAGlE,MAAA,MAAM,QAAA,GAA6B;AAAA,QAC/B,UAAA,EAAY,IAAA,CAAK,MAAA,CAAO,WAAA,IAAe,KAAK,qBAAA;AAAsB,OACtE;AAGA,MAAA,MAAM,QAAA,GAAgB;AAAA,QAClB,GAAA,EAAK,KAAK,WAAA,CAAY,MAAA;AAAA,QACtB,QAAA,EAAU,KAAK,WAAA,CAAY,QAAA;AAAA,QAC3B,OAAA,EAAS,CAAC,MAAM,CAAA;AAAA,QAChB,QAAA,EAAU,IAAA;AAAA,QACV,YAAA,EAAc,KAAK,cAAA,EAAe;AAAA,QAClC,cAAA,EAAgB,KAAA;AAAA,QAChB,mBAAA,EAAqB,KAAA;AAAA,QACrB,QAAA;AAAA,QACA,WAAA,EAAa,KAAK,kBAAA;AAAmB,OACzC;AAGA,MAAA,IAAA,CAAK,EAAA,GAAK,IAAI,YAAA,CAAAA,OAAAA,CAAM,GAAG,QAAQ,CAAA;AAG/B,MAAA,IAAA,CAAK,sBAAA,EAAuB;AAG5B,MAAA,IAAA,CAAK,GAAG,KAAA,EAAM;AAAA,IAElB,SAAS,KAAA,EAAO;AACZ,MAAA,MAAM,IAAI,eAAA;AAAA,QACN,CAAA,iCAAA,EAAoC,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,eAAe,CAAA;AAAA,OAChG;AAAA,IACJ;AAAA,EACJ;AAAA,EAEQ,sBAAA,GAA+B;AACnC,IAAA,IAAI,CAAC,KAAK,EAAA,EAAI;AAEd,IAAA,IAAA,CAAK,EAAA,CAAG,EAAA,CAAG,WAAA,EAAa,MAAM;AAC1B,MAAA,IAAA,CAAK,gBAAA,GAAmB,WAAA;AACxB,MAAA,IAAA,CAAK,oBAAA,EAAqB;AAAA,IAC9B,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,EAAA,CAAG,EAAA,CAAG,cAAA,EAAgB,MAAM;AAC7B,MAAA,IAAA,CAAK,gBAAA,GAAmB,cAAA;AACxB,MAAA,IAAA,CAAK,oBAAA,EAAqB;AAAA,IAC9B,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,EAAA,CAAG,EAAA,CAAG,YAAA,EAAc,MAAM;AAC3B,MAAA,IAAA,CAAK,gBAAA,GAAmB,YAAA;AACxB,MAAA,IAAA,CAAK,UAAA,GAAa,CAAA;AAClB,MAAA,IAAA,CAAK,oBAAA,EAAqB;AAAA,IAC9B,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,EAAA,CAAG,EAAA,CAAG,oBAAA,EAAsB,CAAC,CAAA,KAAW;AACzC,MAAA,IAAA,CAAK,gBAAA,GAAmB,oBAAA;AACxB,MAAA,IAAA,CAAK,oBAAA,CAAqB,EAAE,KAAK,CAAA;AAGjC,MAAA,IAAI,IAAA,CAAK,UAAA,GAAa,IAAA,CAAK,UAAA,EAAY;AACnC,QAAA,IAAA,CAAK,UAAA,EAAA;AACL,QAAA,UAAA,CAAW,MAAM;AACb,UAAA,IAAA,CAAK,IAAI,QAAA,EAAS;AAAA,QACtB,GAAG,GAAI,CAAA;AAAA,MACX;AAAA,IACJ,CAAC,CAAA;AAED,IAAA,IAAA,CAAK,EAAA,CAAG,EAAA,CAAG,eAAA,EAAiB,CAAC,CAAA,KAAW;AACpC,MAAA,MAAM,UAAU,CAAA,CAAE,OAAA;AAElB,MAAA,IAAI,OAAA,CAAQ,cAAc,UAAA,EAAY;AAElC,QAAA,IAAA,CAAK,WAAA,EAAa,mBAAmB,OAAO,CAAA;AAAA,MAChD;AAAA,IACJ,CAAC,CAAA;AAAA,EACL;AAAA,EAEQ,qBAAA,GAA8B;AAClC,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACnB,MAAA,MAAM,IAAI,gBAAgB,2CAA2C,CAAA;AAAA,IACzE;AAEA,IAAA,MAAM,QAAA,GAA6B;AAAA,MAC/B,UAAA,EAAY,IAAA,CAAK,MAAA,CAAO,WAAA,IAAe,KAAK,qBAAA;AAAsB,KACtE;AAEA,IAAA,IAAA,CAAK,cAAc,IAAI,WAAA;AAAA,MACnB,IAAA,CAAK,WAAA;AAAA,MACL,IAAA,CAAK,MAAA;AAAA,MACL,EAAE,QAAA;AAAS,KACf;AAEA,IAAA,IAAA,CAAK,WAAA,CAAY,YAAA,CAAa,IAAA,CAAK,EAAE,CAAA;AAAA,EACzC;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,IAAA,CAAK,WAAA,EAAqB,OAAA,EAAsC;AAClE,IAAA,IAAI,CAAC,KAAK,WAAA,EAAa;AACnB,MAAA,MAAM,IAAI,UAAU,+CAA+C,CAAA;AAAA,IACvE;AAEA,IAAA,IAAI,IAAA,CAAK,qBAAqB,YAAA,EAAc;AACxC,MAAA,MAAM,IAAI,UAAU,8BAA8B,CAAA;AAAA,IACtD;AAEA,IAAA,OAAO,IAAA,CAAK,WAAA,CAAY,YAAA,CAAa,WAAA,EAAa,OAAO,CAAA;AAAA,EAC7D;AAAA;AAAA;AAAA;AAAA,EAKA,UAAA,GAAmB;AACf,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,WAAA,EAAa,cAAA,EAAe;AAErD,IAAA,IAAI,CAAC,WAAA,EAAa;AACd,MAAA,MAAM,IAAI,UAAU,4BAA4B,CAAA;AAAA,IACpD;AAEA,IAAA,IAAI,WAAA,CAAY,cAAc,SAAA,EAAW;AACrC,MAAA,MAAM,IAAI,UAAU,sCAAsC,CAAA;AAAA,IAC9D;AAAA,EAIJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAA,GAAe;AACX,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,WAAA,EAAa,cAAA,EAAe;AAErD,IAAA,IAAI,CAAC,WAAA,EAAa;AACd,MAAA,MAAM,IAAI,UAAU,2BAA2B,CAAA;AAAA,IACnD;AAEA,IAAA,WAAA,CAAY,MAAA,EAAO;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA,EAKA,cAAA,GAA8B;AAC1B,IAAA,OAAO,IAAA,CAAK,WAAA,EAAa,cAAA,EAAe,IAAK,IAAA;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA,EAKA,SAAA,GAA8B;AAC1B,IAAA,OAAO,IAAA,CAAK,gBAAA;AAAA,EAChB;AAAA;AAAA;AAAA;AAAA,EAKA,aAAA,GAA0B;AACtB,IAAA,IAAI,CAAC,IAAA,CAAK,WAAA,EAAa,UAAA,EAAY;AAC/B,MAAA,OAAO,EAAC;AAAA,IACZ;AACA,IAAA,OAAO,KAAK,WAAA,CAAY,UAAA,CAAW,GAAA,CAAI,CAAA,GAAA,KAAO,IAAI,SAAS,CAAA;AAAA,EAC/D;AAAA;AAAA;AAAA;AAAA,EAKA,EAAA,CAA4B,OAAU,OAAA,EAAoC;AACtE,IAAA,IAAA,CAAK,MAAA,CAAO,EAAA,CAAG,KAAA,EAAO,OAAc,CAAA;AAAA,EACxC;AAAA,EAEA,GAAA,CAA6B,OAAU,OAAA,EAAoC;AACvE,IAAA,IAAA,CAAK,MAAA,CAAO,GAAA,CAAI,KAAA,EAAO,OAAc,CAAA;AAAA,EACzC;AAAA,EAEA,IAAA,CAA8B,OAAU,OAAA,EAAoC;AACxE,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,KAAA,EAAO,OAAc,CAAA;AAAA,EAC1C;AAAA;AAAA;AAAA;AAAA,EAKA,OAAA,GAAgB;AACZ,IAAA,IAAI,KAAK,EAAA,EAAI;AACT,MAAA,IAAA,CAAK,GAAG,IAAA,EAAK;AACb,MAAA,IAAA,CAAK,EAAA,GAAK,IAAA;AAAA,IACd;AAEA,IAAA,IAAI,KAAK,WAAA,EAAa;AAClB,MAAA,IAAA,CAAK,YAAY,OAAA,EAAQ;AACzB,MAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,IACvB;AAEA,IAAA,IAAA,CAAK,OAAO,kBAAA,EAAmB;AAC/B,IAAA,IAAA,CAAK,gBAAA,GAAmB,cAAA;AACxB,IAAA,IAAA,CAAK,WAAA,GAAc,IAAA;AAAA,EACvB;AAAA;AAAA,EAGQ,qBAAqB,KAAA,EAAsB;AAC/C,IAAA,MAAM,KAAA,GAAyB;AAAA,MAC3B,QAAQ,IAAA,CAAK,gBAAA;AAAA,MACb,SAAA,EAAW,IAAA,CAAK,WAAA,EAAa,UAAA,GAAa,CAAC,CAAA,EAAG,SAAA;AAAA,MAC9C;AAAA,KACJ;AACA,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,mBAAA,EAAqB,KAAK,CAAA;AAAA,EAC/C;AAAA,EAEQ,UAAU,KAAA,EAAoB;AAClC,IAAA,IAAA,CAAK,MAAA,CAAO,IAAA,CAAK,OAAA,EAAS,KAAK,CAAA;AAAA,EACnC;AAAA,EAEQ,qBAAA,GAAwC;AAC5C,IAAA,IAAI,OAAA,GAAU,yBAAA;AACd,IAAA,IAAI,QAAA,GAAW,aAAA;AACf,IAAA,IAAI,QAAA,GAAW,WAAA;AAEf,IAAA,IAAI,OAAO,OAAA,KAAY,WAAA,IAAe,OAAA,CAAQ,GAAA,EAAK;AAC/C,MAAA,OAAA,GAAU,OAAA,CAAQ,IAAI,oBAAA,IAAwB,OAAA;AAC9C,MAAA,QAAA,GAAW,OAAA,CAAQ,IAAI,qBAAA,IAAyB,QAAA;AAChD,MAAA,QAAA,GAAW,OAAA,CAAQ,IAAI,qBAAA,IAAyB,QAAA;AAAA,IACpD;AAEA,IAAA,OAAO;AAAA,MACH;AAAA,QACI,IAAA,EAAM,OAAA;AAAA,QACN,QAAA,EAAU,QAAA;AAAA,QACV,UAAA,EAAY;AAAA;AAChB,KACJ;AAAA,EACJ;AAAA,EAEQ,cAAA,GAAyB;AAC7B,IAAA,IAAI,IAAA,CAAK,WAAA,EAAa,UAAA,GAAa,CAAC,GAAG,WAAA,EAAa;AAChD,MAAA,OAAO,IAAA,CAAK,WAAA,CAAY,UAAA,CAAW,CAAC,CAAA,CAAE,WAAA;AAAA,IAC1C;AACA,IAAA,IAAI,IAAA,CAAK,WAAA,EAAa,UAAA,GAAa,CAAC,GAAG,SAAA,EAAW;AAC9C,MAAA,OAAO,OAAO,IAAA,CAAK,WAAA,CAAY,UAAA,CAAW,CAAC,EAAE,SAAS,CAAA,CAAA;AAAA,IAC1D;AACA,IAAA,OAAO,gBAAA;AAAA,EACX;AAAA,EAEQ,kBAAA,GAA6B;AACjC,IAAA,OAAO,sCAAA,CAAuC,OAAA,CAAQ,OAAA,EAAS,CAAC,CAAA,KAAM;AAClE,MAAA,MAAM,CAAA,GAAK,IAAA,CAAK,MAAA,EAAO,GAAI,EAAA,GAAM,CAAA;AACjC,MAAA,MAAM,CAAA,GAAI,CAAA,KAAM,GAAA,GAAM,CAAA,GAAK,IAAI,CAAA,GAAO,CAAA;AACtC,MAAA,OAAO,CAAA,CAAE,SAAS,EAAE,CAAA;AAAA,IACxB,CAAC,CAAA;AAAA,EACL;AACJ","file":"index.js","sourcesContent":["{\n \"name\": \"jssip\",\n \"title\": \"JsSIP\",\n \"description\": \"The Javascript SIP library\",\n \"version\": \"3.12.0\",\n \"homepage\": \"https://jssip.net\",\n \"contributors\": [\n \"José Luis Millán <jmillan@aliax.net> (https://github.com/jmillan)\",\n \"Iñaki Baz Castillo <ibc@aliax.net> (https://inakibaz.me)\"\n ],\n \"types\": \"src/JsSIP.d.ts\",\n \"main\": \"src/JsSIP.js\",\n \"keywords\": [\n \"sip\",\n \"websocket\",\n \"webrtc\",\n \"node\",\n \"browser\",\n \"library\"\n ],\n \"license\": \"MIT\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/versatica/JsSIP.git\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/versatica/JsSIP/issues\"\n },\n \"dependencies\": {\n \"debug\": \"^4.3.1\",\n \"events\": \"^3.3.0\",\n \"sdp-transform\": \"^2.14.1\"\n },\n \"devDependencies\": {\n \"@eslint/eslintrc\": \"^3.3.3\",\n \"@eslint/js\": \"^9.39.2\",\n \"@types/debug\": \"^4.1.12\",\n \"@types/events\": \"^3.0.3\",\n \"esbuild\": \"^0.27.2\",\n \"eslint\": \"^9.39.1\",\n \"eslint-plugin-jest\": \"^29.12.1\",\n \"globals\": \"^17.0.0\",\n \"jest\": \"^30.2.0\",\n \"pegjs\": \"^0.7.0\"\n },\n \"scripts\": {\n \"lint\": \"node npm-scripts.js lint\",\n \"test\": \"node npm-scripts.js test\",\n \"build\": \"node npm-scripts.js build\",\n \"release\": \"node npm-scripts.js release\"\n }\n}\n","const pkg = require('../package.json');\n\nmodule.exports = {\n USER_AGENT : `${pkg.title} ${pkg.version}`,\n\n // SIP scheme.\n SIP : 'sip',\n SIPS : 'sips',\n\n // End and Failure causes.\n causes : {\n // Generic error causes.\n CONNECTION_ERROR : 'Connection Error',\n REQUEST_TIMEOUT : 'Request Timeout',\n SIP_FAILURE_CODE : 'SIP Failure Code',\n INTERNAL_ERROR : 'Internal Error',\n\n // SIP error causes.\n BUSY : 'Busy',\n REJECTED : 'Rejected',\n REDIRECTED : 'Redirected',\n UNAVAILABLE : 'Unavailable',\n NOT_FOUND : 'Not Found',\n ADDRESS_INCOMPLETE : 'Address Incomplete',\n INCOMPATIBLE_SDP : 'Incompatible SDP',\n MISSING_SDP : 'Missing SDP',\n AUTHENTICATION_ERROR : 'Authentication Error',\n\n // Session error causes.\n BYE : 'Terminated',\n WEBRTC_ERROR : 'WebRTC Error',\n CANCELED : 'Canceled',\n NO_ANSWER : 'No Answer',\n EXPIRES : 'Expires',\n NO_ACK : 'No ACK',\n DIALOG_ERROR : 'Dialog Error',\n USER_DENIED_MEDIA_ACCESS : 'User Denied Media Access',\n BAD_MEDIA_DESCRIPTION : 'Bad Media Description',\n RTP_TIMEOUT : 'RTP Timeout'\n },\n\n SIP_ERROR_CAUSES : {\n REDIRECTED : [ 300, 301, 302, 305, 380 ],\n BUSY : [ 486, 600 ],\n REJECTED : [ 403, 603 ],\n NOT_FOUND : [ 404, 604 ],\n UNAVAILABLE : [ 480, 410, 408, 430 ],\n ADDRESS_INCOMPLETE : [ 484, 424 ],\n INCOMPATIBLE_SDP : [ 488, 606 ],\n AUTHENTICATION_ERROR : [ 401, 407 ]\n },\n\n // SIP Methods.\n ACK : 'ACK',\n BYE : 'BYE',\n CANCEL : 'CANCEL',\n INFO : 'INFO',\n INVITE : 'INVITE',\n MESSAGE : 'MESSAGE',\n NOTIFY : 'NOTIFY',\n OPTIONS : 'OPTIONS',\n REGISTER : 'REGISTER',\n REFER : 'REFER',\n UPDATE : 'UPDATE',\n SUBSCRIBE : 'SUBSCRIBE',\n\n // DTMF transport methods.\n DTMF_TRANSPORT : {\n INFO : 'INFO',\n RFC2833 : 'RFC2833'\n },\n\n /* SIP Response Reasons\n * DOC: https://www.iana.org/assignments/sip-parameters\n * Copied from https://github.com/versatica/OverSIP/blob/master/lib/oversip/sip/constants.rb#L7\n */\n REASON_PHRASE : {\n 100 : 'Trying',\n 180 : 'Ringing',\n 181 : 'Call Is Being Forwarded',\n 182 : 'Queued',\n 183 : 'Session Progress',\n 199 : 'Early Dialog Terminated', // draft-ietf-sipcore-199\n 200 : 'OK',\n 202 : 'Accepted', // RFC 3265\n 204 : 'No Notification', // RFC 5839\n 300 : 'Multiple Choices',\n 301 : 'Moved Permanently',\n 302 : 'Moved Temporarily',\n 305 : 'Use Proxy',\n 380 : 'Alternative Service',\n 400 : 'Bad Request',\n 401 : 'Unauthorized',\n 402 : 'Payment Required',\n 403 : 'Forbidden',\n 404 : 'Not Found',\n 405 : 'Method Not Allowed',\n 406 : 'Not Acceptable',\n 407 : 'Proxy Authentication Required',\n 408 : 'Request Timeout',\n 410 : 'Gone',\n 412 : 'Conditional Request Failed', // RFC 3903\n 413 : 'Request Entity Too Large',\n 414 : 'Request-URI Too Long',\n 415 : 'Unsupported Media Type',\n 416 : 'Unsupported URI Scheme',\n 417 : 'Unknown Resource-Priority', // RFC 4412\n 420 : 'Bad Extension',\n 421 : 'Extension Required',\n 422 : 'Session Interval Too Small', // RFC 4028\n 423 : 'Interval Too Brief',\n 424 : 'Bad Location Information', // RFC 6442\n 428 : 'Use Identity Header', // RFC 4474\n 429 : 'Provide Referrer Identity', // RFC 3892\n 430 : 'Flow Failed', // RFC 5626\n 433 : 'Anonymity Disallowed', // RFC 5079\n 436 : 'Bad Identity-Info', // RFC 4474\n 437 : 'Unsupported Certificate', // RFC 4744\n 438 : 'Invalid Identity Header', // RFC 4744\n 439 : 'First Hop Lacks Outbound Support', // RFC 5626\n 440 : 'Max-Breadth Exceeded', // RFC 5393\n 469 : 'Bad Info Package', // draft-ietf-sipcore-info-events\n 470 : 'Consent Needed', // RFC 5360\n 478 : 'Unresolvable Destination', // Custom code copied from Kamailio.\n 480 : 'Temporarily Unavailable',\n 481 : 'Call/Transaction Does Not Exist',\n 482 : 'Loop Detected',\n 483 : 'Too Many Hops',\n 484 : 'Address Incomplete',\n 485 : 'Ambiguous',\n 486 : 'Busy Here',\n 487 : 'Request Terminated',\n 488 : 'Not Acceptable Here',\n 489 : 'Bad Event', // RFC 3265\n 491 : 'Request Pending',\n 493 : 'Undecipherable',\n 494 : 'Security Agreement Required', // RFC 3329\n 500 : 'JsSIP Internal Error',\n 501 : 'Not Implemented',\n 502 : 'Bad Gateway',\n 503 : 'Service Unavailable',\n 504 : 'Server Time-out',\n 505 : 'Version Not Supported',\n 513 : 'Message Too Large',\n 580 : 'Precondition Failure', // RFC 3312\n 600 : 'Busy Everywhere',\n 603 : 'Decline',\n 604 : 'Does Not Exist Anywhere',\n 606 : 'Not Acceptable'\n },\n\n ALLOWED_METHODS : 'INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO,NOTIFY,SUBSCRIBE',\n ACCEPTED_BODY_TYPES : 'application/sdp, application/dtmf-relay',\n MAX_FORWARDS : 69,\n SESSION_EXPIRES : 90,\n MIN_SESSION_EXPIRES : 60,\n CONNECTION_RECOVERY_MAX_INTERVAL : 30,\n CONNECTION_RECOVERY_MIN_INTERVAL : 2\n};\n","class ConfigurationError extends Error\n{\n constructor(parameter, value)\n {\n super();\n\n this.code = 1;\n this.name = 'CONFIGURATION_ERROR';\n this.parameter = parameter;\n this.value = value;\n this.message = (!this.value)?\n `Missing parameter: ${this.parameter}` :\n `Invalid value ${JSON.stringify(this.value)} for parameter \"${this.parameter}\"`;\n }\n}\n\nclass InvalidStateError extends Error\n{\n constructor(status)\n {\n super();\n\n this.code = 2;\n this.name = 'INVALID_STATE_ERROR';\n this.status = status;\n this.message = `Invalid status: ${status}`;\n }\n}\n\nclass NotSupportedError extends Error\n{\n constructor(message)\n {\n super();\n\n this.code = 3;\n this.name = 'NOT_SUPPORTED_ERROR';\n this.message = message;\n }\n}\n\nclass NotReadyError extends Error\n{\n constructor(message)\n {\n super();\n\n this.code = 4;\n this.name = 'NOT_READY_ERROR';\n this.message = message;\n }\n}\n\nmodule.exports = {\n ConfigurationError,\n InvalidStateError,\n NotSupportedError,\n NotReadyError\n};\n","const URI = require('./URI');\nconst Grammar = require('./Grammar');\n\nmodule.exports = class NameAddrHeader\n{\n /**\n * Parse the given string and returns a NameAddrHeader instance or undefined if\n * it is an invalid NameAddrHeader.\n */\n static parse(name_addr_header)\n {\n name_addr_header = Grammar.parse(name_addr_header, 'Name_Addr_Header');\n\n if (name_addr_header !== -1)\n {\n return name_addr_header;\n }\n else\n {\n return undefined;\n }\n }\n\n constructor(uri, display_name, parameters)\n {\n // Checks.\n if (!uri || !(uri instanceof URI))\n {\n throw new TypeError('missing or invalid \"uri\" parameter');\n }\n\n // Initialize parameters.\n this._uri = uri;\n this._parameters = {};\n this.display_name = display_name;\n\n for (const param in parameters)\n {\n if (Object.prototype.hasOwnProperty.call(parameters, param))\n {\n this.setParam(param, parameters[param]);\n }\n }\n }\n\n get uri()\n {\n return this._uri;\n }\n\n get display_name()\n {\n return this._display_name;\n }\n\n set display_name(value)\n {\n this._display_name = (value === 0) ? '0' : value;\n }\n\n setParam(key, value)\n {\n if (key)\n {\n this._parameters[key.toLowerCase()] = (typeof value === 'undefined' || value === null) ? null : value.toString();\n }\n }\n\n getParam(key)\n {\n if (key)\n {\n return this._parameters[key.toLowerCase()];\n }\n }\n\n hasParam(key)\n {\n if (key)\n {\n return (this._parameters.hasOwnProperty(key.toLowerCase()) && true) || false;\n }\n }\n\n deleteParam(parameter)\n {\n parameter = parameter.toLowerCase();\n if (this._parameters.hasOwnProperty(parameter))\n {\n const value = this._parameters[parameter];\n\n delete this._parameters[parameter];\n\n return value;\n }\n }\n\n clearParams()\n {\n this._parameters = {};\n }\n\n clone()\n {\n return new NameAddrHeader(\n this._uri.clone(),\n this._display_name,\n JSON.parse(JSON.stringify(this._parameters)));\n }\n\n _quote(str)\n {\n return str\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"');\n }\n\n toString()\n {\n let body = this._display_name ? `\"${this._quote(this._display_name)}\" ` : '';\n\n body += `<${this._uri.toString()}>`;\n\n for (const parameter in this._parameters)\n {\n if (Object.prototype.hasOwnProperty.call(this._parameters, parameter))\n {\n body += `;${parameter}`;\n\n if (this._parameters[parameter] !== null)\n {\n body += `=${this._parameters[parameter]}`;\n }\n }\n }\n\n return body;\n }\n};\n","module.exports = (function(){\n /*\n * Generated by PEG.js 0.7.0.\n *\n * http://pegjs.majda.cz/\n */\n function quote(s) {\n /*\n * ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a\n * string literal except for the closing quote character, backslash,\n * carriage return, line separator, paragraph separator, and line feed.\n * Any character may appear in the form of an escape sequence.\n *\n * For portability, we also escape escape all control and non-ASCII\n * characters. Note that \"\\0\" and \"\\v\" escape sequences are not used\n * because JSHint does not like the first and IE the second.\n */\n return '\"' + s\n .replace(/\\\\/g, '\\\\\\\\') // backslash\n .replace(/\"/g, '\\\\\"') // closing quote character\n .replace(/\\x08/g, '\\\\b') // backspace\n .replace(/\\t/g, '\\\\t') // horizontal tab\n .replace(/\\n/g, '\\\\n') // line feed\n .replace(/\\f/g, '\\\\f') // form feed\n .replace(/\\r/g, '\\\\r') // carriage return\n .replace(/[\\x00-\\x07\\x0B\\x0E-\\x1F\\x80-\\uFFFF]/g, escape)\n + '\"';\n }\n var result = {\n /*\n * Parses the input with a generated parser. If the parsing is successfull,\n * returns a value explicitly or implicitly specified by the grammar from\n * which the parser was generated (see |PEG.buildParser|). If the parsing is\n * unsuccessful, throws |PEG.parser.SyntaxError| describing the error.\n */\n parse: function(input, startRule) {\n var parseFunctions = {\n \"CRLF\": parse_CRLF,\n \"DIGIT\": parse_DIGIT,\n \"ALPHA\": parse_ALPHA,\n \"HEXDIG\": parse_HEXDIG,\n \"WSP\": parse_WSP,\n \"OCTET\": parse_OCTET,\n \"DQUOTE\": parse_DQUOTE,\n \"SP\": parse_SP,\n \"HTAB\": parse_HTAB,\n \"alphanum\": parse_alphanum,\n \"reserved\": parse_reserved,\n \"unreserved\": parse_unreserved,\n \"mark\": parse_mark,\n \"escaped\": parse_escaped,\n \"LWS\": parse_LWS,\n \"SWS\": parse_SWS,\n \"HCOLON\": parse_HCOLON,\n \"TEXT_UTF8_TRIM\": parse_TEXT_UTF8_TRIM,\n \"TEXT_UTF8char\": parse_TEXT_UTF8char,\n \"UTF8_NONASCII\": parse_UTF8_NONASCII,\n \"UTF8_CONT\": parse_UTF8_CONT,\n \"LHEX\": parse_LHEX,\n \"token\": parse_token,\n \"token_nodot\": parse_token_nodot,\n \"separators\": parse_separators,\n \"word\": parse_word,\n \"STAR\": parse_STAR,\n \"SLASH\": parse_SLASH,\n \"EQUAL\": parse_EQUAL,\n \"LPAREN\": parse_LPAREN,\n \"RPAREN\": parse_RPAREN,\n \"RAQUOT\": parse_RAQUOT,\n \"LAQUOT\": parse_LAQUOT,\n \"COMMA\": parse_COMMA,\n \"SEMI\": parse_SEMI,\n \"COLON\": parse_COLON,\n \"LDQUOT\": parse_LDQUOT,\n \"RDQUOT\": parse_RDQUOT,\n \"comment\": parse_comment,\n \"ctext\": parse_ctext,\n \"quoted_string\": parse_quoted_string,\n \"quoted_string_clean\": parse_quoted_string_clean,\n \"qdtext\": parse_qdtext,\n \"quoted_pair\": parse_quoted_pair,\n \"SIP_URI_noparams\": parse_SIP_URI_noparams,\n \"SIP_URI\": parse_SIP_URI,\n \"uri_scheme\": parse_uri_scheme,\n \"uri_scheme_sips\": parse_uri_scheme_sips,\n \"uri_scheme_sip\": parse_uri_scheme_sip,\n \"userinfo\": parse_userinfo,\n \"user\": parse_user,\n \"user_unreserved\": parse_user_unreserved,\n \"password\": parse_password,\n \"hostport\": parse_hostport,\n \"host\": parse_host,\n \"hostname\": parse_hostname,\n \"domainlabel\": parse_domainlabel,\n \"toplabel\": parse_toplabel,\n \"IPv6reference\": parse_IPv6reference,\n \"IPv6address\": parse_IPv6address,\n \"h16\": parse_h16,\n \"ls32\": parse_ls32,\n \"IPv4address\": parse_IPv4address,\n \"dec_octet\": parse_dec_octet,\n \"port\": parse_port,\n \"uri_parameters\": parse_uri_parameters,\n \"uri_parameter\": parse_uri_parameter,\n \"transport_param\": parse_transport_param,\n \"user_param\": parse_user_param,\n \"method_param\": parse_method_param,\n \"ttl_param\": parse_ttl_param,\n \"maddr_param\": parse_maddr_param,\n \"lr_param\": parse_lr_param,\n \"other_param\": parse_other_param,\n \"pname\": parse_pname,\n \"pvalue\": parse_pvalue,\n \"paramchar\": parse_paramchar,\n \"param_unreserved\": parse_param_unreserved,\n \"headers\": parse_headers,\n \"header\": parse_header,\n \"hname\": parse_hname,\n \"hvalue\": parse_hvalue,\n \"hnv_unreserved\": parse_hnv_unreserved,\n \"Request_Response\": parse_Request_Response,\n \"Request_Line\": parse_Request_Line,\n \"Request_URI\": parse_Request_URI,\n \"absoluteURI\": parse_absoluteURI,\n \"hier_part\": parse_hier_part,\n \"net_path\": parse_net_path,\n \"abs_path\": parse_abs_path,\n \"opaque_part\": parse_opaque_part,\n \"uric\": parse_uric,\n \"uric_no_slash\": parse_uric_no_slash,\n \"path_segments\": parse_path_segments,\n \"segment\": parse_segment,\n \"param\": parse_param,\n \"pchar\": parse_pchar,\n \"scheme\": parse_scheme,\n \"authority\": parse_authority,\n \"srvr\": parse_srvr,\n \"reg_name\": parse_reg_name,\n \"query\": parse_query,\n \"SIP_Version\": parse_SIP_Version,\n \"INVITEm\": parse_INVITEm,\n \"ACKm\": parse_ACKm,\n \"OPTIONSm\": parse_OPTIONSm,\n \"BYEm\": parse_BYEm,\n \"CANCELm\": parse_CANCELm,\n \"REGISTERm\": parse_REGISTERm,\n \"SUBSCRIBEm\": parse_SUBSCRIBEm,\n \"NOTIFYm\": parse_NOTIFYm,\n \"REFERm\": parse_REFERm,\n \"Method\": parse_Method,\n \"Status_Line\": parse_Status_Line,\n \"Status_Code\": parse_Status_Code,\n \"extension_code\": parse_extension_code,\n \"Reason_Phrase\": parse_Reason_Phrase,\n \"Allow_Events\": parse_Allow_Events,\n \"Call_ID\": parse_Call_ID,\n \"Contact\": parse_Contact,\n \"contact_param\": parse_contact_param,\n \"name_addr\": parse_name_addr,\n \"display_name\": parse_display_name,\n \"contact_params\": parse_contact_params,\n \"c_p_q\": parse_c_p_q,\n \"c_p_expires\": parse_c_p_expires,\n \"delta_seconds\": parse_delta_seconds,\n \"qvalue\": parse_qvalue,\n \"generic_param\": parse_generic_param,\n \"gen_value\": parse_gen_value,\n \"Content_Disposition\": parse_Content_Disposition,\n \"disp_type\": parse_disp_type,\n \"disp_param\": parse_disp_param,\n \"handling_param\": parse_handling_param,\n \"Content_Encoding\": parse_Content_Encoding,\n \"Content_Length\": parse_Content_Length,\n \"Content_Type\": parse_Content_Type,\n \"media_type\": parse_media_type,\n \"m_type\": parse_m_type,\n \"discrete_type\": parse_discrete_type,\n \"composite_type\": parse_composite_type,\n \"extension_token\": parse_extension_token,\n \"x_token\": parse_x_token,\n \"m_subtype\": parse_m_subtype,\n \"m_parameter\": parse_m_parameter,\n \"m_value\": parse_m_value,\n \"CSeq\": parse_CSeq,\n \"CSeq_value\": parse_CSeq_value,\n \"Expires\": parse_Expires,\n \"Event\": parse_Event,\n \"event_type\": parse_event_type,\n \"From\": parse_From,\n \"from_param\": parse_from_param,\n \"tag_param\": parse_tag_param,\n \"Max_Forwards\": parse_Max_Forwards,\n \"Min_Expires\": parse_Min_Expires,\n \"Name_Addr_Header\": parse_Name_Addr_Header,\n \"Proxy_Authenticate\": parse_Proxy_Authenticate,\n \"challenge\": parse_challenge,\n \"other_challenge\": parse_other_challenge,\n \"auth_param\": parse_auth_param,\n \"digest_cln\": parse_digest_cln,\n \"realm\": parse_realm,\n \"realm_value\": parse_realm_value,\n \"domain\": parse_domain,\n \"URI\": parse_URI,\n \"nonce\": parse_nonce,\n \"nonce_value\": parse_nonce_value,\n \"opaque\": parse_opaque,\n \"stale\": parse_stale,\n \"algorithm\": parse_algorithm,\n \"qop_options\": parse_qop_options,\n \"qop_value\": parse_qop_value,\n \"Proxy_Require\": parse_Proxy_Require,\n \"Record_Route\": parse_Record_Route,\n \"rec_route\": parse_rec_route,\n \"Reason\": parse_Reason,\n \"reason_param\": parse_reason_param,\n \"reason_cause\": parse_reason_cause,\n \"Require\": parse_Require,\n \"Route\": parse_Route,\n \"route_param\": parse_route_param,\n \"Subscription_State\": parse_Subscription_State,\n \"substate_value\": parse_substate_value,\n \"subexp_params\": parse_subexp_params,\n \"event_reason_value\": parse_event_reason_value,\n \"Subject\": parse_Subject,\n \"Supported\": parse_Supported,\n \"To\": parse_To,\n \"to_param\": parse_to_param,\n \"Via\": parse_Via,\n \"via_param\": parse_via_param,\n \"via_params\": parse_via_params,\n \"via_ttl\": parse_via_ttl,\n \"via_maddr\": parse_via_maddr,\n \"via_received\": parse_via_received,\n \"via_branch\": parse_via_branch,\n \"response_port\": parse_response_port,\n \"rport\": parse_rport,\n \"sent_protocol\": parse_sent_protocol,\n \"protocol_name\": parse_protocol_name,\n \"transport\": parse_transport,\n \"sent_by\": parse_sent_by,\n \"via_host\": parse_via_host,\n \"via_port\": parse_via_port,\n \"ttl\": parse_ttl,\n \"WWW_Authenticate\": parse_WWW_Authenticate,\n \"Session_Expires\": parse_Session_Expires,\n \"s_e_expires\": parse_s_e_expires,\n \"s_e_params\": parse_s_e_params,\n \"s_e_refresher\": parse_s_e_refresher,\n \"extension_header\": parse_extension_header,\n \"header_value\": parse_header_value,\n \"message_body\": parse_message_body,\n \"uuid_URI\": parse_uuid_URI,\n \"uuid\": parse_uuid,\n \"hex4\": parse_hex4,\n \"hex8\": parse_hex8,\n \"hex12\": parse_hex12,\n \"Refer_To\": parse_Refer_To,\n \"Replaces\": parse_Replaces,\n \"call_id\": parse_call_id,\n \"replaces_param\": parse_replaces_param,\n \"to_tag\": parse_to_tag,\n \"from_tag\": parse_from_tag,\n \"early_flag\": parse_early_flag\n };\n if (startRule !== undefined) {\n if (parseFunctions[startRule] === undefined) {\n throw new Error(\"Invalid rule name: \" + quote(startRule) + \".\");\n }\n } else {\n startRule = \"CRLF\";\n }\n var pos = 0;\n var reportFailures = 0;\n var rightmostFailuresPos = 0;\n var rightmostFailuresExpected = [];\n function padLeft(input, padding, length) {\n var result = input;\n var padLength = length - input.length;\n for (var i = 0; i < padLength; i++) {\n result = padding + result;\n }\n return result;\n }\n function escape(ch) {\n var charCode = ch.charCodeAt(0);\n var escapeChar;\n var length;\n if (charCode <= 0xFF) {\n escapeChar = 'x';\n length = 2;\n } else {\n escapeChar = 'u';\n length = 4;\n }\n return '\\\\' + escapeChar + padLeft(charCode.toString(16).toUpperCase(), '0', length);\n }\n function matchFailed(failure) {\n if (pos < rightmostFailuresPos) {\n return;\n }\n if (pos > rightmostFailuresPos) {\n rightmostFailuresPos = pos;\n rightmostFailuresExpected = [];\n }\n rightmostFailuresExpected.push(failure);\n }\n function parse_CRLF() {\n var result0;\n if (input.substr(pos, 2) === \"\\r\\n\") {\n result0 = \"\\r\\n\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\r\\\\n\\\"\");\n }\n }\n return result0;\n }\n function parse_DIGIT() {\n var result0;\n if (/^[0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9]\");\n }\n }\n return result0;\n }\n function parse_ALPHA() {\n var result0;\n if (/^[a-zA-Z]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-zA-Z]\");\n }\n }\n return result0;\n }\n function parse_HEXDIG() {\n var result0;\n if (/^[0-9a-fA-F]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-9a-fA-F]\");\n }\n }\n return result0;\n }\n function parse_WSP() {\n var result0;\n result0 = parse_SP();\n if (result0 === null) {\n result0 = parse_HTAB();\n }\n return result0;\n }\n function parse_OCTET() {\n var result0;\n if (/^[\\0-\\xFF]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\0-\\\\xFF]\");\n }\n }\n return result0;\n }\n function parse_DQUOTE() {\n var result0;\n if (/^[\"]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\"]\");\n }\n }\n return result0;\n }\n function parse_SP() {\n var result0;\n if (input.charCodeAt(pos) === 32) {\n result0 = \" \";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\" \\\"\");\n }\n }\n return result0;\n }\n function parse_HTAB() {\n var result0;\n if (input.charCodeAt(pos) === 9) {\n result0 = \"\\t\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\t\\\"\");\n }\n }\n return result0;\n }\n function parse_alphanum() {\n var result0;\n if (/^[a-zA-Z0-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-zA-Z0-9]\");\n }\n }\n return result0;\n }\n function parse_reserved() {\n var result0;\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_unreserved() {\n var result0;\n result0 = parse_alphanum();\n if (result0 === null) {\n result0 = parse_mark();\n }\n return result0;\n }\n function parse_mark() {\n var result0;\n if (input.charCodeAt(pos) === 45) {\n result0 = \"-\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 95) {\n result0 = \"_\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 46) {\n result0 = \".\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 33) {\n result0 = \"!\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 126) {\n result0 = \"~\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 42) {\n result0 = \"*\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 39) {\n result0 = \"'\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 40) {\n result0 = \"(\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 41) {\n result0 = \")\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_escaped() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 37) {\n result0 = \"%\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_HEXDIG();\n if (result1 !== null) {\n result2 = parse_HEXDIG();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, escaped) {return escaped.join(''); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LWS() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n pos2 = pos;\n result0 = [];\n result1 = parse_WSP();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_WSP();\n }\n if (result0 !== null) {\n result1 = parse_CRLF();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos2;\n }\n } else {\n result0 = null;\n pos = pos2;\n }\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result2 = parse_WSP();\n if (result2 !== null) {\n result1 = [];\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_WSP();\n }\n } else {\n result1 = null;\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \" \"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SWS() {\n var result0;\n result0 = parse_LWS();\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_HCOLON() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = [];\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n }\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return ':'; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_TEXT_UTF8_TRIM() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result1 = parse_TEXT_UTF8char();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_TEXT_UTF8char();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = [];\n result3 = parse_LWS();\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_LWS();\n }\n if (result2 !== null) {\n result3 = parse_TEXT_UTF8char();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = [];\n result3 = parse_LWS();\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_LWS();\n }\n if (result2 !== null) {\n result3 = parse_TEXT_UTF8char();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_TEXT_UTF8char() {\n var result0;\n if (/^[!-~]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[!-~]\");\n }\n }\n if (result0 === null) {\n result0 = parse_UTF8_NONASCII();\n }\n return result0;\n }\n function parse_UTF8_NONASCII() {\n var result0;\n if (/^[\\x80-\\uFFFF]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x80-\\\\uFFFF]\");\n }\n }\n return result0;\n }\n function parse_UTF8_CONT() {\n var result0;\n if (/^[\\x80-\\xBF]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x80-\\\\xBF]\");\n }\n }\n return result0;\n }\n function parse_LHEX() {\n var result0;\n result0 = parse_DIGIT();\n if (result0 === null) {\n if (/^[a-f]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[a-f]\");\n }\n }\n }\n return result0;\n }\n function parse_token() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_token_nodot() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_separators() {\n var result0;\n if (input.charCodeAt(pos) === 40) {\n result0 = \"(\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 41) {\n result0 = \")\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 60) {\n result0 = \"<\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 62) {\n result0 = \">\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 92) {\n result0 = \"\\\\\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_DQUOTE();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 93) {\n result0 = \"]\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 123) {\n result0 = \"{\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 125) {\n result0 = \"}\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_SP();\n if (result0 === null) {\n result0 = parse_HTAB();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_word() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 40) {\n result1 = \"(\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 41) {\n result1 = \")\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 60) {\n result1 = \"<\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 62) {\n result1 = \">\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 92) {\n result1 = \"\\\\\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_DQUOTE();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 91) {\n result1 = \"[\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 93) {\n result1 = \"]\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 63) {\n result1 = \"?\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 123) {\n result1 = \"{\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 125) {\n result1 = \"}\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_alphanum();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 33) {\n result1 = \"!\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 37) {\n result1 = \"%\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"%\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 95) {\n result1 = \"_\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 96) {\n result1 = \"`\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"`\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 39) {\n result1 = \"'\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"'\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 126) {\n result1 = \"~\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"~\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 40) {\n result1 = \"(\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 41) {\n result1 = \")\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 60) {\n result1 = \"<\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 62) {\n result1 = \">\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 92) {\n result1 = \"\\\\\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_DQUOTE();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 91) {\n result1 = \"[\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 93) {\n result1 = \"]\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 63) {\n result1 = \"?\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 123) {\n result1 = \"{\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"{\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 125) {\n result1 = \"}\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"}\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_STAR() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 42) {\n result1 = \"*\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"*\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \"*\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SLASH() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \"/\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_EQUAL() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \"=\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LPAREN() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 40) {\n result1 = \"(\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"(\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \"(\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_RPAREN() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 41) {\n result1 = \")\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\")\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \")\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_RAQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 62) {\n result0 = \">\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\">\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_SWS();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \">\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LAQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 60) {\n result1 = \"<\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"<\\\"\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \"<\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_COMMA() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \",\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SEMI() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \";\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_COLON() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_SWS();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \":\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_LDQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n result1 = parse_DQUOTE();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \"\\\"\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_RDQUOT() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DQUOTE();\n if (result0 !== null) {\n result1 = parse_SWS();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {return \"\\\"\"; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_comment() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_LPAREN();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_ctext();\n if (result2 === null) {\n result2 = parse_quoted_pair();\n if (result2 === null) {\n result2 = parse_comment();\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_ctext();\n if (result2 === null) {\n result2 = parse_quoted_pair();\n if (result2 === null) {\n result2 = parse_comment();\n }\n }\n }\n if (result1 !== null) {\n result2 = parse_RPAREN();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_ctext() {\n var result0;\n if (/^[!-']/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[!-']\");\n }\n }\n if (result0 === null) {\n if (/^[*-[]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[*-[]\");\n }\n }\n if (result0 === null) {\n if (/^[\\]-~]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\]-~]\");\n }\n }\n if (result0 === null) {\n result0 = parse_UTF8_NONASCII();\n if (result0 === null) {\n result0 = parse_LWS();\n }\n }\n }\n }\n return result0;\n }\n function parse_quoted_string() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n result1 = parse_DQUOTE();\n if (result1 !== null) {\n result2 = [];\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n }\n if (result2 !== null) {\n result3 = parse_DQUOTE();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_quoted_string_clean() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SWS();\n if (result0 !== null) {\n result1 = parse_DQUOTE();\n if (result1 !== null) {\n result2 = [];\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_qdtext();\n if (result3 === null) {\n result3 = parse_quoted_pair();\n }\n }\n if (result2 !== null) {\n result3 = parse_DQUOTE();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var trimmed = input\n .substring(pos, offset)\n .trim();\n return trimmed\n .substring(1, trimmed.length - 1) // remove outer quotes\n .replace(/\\\\([\\x00-\\x09\\x0b-\\x0c\\x0e-\\x7f])/g, '$1'); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_qdtext() {\n var result0;\n result0 = parse_LWS();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 33) {\n result0 = \"!\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"!\\\"\");\n }\n }\n if (result0 === null) {\n if (/^[#-[]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[#-[]\");\n }\n }\n if (result0 === null) {\n if (/^[\\]-~]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\]-~]\");\n }\n }\n if (result0 === null) {\n result0 = parse_UTF8_NONASCII();\n }\n }\n }\n }\n return result0;\n }\n function parse_quoted_pair() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.charCodeAt(pos) === 92) {\n result0 = \"\\\\\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"\\\\\\\\\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[\\0-\\t]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\0-\\\\t]\");\n }\n }\n if (result1 === null) {\n if (/^[\\x0B-\\f]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x0B-\\\\f]\");\n }\n }\n if (result1 === null) {\n if (/^[\\x0E-]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[\\\\x0E-]\");\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_SIP_URI_noparams() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_uri_scheme();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_userinfo();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_hostport();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n try {\n data.uri = new URI(data.scheme, data.user, data.host, data.port);\n delete data.scheme;\n delete data.user;\n delete data.host;\n delete data.host_type;\n delete data.port;\n } catch(e) {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_SIP_URI() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_uri_scheme();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_userinfo();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_hostport();\n if (result3 !== null) {\n result4 = parse_uri_parameters();\n if (result4 !== null) {\n result5 = parse_headers();\n result5 = result5 !== null ? result5 : \"\";\n if (result5 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var header;\n try {\n data.uri = new URI(data.scheme, data.user, data.host, data.port, data.uri_params, data.uri_headers);\n delete data.scheme;\n delete data.user;\n delete data.host;\n delete data.host_type;\n delete data.port;\n delete data.uri_params;\n if (startRule === 'SIP_URI') { data = data.uri;}\n } catch(e) {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_uri_scheme() {\n var result0;\n result0 = parse_uri_scheme_sips();\n if (result0 === null) {\n result0 = parse_uri_scheme_sip();\n }\n return result0;\n }\n function parse_uri_scheme_sips() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"sips\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"sips\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset, scheme) {\n data.scheme = scheme.toLowerCase(); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_uri_scheme_sip() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"sip\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset, scheme) {\n data.scheme = scheme.toLowerCase(); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_userinfo() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_user();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_password();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 64) {\n result2 = \"@\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.user = decodeURIComponent(input.substring(pos-1, offset));})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_user() {\n var result0, result1;\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_user_unreserved();\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_user_unreserved();\n }\n }\n }\n } else {\n result0 = null;\n }\n return result0;\n }\n function parse_user_unreserved() {\n var result0;\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_password() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result0 = [];\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.password = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hostport() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_host();\n if (result0 !== null) {\n pos1 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_port();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos1;\n }\n } else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_host() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_hostname();\n if (result0 === null) {\n result0 = parse_IPv4address();\n if (result0 === null) {\n result0 = parse_IPv6reference();\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.host = input.substring(pos, offset).toLowerCase();\n return data.host; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hostname() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = [];\n pos2 = pos;\n result1 = parse_domainlabel();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n while (result1 !== null) {\n result0.push(result1);\n pos2 = pos;\n result1 = parse_domainlabel();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n }\n if (result0 !== null) {\n result1 = parse_toplabel();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.host_type = 'domain';\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_domainlabel() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_alphanum();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_toplabel() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_ALPHA();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_alphanum();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 95) {\n result2 = \"_\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"_\\\"\");\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_IPv6reference() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_IPv6address();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 93) {\n result2 = \"]\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.host_type = 'IPv6';\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_IPv6address() {\n var result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result7 = \":\";\n pos++;\n } else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_h16();\n if (result8 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result9 = \":\";\n pos++;\n } else {\n result9 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result9 !== null) {\n result10 = parse_h16();\n if (result10 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result11 = \":\";\n pos++;\n } else {\n result11 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result11 !== null) {\n result12 = parse_ls32();\n if (result12 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11, result12];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result8 = \":\";\n pos++;\n } else {\n result8 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result8 !== null) {\n result9 = parse_h16();\n if (result9 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result10 = \":\";\n pos++;\n } else {\n result10 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result10 !== null) {\n result11 = parse_ls32();\n if (result11 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10, result11];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result8 = \":\";\n pos++;\n } else {\n result8 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result8 !== null) {\n result9 = parse_ls32();\n if (result9 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_ls32();\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_ls32();\n if (result5 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_ls32();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_ls32();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n if (input.substr(pos, 2) === \"::\") {\n result0 = \"::\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_h16();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result1 = \"::\";\n pos += 2;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result7 = \":\";\n pos++;\n } else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_h16();\n if (result8 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result9 = \":\";\n pos++;\n } else {\n result9 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result9 !== null) {\n result10 = parse_ls32();\n if (result10 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9, result10];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result2 = \"::\";\n pos += 2;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result8 = \":\";\n pos++;\n } else {\n result8 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result8 !== null) {\n result9 = parse_ls32();\n if (result9 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8, result9];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result3 = \"::\";\n pos += 2;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result7 = \":\";\n pos++;\n } else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_ls32();\n if (result8 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos2;\n }\n } else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result4 = \"::\";\n pos += 2;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_ls32();\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos2;\n }\n } else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos2;\n }\n } else {\n result4 = null;\n pos = pos2;\n }\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result5 = \"::\";\n pos += 2;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_ls32();\n if (result6 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos2;\n }\n } else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos2;\n }\n } else {\n result4 = null;\n pos = pos2;\n }\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n result5 = result5 !== null ? result5 : \"\";\n if (result5 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result6 = \"::\";\n pos += 2;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result2 = \":\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_h16();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result3 = \":\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_h16();\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos2;\n }\n } else {\n result3 = null;\n pos = pos2;\n }\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result4 = \":\";\n pos++;\n } else {\n result4 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result4 !== null) {\n result5 = parse_h16();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos2;\n }\n } else {\n result4 = null;\n pos = pos2;\n }\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result5 = \":\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_h16();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n result5 = result5 !== null ? result5 : \"\";\n if (result5 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 58) {\n result6 = \":\";\n pos++;\n } else {\n result6 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result6 !== null) {\n result7 = parse_h16();\n if (result7 !== null) {\n result6 = [result6, result7];\n } else {\n result6 = null;\n pos = pos2;\n }\n } else {\n result6 = null;\n pos = pos2;\n }\n result6 = result6 !== null ? result6 : \"\";\n if (result6 !== null) {\n if (input.substr(pos, 2) === \"::\") {\n result7 = \"::\";\n pos += 2;\n } else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"::\\\"\");\n }\n }\n if (result7 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.host_type = 'IPv6';\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_h16() {\n var result0, result1, result2, result3;\n var pos0;\n pos0 = pos;\n result0 = parse_HEXDIG();\n if (result0 !== null) {\n result1 = parse_HEXDIG();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_HEXDIG();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_HEXDIG();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_ls32() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_h16();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_h16();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_IPv4address();\n }\n return result0;\n }\n function parse_IPv4address() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_dec_octet();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_dec_octet();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result3 = \".\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_dec_octet();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result5 = \".\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_dec_octet();\n if (result6 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.host_type = 'IPv4';\n return input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_dec_octet() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 2) === \"25\") {\n result0 = \"25\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"25\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[0-5]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-5]\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.charCodeAt(pos) === 50) {\n result0 = \"2\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"2\\\"\");\n }\n }\n if (result0 !== null) {\n if (/^[0-4]/.test(input.charAt(pos))) {\n result1 = input.charAt(pos);\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"[0-4]\");\n }\n }\n if (result1 !== null) {\n result2 = parse_DIGIT();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (input.charCodeAt(pos) === 49) {\n result0 = \"1\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"1\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result2 = parse_DIGIT();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n if (/^[1-9]/.test(input.charAt(pos))) {\n result0 = input.charAt(pos);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"[1-9]\");\n }\n }\n if (result0 !== null) {\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_DIGIT();\n }\n }\n }\n }\n return result0;\n }\n function parse_port() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, port) {\n port = parseInt(port.join(''));\n data.port = port;\n return port; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_uri_parameters() {\n var result0, result1, result2;\n var pos0;\n result0 = [];\n pos0 = pos;\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_uri_parameter();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos0;\n }\n } else {\n result1 = null;\n pos = pos0;\n }\n while (result1 !== null) {\n result0.push(result1);\n pos0 = pos;\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_uri_parameter();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos0;\n }\n } else {\n result1 = null;\n pos = pos0;\n }\n }\n return result0;\n }\n function parse_uri_parameter() {\n var result0;\n result0 = parse_transport_param();\n if (result0 === null) {\n result0 = parse_user_param();\n if (result0 === null) {\n result0 = parse_method_param();\n if (result0 === null) {\n result0 = parse_ttl_param();\n if (result0 === null) {\n result0 = parse_maddr_param();\n if (result0 === null) {\n result0 = parse_lr_param();\n if (result0 === null) {\n result0 = parse_other_param();\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_transport_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 10).toLowerCase() === \"transport=\") {\n result0 = input.substr(pos, 10);\n pos += 10;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"transport=\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"udp\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"udp\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tcp\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"tcp\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"sctp\") {\n result1 = input.substr(pos, 4);\n pos += 4;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"sctp\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tls\") {\n result1 = input.substr(pos, 3);\n pos += 3;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"tls\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_token();\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, transport) {\n if(!data.uri_params) data.uri_params={};\n data.uri_params['transport'] = transport.toLowerCase(); })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_user_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"user=\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"user=\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.substr(pos, 5).toLowerCase() === \"phone\") {\n result1 = input.substr(pos, 5);\n pos += 5;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"phone\\\"\");\n }\n }\n if (result1 === null) {\n if (input.substr(pos, 2).toLowerCase() === \"ip\") {\n result1 = input.substr(pos, 2);\n pos += 2;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ip\\\"\");\n }\n }\n if (result1 === null) {\n result1 = parse_token();\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, user) {\n if(!data.uri_params) data.uri_params={};\n data.uri_params['user'] = user.toLowerCase(); })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_method_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 7).toLowerCase() === \"method=\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"method=\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_Method();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, method) {\n if(!data.uri_params) data.uri_params={};\n data.uri_params['method'] = method; })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_ttl_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"ttl=\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ttl=\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_ttl();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, ttl) {\n if(!data.params) data.params={};\n data.params['ttl'] = ttl; })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_maddr_param() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"maddr=\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"maddr=\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_host();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, maddr) {\n if(!data.uri_params) data.uri_params={};\n data.uri_params['maddr'] = maddr; })(pos0, result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_lr_param() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 2).toLowerCase() === \"lr\") {\n result0 = input.substr(pos, 2);\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"lr\\\"\");\n }\n }\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n if(!data.uri_params) data.uri_params={};\n data.uri_params['lr'] = undefined; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_other_param() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_pname();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_pvalue();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, param, value) {\n if(!data.uri_params) data.uri_params = {};\n if (typeof value === 'undefined'){\n value = undefined;\n }\n else {\n value = value[1];\n }\n data.uri_params[param.toLowerCase()] = value;})(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_pname() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_paramchar();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_paramchar();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, pname) {return pname.join(''); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_pvalue() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_paramchar();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_paramchar();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, pvalue) {return pvalue.join(''); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_paramchar() {\n var result0;\n result0 = parse_param_unreserved();\n if (result0 === null) {\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n }\n }\n return result0;\n }\n function parse_param_unreserved() {\n var result0;\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 93) {\n result0 = \"]\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_headers() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_header();\n if (result1 !== null) {\n result2 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 38) {\n result3 = \"&\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_header();\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos1;\n }\n } else {\n result3 = null;\n pos = pos1;\n }\n while (result3 !== null) {\n result2.push(result3);\n pos1 = pos;\n if (input.charCodeAt(pos) === 38) {\n result3 = \"&\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_header();\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos1;\n }\n } else {\n result3 = null;\n pos = pos1;\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_header() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_hname();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_hvalue();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, hname, hvalue) {\n hname = hname.join('').toLowerCase();\n hvalue = hvalue.join('');\n if(!data.uri_headers) data.uri_headers = {};\n if (!data.uri_headers[hname]) {\n data.uri_headers[hname] = [hvalue];\n } else {\n data.uri_headers[hname].push(hvalue);\n }})(pos0, result0[0], result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hname() {\n var result0, result1;\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n }\n } else {\n result0 = null;\n }\n return result0;\n }\n function parse_hvalue() {\n var result0, result1;\n result0 = [];\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_hnv_unreserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n }\n }\n }\n return result0;\n }\n function parse_hnv_unreserved() {\n var result0;\n if (input.charCodeAt(pos) === 91) {\n result0 = \"[\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"[\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 93) {\n result0 = \"]\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"]\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_Request_Response() {\n var result0;\n result0 = parse_Status_Line();\n if (result0 === null) {\n result0 = parse_Request_Line();\n }\n return result0;\n }\n function parse_Request_Line() {\n var result0, result1, result2, result3, result4;\n var pos0;\n pos0 = pos;\n result0 = parse_Method();\n if (result0 !== null) {\n result1 = parse_SP();\n if (result1 !== null) {\n result2 = parse_Request_URI();\n if (result2 !== null) {\n result3 = parse_SP();\n if (result3 !== null) {\n result4 = parse_SIP_Version();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Request_URI() {\n var result0;\n result0 = parse_SIP_URI();\n if (result0 === null) {\n result0 = parse_absoluteURI();\n }\n return result0;\n }\n function parse_absoluteURI() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_scheme();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_hier_part();\n if (result2 === null) {\n result2 = parse_opaque_part();\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_hier_part() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_net_path();\n if (result0 === null) {\n result0 = parse_abs_path();\n }\n if (result0 !== null) {\n pos1 = pos;\n if (input.charCodeAt(pos) === 63) {\n result1 = \"?\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_query();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos1;\n }\n } else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_net_path() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 2) === \"//\") {\n result0 = \"//\";\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"//\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_authority();\n if (result1 !== null) {\n result2 = parse_abs_path();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_abs_path() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.charCodeAt(pos) === 47) {\n result0 = \"/\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_path_segments();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_opaque_part() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_uric_no_slash();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_uric();\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_uric();\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_uric() {\n var result0;\n result0 = parse_reserved();\n if (result0 === null) {\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n }\n }\n return result0;\n }\n function parse_uric_no_slash() {\n var result0;\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 59) {\n result0 = \";\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 63) {\n result0 = \"?\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"?\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_path_segments() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_segment();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 47) {\n result2 = \"/\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_segment();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n if (input.charCodeAt(pos) === 47) {\n result2 = \"/\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_segment();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_segment() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = [];\n result1 = parse_pchar();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_pchar();\n }\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 59) {\n result2 = \";\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n if (input.charCodeAt(pos) === 59) {\n result2 = \";\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_param() {\n var result0, result1;\n result0 = [];\n result1 = parse_pchar();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_pchar();\n }\n return result0;\n }\n function parse_pchar() {\n var result0;\n result0 = parse_unreserved();\n if (result0 === null) {\n result0 = parse_escaped();\n if (result0 === null) {\n if (input.charCodeAt(pos) === 58) {\n result0 = \":\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 64) {\n result0 = \"@\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 38) {\n result0 = \"&\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 61) {\n result0 = \"=\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 43) {\n result0 = \"+\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 36) {\n result0 = \"$\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result0 === null) {\n if (input.charCodeAt(pos) === 44) {\n result0 = \",\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_scheme() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_ALPHA();\n if (result0 !== null) {\n result1 = [];\n result2 = parse_ALPHA();\n if (result2 === null) {\n result2 = parse_DIGIT();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 43) {\n result2 = \"+\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n }\n }\n }\n }\n while (result2 !== null) {\n result1.push(result2);\n result2 = parse_ALPHA();\n if (result2 === null) {\n result2 = parse_DIGIT();\n if (result2 === null) {\n if (input.charCodeAt(pos) === 43) {\n result2 = \"+\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 45) {\n result2 = \"-\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result2 === null) {\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.scheme= input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_authority() {\n var result0;\n result0 = parse_srvr();\n if (result0 === null) {\n result0 = parse_reg_name();\n }\n return result0;\n }\n function parse_srvr() {\n var result0, result1;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_userinfo();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_hostport();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_reg_name() {\n var result0, result1;\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n if (input.charCodeAt(pos) === 36) {\n result1 = \"$\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"$\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 44) {\n result1 = \",\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 59) {\n result1 = \";\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\";\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 58) {\n result1 = \":\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\":\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 38) {\n result1 = \"&\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"&\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 61) {\n result1 = \"=\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"=\\\"\");\n }\n }\n if (result1 === null) {\n if (input.charCodeAt(pos) === 43) {\n result1 = \"+\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"+\\\"\");\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n }\n } else {\n result0 = null;\n }\n return result0;\n }\n function parse_query() {\n var result0, result1;\n result0 = [];\n result1 = parse_uric();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_uric();\n }\n return result0;\n }\n function parse_SIP_Version() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SIP\\\"\");\n }\n }\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 47) {\n result1 = \"/\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"/\\\"\");\n }\n }\n if (result1 !== null) {\n result3 = parse_DIGIT();\n if (result3 !== null) {\n result2 = [];\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_DIGIT();\n }\n } else {\n result2 = null;\n }\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 46) {\n result3 = \".\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result3 !== null) {\n result5 = parse_DIGIT();\n if (result5 !== null) {\n result4 = [];\n while (result5 !== null) {\n result4.push(result5);\n result5 = parse_DIGIT();\n }\n } else {\n result4 = null;\n }\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.sip_version = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_INVITEm() {\n var result0;\n if (input.substr(pos, 6) === \"INVITE\") {\n result0 = \"INVITE\";\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"INVITE\\\"\");\n }\n }\n return result0;\n }\n function parse_ACKm() {\n var result0;\n if (input.substr(pos, 3) === \"ACK\") {\n result0 = \"ACK\";\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ACK\\\"\");\n }\n }\n return result0;\n }\n function parse_OPTIONSm() {\n var result0;\n if (input.substr(pos, 7) === \"OPTIONS\") {\n result0 = \"OPTIONS\";\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"OPTIONS\\\"\");\n }\n }\n return result0;\n }\n function parse_BYEm() {\n var result0;\n if (input.substr(pos, 3) === \"BYE\") {\n result0 = \"BYE\";\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"BYE\\\"\");\n }\n }\n return result0;\n }\n function parse_CANCELm() {\n var result0;\n if (input.substr(pos, 6) === \"CANCEL\") {\n result0 = \"CANCEL\";\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"CANCEL\\\"\");\n }\n }\n return result0;\n }\n function parse_REGISTERm() {\n var result0;\n if (input.substr(pos, 8) === \"REGISTER\") {\n result0 = \"REGISTER\";\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"REGISTER\\\"\");\n }\n }\n return result0;\n }\n function parse_SUBSCRIBEm() {\n var result0;\n if (input.substr(pos, 9) === \"SUBSCRIBE\") {\n result0 = \"SUBSCRIBE\";\n pos += 9;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SUBSCRIBE\\\"\");\n }\n }\n return result0;\n }\n function parse_NOTIFYm() {\n var result0;\n if (input.substr(pos, 6) === \"NOTIFY\") {\n result0 = \"NOTIFY\";\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"NOTIFY\\\"\");\n }\n }\n return result0;\n }\n function parse_REFERm() {\n var result0;\n if (input.substr(pos, 5) === \"REFER\") {\n result0 = \"REFER\";\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"REFER\\\"\");\n }\n }\n return result0;\n }\n function parse_Method() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_INVITEm();\n if (result0 === null) {\n result0 = parse_ACKm();\n if (result0 === null) {\n result0 = parse_OPTIONSm();\n if (result0 === null) {\n result0 = parse_BYEm();\n if (result0 === null) {\n result0 = parse_CANCELm();\n if (result0 === null) {\n result0 = parse_REGISTERm();\n if (result0 === null) {\n result0 = parse_SUBSCRIBEm();\n if (result0 === null) {\n result0 = parse_NOTIFYm();\n if (result0 === null) {\n result0 = parse_REFERm();\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.method = input.substring(pos, offset);\n return data.method; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Status_Line() {\n var result0, result1, result2, result3, result4;\n var pos0;\n pos0 = pos;\n result0 = parse_SIP_Version();\n if (result0 !== null) {\n result1 = parse_SP();\n if (result1 !== null) {\n result2 = parse_Status_Code();\n if (result2 !== null) {\n result3 = parse_SP();\n if (result3 !== null) {\n result4 = parse_Reason_Phrase();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Status_Code() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_extension_code();\n if (result0 !== null) {\n result0 = (function(offset, status_code) {\n data.status_code = parseInt(status_code.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_extension_code() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_DIGIT();\n if (result0 !== null) {\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result2 = parse_DIGIT();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Reason_Phrase() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result0 = [];\n result1 = parse_reserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_UTF8_NONASCII();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n }\n }\n }\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_reserved();\n if (result1 === null) {\n result1 = parse_unreserved();\n if (result1 === null) {\n result1 = parse_escaped();\n if (result1 === null) {\n result1 = parse_UTF8_NONASCII();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_SP();\n if (result1 === null) {\n result1 = parse_HTAB();\n }\n }\n }\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.reason_phrase = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Allow_Events() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_event_type();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_event_type();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_event_type();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Call_ID() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_word();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_word();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Contact() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n result0 = parse_STAR();\n if (result0 === null) {\n pos1 = pos;\n result0 = parse_contact_param();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_contact_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_contact_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var idx, length;\n length = data.multi_header.length;\n for (idx = 0; idx < length; idx++) {\n if (data.multi_header[idx].parsed === null) {\n data = null;\n break;\n }\n }\n if (data !== null) {\n data = data.multi_header;\n } else {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_contact_param() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_contact_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_contact_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var header;\n if(!data.multi_header) data.multi_header = [];\n try {\n header = new NameAddrHeader(data.uri, data.display_name, data.params);\n delete data.uri;\n delete data.display_name;\n delete data.params;\n } catch(e) {\n header = null;\n }\n data.multi_header.push( { 'possition': pos,\n 'offset': offset,\n 'parsed': header\n });})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_name_addr() {\n var result0, result1, result2, result3;\n var pos0;\n pos0 = pos;\n result0 = parse_display_name();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_LAQUOT();\n if (result1 !== null) {\n result2 = parse_SIP_URI();\n if (result2 !== null) {\n result3 = parse_RAQUOT();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_display_name() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_LWS();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_LWS();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 === null) {\n result0 = parse_quoted_string_clean();\n }\n if (result0 !== null) {\n result0 = (function(offset, display_name) {\n if (typeof display_name === 'string') { // quoted_string_clean\n data.display_name = display_name;\n } else { // token ( LWS token )*\n data.display_name = display_name[1].reduce(function(acc, cur) {\n return acc + cur[0] + cur[1];\n }, display_name[0]);\n }})(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_contact_params() {\n var result0;\n result0 = parse_c_p_q();\n if (result0 === null) {\n result0 = parse_c_p_expires();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n return result0;\n }\n function parse_c_p_q() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 1).toLowerCase() === \"q\") {\n result0 = input.substr(pos, 1);\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"q\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_qvalue();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, q) {\n if(!data.params) data.params = {};\n data.params['q'] = q; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_c_p_expires() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 7).toLowerCase() === \"expires\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"expires\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_delta_seconds();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, expires) {\n if(!data.params) data.params = {};\n data.params['expires'] = expires; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_delta_seconds() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, delta_seconds) {\n return parseInt(delta_seconds.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_qvalue() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n if (input.charCodeAt(pos) === 48) {\n result0 = \"0\";\n pos++;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"0\\\"\");\n }\n }\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 46) {\n result1 = \".\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result1 = [result1, result2, result3, result4];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n return parseFloat(input.substring(pos, offset)); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_generic_param() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n pos2 = pos;\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_gen_value();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, param, value) {\n if(!data.params) data.params = {};\n if (typeof value === 'undefined'){\n value = undefined;\n }\n else {\n value = value[1];\n }\n data.params[param.toLowerCase()] = value;})(pos0, result0[0], result0[1]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_gen_value() {\n var result0;\n result0 = parse_token();\n if (result0 === null) {\n result0 = parse_host();\n if (result0 === null) {\n result0 = parse_quoted_string();\n }\n }\n return result0;\n }\n function parse_Content_Disposition() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_disp_type();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_disp_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_disp_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_disp_type() {\n var result0;\n if (input.substr(pos, 6).toLowerCase() === \"render\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"render\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 7).toLowerCase() === \"session\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"session\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"icon\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"icon\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"alert\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"alert\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n return result0;\n }\n function parse_disp_param() {\n var result0;\n result0 = parse_handling_param();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_handling_param() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"handling\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"handling\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n if (input.substr(pos, 8).toLowerCase() === \"optional\") {\n result2 = input.substr(pos, 8);\n pos += 8;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"optional\\\"\");\n }\n }\n if (result2 === null) {\n if (input.substr(pos, 8).toLowerCase() === \"required\") {\n result2 = input.substr(pos, 8);\n pos += 8;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"required\\\"\");\n }\n }\n if (result2 === null) {\n result2 = parse_token();\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Content_Encoding() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Content_Length() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, length) {\n data = parseInt(length.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Content_Type() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_media_type();\n if (result0 !== null) {\n result0 = (function(offset) {\n data = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_media_type() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_m_type();\n if (result0 !== null) {\n result1 = parse_SLASH();\n if (result1 !== null) {\n result2 = parse_m_subtype();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_m_parameter();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_m_parameter();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_m_type() {\n var result0;\n result0 = parse_discrete_type();\n if (result0 === null) {\n result0 = parse_composite_type();\n }\n return result0;\n }\n function parse_discrete_type() {\n var result0;\n if (input.substr(pos, 4).toLowerCase() === \"text\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"text\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"image\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"image\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"audio\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"audio\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 5).toLowerCase() === \"video\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"video\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 11).toLowerCase() === \"application\") {\n result0 = input.substr(pos, 11);\n pos += 11;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"application\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_extension_token();\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_composite_type() {\n var result0;\n if (input.substr(pos, 7).toLowerCase() === \"message\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"message\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 9).toLowerCase() === \"multipart\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"multipart\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_extension_token();\n }\n }\n return result0;\n }\n function parse_extension_token() {\n var result0;\n result0 = parse_token();\n if (result0 === null) {\n result0 = parse_x_token();\n }\n return result0;\n }\n function parse_x_token() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 2).toLowerCase() === \"x-\") {\n result0 = input.substr(pos, 2);\n pos += 2;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"x-\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_token();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_m_subtype() {\n var result0;\n result0 = parse_extension_token();\n if (result0 === null) {\n result0 = parse_token();\n }\n return result0;\n }\n function parse_m_parameter() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_m_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_m_value() {\n var result0;\n result0 = parse_token();\n if (result0 === null) {\n result0 = parse_quoted_string();\n }\n return result0;\n }\n function parse_CSeq() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_CSeq_value();\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_Method();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_CSeq_value() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, cseq_value) {\n data.value=parseInt(cseq_value.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Expires() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_delta_seconds();\n if (result0 !== null) {\n result0 = (function(offset, expires) {data = expires; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Event() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_event_type();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, event_type) {\n data.event = event_type.join('').toLowerCase(); })(pos0, result0[0]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_event_type() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token_nodot();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_token_nodot();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n if (input.charCodeAt(pos) === 46) {\n result2 = \".\";\n pos++;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\".\\\"\");\n }\n }\n if (result2 !== null) {\n result3 = parse_token_nodot();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_From() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_from_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_from_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var tag = data.tag;\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n if (tag) {data.setParam('tag',tag)}\n } catch(e) {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_from_param() {\n var result0;\n result0 = parse_tag_param();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_tag_param() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"tag\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"tag\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, tag) {data.tag = tag; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Max_Forwards() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result1 = parse_DIGIT();\n if (result1 !== null) {\n result0 = [];\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_DIGIT();\n }\n } else {\n result0 = null;\n }\n if (result0 !== null) {\n result0 = (function(offset, forwards) {\n data = parseInt(forwards.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Min_Expires() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_delta_seconds();\n if (result0 !== null) {\n result0 = (function(offset, min_expires) {data = min_expires; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Name_Addr_Header() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = [];\n result1 = parse_display_name();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_display_name();\n }\n if (result0 !== null) {\n result1 = parse_LAQUOT();\n if (result1 !== null) {\n result2 = parse_SIP_URI();\n if (result2 !== null) {\n result3 = parse_RAQUOT();\n if (result3 !== null) {\n result4 = [];\n pos2 = pos;\n result5 = parse_SEMI();\n if (result5 !== null) {\n result6 = parse_generic_param();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n while (result5 !== null) {\n result4.push(result5);\n pos2 = pos;\n result5 = parse_SEMI();\n if (result5 !== null) {\n result6 = parse_generic_param();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n }\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n } catch(e) {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Proxy_Authenticate() {\n var result0;\n result0 = parse_challenge();\n return result0;\n }\n function parse_challenge() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"digest\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"Digest\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_digest_cln();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_digest_cln();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_digest_cln();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_other_challenge();\n }\n return result0;\n }\n function parse_other_challenge() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_auth_param();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_auth_param();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_COMMA();\n if (result4 !== null) {\n result5 = parse_auth_param();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_auth_param() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 === null) {\n result2 = parse_quoted_string();\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_digest_cln() {\n var result0;\n result0 = parse_realm();\n if (result0 === null) {\n result0 = parse_domain();\n if (result0 === null) {\n result0 = parse_nonce();\n if (result0 === null) {\n result0 = parse_opaque();\n if (result0 === null) {\n result0 = parse_stale();\n if (result0 === null) {\n result0 = parse_algorithm();\n if (result0 === null) {\n result0 = parse_qop_options();\n if (result0 === null) {\n result0 = parse_auth_param();\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_realm() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"realm\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"realm\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_realm_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_realm_value() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_quoted_string_clean();\n if (result0 !== null) {\n result0 = (function(offset, realm) { data.realm = realm; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_domain() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"domain\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"domain\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_LDQUOT();\n if (result2 !== null) {\n result3 = parse_URI();\n if (result3 !== null) {\n result4 = [];\n pos1 = pos;\n result6 = parse_SP();\n if (result6 !== null) {\n result5 = [];\n while (result6 !== null) {\n result5.push(result6);\n result6 = parse_SP();\n }\n } else {\n result5 = null;\n }\n if (result5 !== null) {\n result6 = parse_URI();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos1;\n }\n } else {\n result5 = null;\n pos = pos1;\n }\n while (result5 !== null) {\n result4.push(result5);\n pos1 = pos;\n result6 = parse_SP();\n if (result6 !== null) {\n result5 = [];\n while (result6 !== null) {\n result5.push(result6);\n result6 = parse_SP();\n }\n } else {\n result5 = null;\n }\n if (result5 !== null) {\n result6 = parse_URI();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos1;\n }\n } else {\n result5 = null;\n pos = pos1;\n }\n }\n if (result4 !== null) {\n result5 = parse_RDQUOT();\n if (result5 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_URI() {\n var result0;\n result0 = parse_absoluteURI();\n if (result0 === null) {\n result0 = parse_abs_path();\n }\n return result0;\n }\n function parse_nonce() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"nonce\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"nonce\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_nonce_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_nonce_value() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_quoted_string_clean();\n if (result0 !== null) {\n result0 = (function(offset, nonce) { data.nonce=nonce; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_opaque() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"opaque\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"opaque\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_quoted_string_clean();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, opaque) { data.opaque=opaque; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_stale() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"stale\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"stale\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n pos1 = pos;\n if (input.substr(pos, 4).toLowerCase() === \"true\") {\n result2 = input.substr(pos, 4);\n pos += 4;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"true\\\"\");\n }\n }\n if (result2 !== null) {\n result2 = (function(offset) { data.stale=true; })(pos1);\n }\n if (result2 === null) {\n pos = pos1;\n }\n if (result2 === null) {\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"false\") {\n result2 = input.substr(pos, 5);\n pos += 5;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"false\\\"\");\n }\n }\n if (result2 !== null) {\n result2 = (function(offset) { data.stale=false; })(pos1);\n }\n if (result2 === null) {\n pos = pos1;\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_algorithm() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 9).toLowerCase() === \"algorithm\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"algorithm\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"md5\") {\n result2 = input.substr(pos, 3);\n pos += 3;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MD5\\\"\");\n }\n }\n if (result2 === null) {\n if (input.substr(pos, 8).toLowerCase() === \"md5-sess\") {\n result2 = input.substr(pos, 8);\n pos += 8;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"MD5-sess\\\"\");\n }\n }\n if (result2 === null) {\n result2 = parse_token();\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, algorithm) {\n data.algorithm=algorithm.toUpperCase(); })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_qop_options() {\n var result0, result1, result2, result3, result4, result5, result6;\n var pos0, pos1, pos2;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"qop\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"qop\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_LDQUOT();\n if (result2 !== null) {\n pos1 = pos;\n result3 = parse_qop_value();\n if (result3 !== null) {\n result4 = [];\n pos2 = pos;\n if (input.charCodeAt(pos) === 44) {\n result5 = \",\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_qop_value();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n while (result5 !== null) {\n result4.push(result5);\n pos2 = pos;\n if (input.charCodeAt(pos) === 44) {\n result5 = \",\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\",\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_qop_value();\n if (result6 !== null) {\n result5 = [result5, result6];\n } else {\n result5 = null;\n pos = pos2;\n }\n } else {\n result5 = null;\n pos = pos2;\n }\n }\n if (result4 !== null) {\n result3 = [result3, result4];\n } else {\n result3 = null;\n pos = pos1;\n }\n } else {\n result3 = null;\n pos = pos1;\n }\n if (result3 !== null) {\n result4 = parse_RDQUOT();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_qop_value() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"auth-int\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"auth-int\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"auth\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"auth\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n if (result0 !== null) {\n result0 = (function(offset, qop_value) {\n data.qop || (data.qop=[]);\n data.qop.push(qop_value.toLowerCase()); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Proxy_Require() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Record_Route() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_rec_route();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_rec_route();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_rec_route();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var idx, length;\n length = data.multi_header.length;\n for (idx = 0; idx < length; idx++) {\n if (data.multi_header[idx].parsed === null) {\n data = null;\n break;\n }\n }\n if (data !== null) {\n data = data.multi_header;\n } else {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_rec_route() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_name_addr();\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var header;\n if(!data.multi_header) data.multi_header = [];\n try {\n header = new NameAddrHeader(data.uri, data.display_name, data.params);\n delete data.uri;\n delete data.display_name;\n delete data.params;\n } catch(e) {\n header = null;\n }\n data.multi_header.push( { 'possition': pos,\n 'offset': offset,\n 'parsed': header\n });})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Reason() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SIP\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_reason_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_reason_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, protocol) {\n data.protocol = protocol.toLowerCase();\n if (!data.params) data.params = {};\n if (data.params.text && data.params.text[0] === '\"') {\n var text = data.params.text;\n data.text = text.substring(1, text.length-1);\n delete data.params.text;\n }\n })(pos0, result0[0]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_reason_param() {\n var result0;\n result0 = parse_reason_cause();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_reason_cause() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"cause\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"cause\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result3 = parse_DIGIT();\n if (result3 !== null) {\n result2 = [];\n while (result3 !== null) {\n result2.push(result3);\n result3 = parse_DIGIT();\n }\n } else {\n result2 = null;\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, cause) {\n data.cause = parseInt(cause.join(''));\n })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Require() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Route() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_route_param();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_route_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_route_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_route_param() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_name_addr();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Subscription_State() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_substate_value();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_subexp_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_subexp_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_substate_value() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"active\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"active\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 7).toLowerCase() === \"pending\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"pending\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 10).toLowerCase() === \"terminated\") {\n result0 = input.substr(pos, 10);\n pos += 10;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"terminated\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.state = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_subexp_params() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"reason\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"reason\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_event_reason_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, reason) {\n if (typeof reason !== 'undefined') data.reason = reason; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 7).toLowerCase() === \"expires\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"expires\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_delta_seconds();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, expires) {\n if (typeof expires !== 'undefined') data.expires = expires; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 11).toLowerCase() === \"retry_after\") {\n result0 = input.substr(pos, 11);\n pos += 11;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"retry_after\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_delta_seconds();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, retry_after) {\n if (typeof retry_after !== 'undefined') data.retry_after = retry_after; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n }\n return result0;\n }\n function parse_event_reason_value() {\n var result0;\n if (input.substr(pos, 11).toLowerCase() === \"deactivated\") {\n result0 = input.substr(pos, 11);\n pos += 11;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"deactivated\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 9).toLowerCase() === \"probation\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"probation\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 8).toLowerCase() === \"rejected\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"rejected\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 7).toLowerCase() === \"timeout\") {\n result0 = input.substr(pos, 7);\n pos += 7;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"timeout\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 6).toLowerCase() === \"giveup\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"giveup\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 10).toLowerCase() === \"noresource\") {\n result0 = input.substr(pos, 10);\n pos += 10;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"noresource\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 9).toLowerCase() === \"invariant\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"invariant\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_Subject() {\n var result0;\n result0 = parse_TEXT_UTF8_TRIM();\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_Supported() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_token();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n result0 = result0 !== null ? result0 : \"\";\n return result0;\n }\n function parse_To() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_to_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_to_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n var tag = data.tag;\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n if (tag) {data.setParam('tag',tag)}\n } catch(e) {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_to_param() {\n var result0;\n result0 = parse_tag_param();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_Via() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_via_param();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_via_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_COMMA();\n if (result2 !== null) {\n result3 = parse_via_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_via_param() {\n var result0, result1, result2, result3, result4, result5;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_sent_protocol();\n if (result0 !== null) {\n result1 = parse_LWS();\n if (result1 !== null) {\n result2 = parse_sent_by();\n if (result2 !== null) {\n result3 = [];\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_via_params();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n while (result4 !== null) {\n result3.push(result4);\n pos1 = pos;\n result4 = parse_SEMI();\n if (result4 !== null) {\n result5 = parse_via_params();\n if (result5 !== null) {\n result4 = [result4, result5];\n } else {\n result4 = null;\n pos = pos1;\n }\n } else {\n result4 = null;\n pos = pos1;\n }\n }\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_via_params() {\n var result0;\n result0 = parse_via_ttl();\n if (result0 === null) {\n result0 = parse_via_maddr();\n if (result0 === null) {\n result0 = parse_via_received();\n if (result0 === null) {\n result0 = parse_via_branch();\n if (result0 === null) {\n result0 = parse_response_port();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n }\n }\n }\n return result0;\n }\n function parse_via_ttl() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"ttl\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"ttl\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_ttl();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, via_ttl_value) {\n data.ttl = via_ttl_value; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_maddr() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"maddr\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"maddr\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_host();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, via_maddr) {\n data.maddr = via_maddr; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_received() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 8).toLowerCase() === \"received\") {\n result0 = input.substr(pos, 8);\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"received\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_IPv4address();\n if (result2 === null) {\n result2 = parse_IPv6address();\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, via_received) {\n data.received = via_received; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_branch() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6).toLowerCase() === \"branch\") {\n result0 = input.substr(pos, 6);\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"branch\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, via_branch) {\n data.branch = via_branch; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_response_port() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n if (input.substr(pos, 5).toLowerCase() === \"rport\") {\n result0 = input.substr(pos, 5);\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"rport\\\"\");\n }\n }\n if (result0 !== null) {\n pos1 = pos;\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_rport();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos1;\n }\n } else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_rport() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, rport) {\n data.rport = parseInt(rport.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_sent_protocol() {\n var result0, result1, result2, result3, result4;\n var pos0;\n pos0 = pos;\n result0 = parse_protocol_name();\n if (result0 !== null) {\n result1 = parse_SLASH();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result3 = parse_SLASH();\n if (result3 !== null) {\n result4 = parse_transport();\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_protocol_name() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"sip\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SIP\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n if (result0 !== null) {\n result0 = (function(offset, via_protocol) {\n data.protocol = via_protocol; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_transport() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 3).toLowerCase() === \"udp\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"UDP\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tcp\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TCP\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"tls\") {\n result0 = input.substr(pos, 3);\n pos += 3;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"TLS\\\"\");\n }\n }\n if (result0 === null) {\n if (input.substr(pos, 4).toLowerCase() === \"sctp\") {\n result0 = input.substr(pos, 4);\n pos += 4;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"SCTP\\\"\");\n }\n }\n if (result0 === null) {\n result0 = parse_token();\n }\n }\n }\n }\n if (result0 !== null) {\n result0 = (function(offset, via_transport) {\n data.transport = via_transport; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_sent_by() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_via_host();\n if (result0 !== null) {\n pos1 = pos;\n result1 = parse_COLON();\n if (result1 !== null) {\n result2 = parse_via_port();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos1;\n }\n } else {\n result1 = null;\n pos = pos1;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_via_host() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_IPv4address();\n if (result0 === null) {\n result0 = parse_IPv6reference();\n if (result0 === null) {\n result0 = parse_hostname();\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.host = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_via_port() {\n var result0, result1, result2, result3, result4;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n result0 = result0 !== null ? result0 : \"\";\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result3 = parse_DIGIT();\n result3 = result3 !== null ? result3 : \"\";\n if (result3 !== null) {\n result4 = parse_DIGIT();\n result4 = result4 !== null ? result4 : \"\";\n if (result4 !== null) {\n result0 = [result0, result1, result2, result3, result4];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, via_sent_by_port) {\n data.port = parseInt(via_sent_by_port.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_ttl() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_DIGIT();\n if (result0 !== null) {\n result1 = parse_DIGIT();\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result2 = parse_DIGIT();\n result2 = result2 !== null ? result2 : \"\";\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, ttl) {\n return parseInt(ttl.join('')); })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_WWW_Authenticate() {\n var result0;\n result0 = parse_challenge();\n return result0;\n }\n function parse_Session_Expires() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_s_e_expires();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_s_e_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_s_e_params();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_s_e_expires() {\n var result0;\n var pos0;\n pos0 = pos;\n result0 = parse_delta_seconds();\n if (result0 !== null) {\n result0 = (function(offset, expires) { data.expires = expires; })(pos0, result0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_s_e_params() {\n var result0;\n result0 = parse_s_e_refresher();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n return result0;\n }\n function parse_s_e_refresher() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 9).toLowerCase() === \"refresher\") {\n result0 = input.substr(pos, 9);\n pos += 9;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"refresher\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n if (input.substr(pos, 3).toLowerCase() === \"uac\") {\n result2 = input.substr(pos, 3);\n pos += 3;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"uac\\\"\");\n }\n }\n if (result2 === null) {\n if (input.substr(pos, 3).toLowerCase() === \"uas\") {\n result2 = input.substr(pos, 3);\n pos += 3;\n } else {\n result2 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"uas\\\"\");\n }\n }\n }\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, s_e_refresher_value) { data.refresher = s_e_refresher_value.toLowerCase(); })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_extension_header() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_token();\n if (result0 !== null) {\n result1 = parse_HCOLON();\n if (result1 !== null) {\n result2 = parse_header_value();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_header_value() {\n var result0, result1;\n result0 = [];\n result1 = parse_TEXT_UTF8char();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_LWS();\n }\n }\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_TEXT_UTF8char();\n if (result1 === null) {\n result1 = parse_UTF8_CONT();\n if (result1 === null) {\n result1 = parse_LWS();\n }\n }\n }\n return result0;\n }\n function parse_message_body() {\n var result0, result1;\n result0 = [];\n result1 = parse_OCTET();\n while (result1 !== null) {\n result0.push(result1);\n result1 = parse_OCTET();\n }\n return result0;\n }\n function parse_uuid_URI() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 5) === \"uuid:\") {\n result0 = \"uuid:\";\n pos += 5;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"uuid:\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_uuid();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_uuid() {\n var result0, result1, result2, result3, result4, result5, result6, result7, result8;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_hex8();\n if (result0 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result1 = \"-\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_hex4();\n if (result2 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result3 = \"-\";\n pos++;\n } else {\n result3 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result3 !== null) {\n result4 = parse_hex4();\n if (result4 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result5 = \"-\";\n pos++;\n } else {\n result5 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result5 !== null) {\n result6 = parse_hex4();\n if (result6 !== null) {\n if (input.charCodeAt(pos) === 45) {\n result7 = \"-\";\n pos++;\n } else {\n result7 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"-\\\"\");\n }\n }\n if (result7 !== null) {\n result8 = parse_hex12();\n if (result8 !== null) {\n result0 = [result0, result1, result2, result3, result4, result5, result6, result7, result8];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, uuid) {\n data = input.substring(pos+5, offset); })(pos0, result0[0]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_hex4() {\n var result0, result1, result2, result3;\n var pos0;\n pos0 = pos;\n result0 = parse_HEXDIG();\n if (result0 !== null) {\n result1 = parse_HEXDIG();\n if (result1 !== null) {\n result2 = parse_HEXDIG();\n if (result2 !== null) {\n result3 = parse_HEXDIG();\n if (result3 !== null) {\n result0 = [result0, result1, result2, result3];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_hex8() {\n var result0, result1;\n var pos0;\n pos0 = pos;\n result0 = parse_hex4();\n if (result0 !== null) {\n result1 = parse_hex4();\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_hex12() {\n var result0, result1, result2;\n var pos0;\n pos0 = pos;\n result0 = parse_hex4();\n if (result0 !== null) {\n result1 = parse_hex4();\n if (result1 !== null) {\n result2 = parse_hex4();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_Refer_To() {\n var result0, result1, result2, result3;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_SIP_URI_noparams();\n if (result0 === null) {\n result0 = parse_name_addr();\n }\n if (result0 !== null) {\n result1 = [];\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos2 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_generic_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos2;\n }\n } else {\n result2 = null;\n pos = pos2;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n try {\n data = new NameAddrHeader(data.uri, data.display_name, data.params);\n } catch(e) {\n data = -1;\n }})(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_Replaces() {\n var result0, result1, result2, result3;\n var pos0, pos1;\n pos0 = pos;\n result0 = parse_call_id();\n if (result0 !== null) {\n result1 = [];\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_replaces_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n while (result2 !== null) {\n result1.push(result2);\n pos1 = pos;\n result2 = parse_SEMI();\n if (result2 !== null) {\n result3 = parse_replaces_param();\n if (result3 !== null) {\n result2 = [result2, result3];\n } else {\n result2 = null;\n pos = pos1;\n }\n } else {\n result2 = null;\n pos = pos1;\n }\n }\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos0;\n }\n } else {\n result0 = null;\n pos = pos0;\n }\n return result0;\n }\n function parse_call_id() {\n var result0, result1, result2;\n var pos0, pos1, pos2;\n pos0 = pos;\n pos1 = pos;\n result0 = parse_word();\n if (result0 !== null) {\n pos2 = pos;\n if (input.charCodeAt(pos) === 64) {\n result1 = \"@\";\n pos++;\n } else {\n result1 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"@\\\"\");\n }\n }\n if (result1 !== null) {\n result2 = parse_word();\n if (result2 !== null) {\n result1 = [result1, result2];\n } else {\n result1 = null;\n pos = pos2;\n }\n } else {\n result1 = null;\n pos = pos2;\n }\n result1 = result1 !== null ? result1 : \"\";\n if (result1 !== null) {\n result0 = [result0, result1];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.call_id = input.substring(pos, offset); })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_replaces_param() {\n var result0;\n result0 = parse_to_tag();\n if (result0 === null) {\n result0 = parse_from_tag();\n if (result0 === null) {\n result0 = parse_early_flag();\n if (result0 === null) {\n result0 = parse_generic_param();\n }\n }\n }\n return result0;\n }\n function parse_to_tag() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 6) === \"to-tag\") {\n result0 = \"to-tag\";\n pos += 6;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"to-tag\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, to_tag) {\n data.to_tag = to_tag; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_from_tag() {\n var result0, result1, result2;\n var pos0, pos1;\n pos0 = pos;\n pos1 = pos;\n if (input.substr(pos, 8) === \"from-tag\") {\n result0 = \"from-tag\";\n pos += 8;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"from-tag\\\"\");\n }\n }\n if (result0 !== null) {\n result1 = parse_EQUAL();\n if (result1 !== null) {\n result2 = parse_token();\n if (result2 !== null) {\n result0 = [result0, result1, result2];\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n } else {\n result0 = null;\n pos = pos1;\n }\n if (result0 !== null) {\n result0 = (function(offset, from_tag) {\n data.from_tag = from_tag; })(pos0, result0[2]);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function parse_early_flag() {\n var result0;\n var pos0;\n pos0 = pos;\n if (input.substr(pos, 10) === \"early-only\") {\n result0 = \"early-only\";\n pos += 10;\n } else {\n result0 = null;\n if (reportFailures === 0) {\n matchFailed(\"\\\"early-only\\\"\");\n }\n }\n if (result0 !== null) {\n result0 = (function(offset) {\n data.early_only = true; })(pos0);\n }\n if (result0 === null) {\n pos = pos0;\n }\n return result0;\n }\n function cleanupExpected(expected) {\n expected.sort();\n var lastExpected = null;\n var cleanExpected = [];\n for (var i = 0; i < expected.length; i++) {\n if (expected[i] !== lastExpected) {\n cleanExpected.push(expected[i]);\n lastExpected = expected[i];\n }\n }\n return cleanExpected;\n }\n function computeErrorPosition() {\n /*\n * The first idea was to use |String.split| to break the input up to the\n * error position along newlines and derive the line and column from\n * there. However IE's |split| implementation is so broken that it was\n * enough to prevent it.\n */\n var line = 1;\n var column = 1;\n var seenCR = false;\n for (var i = 0; i < Math.max(pos, rightmostFailuresPos); i++) {\n var ch = input.charAt(i);\n if (ch === \"\\n\") {\n if (!seenCR) { line++; }\n column = 1;\n seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n line++;\n column = 1;\n seenCR = true;\n } else {\n column++;\n seenCR = false;\n }\n }\n return { line: line, column: column };\n }\n var URI = require('./URI');\n var NameAddrHeader = require('./NameAddrHeader');\n var data = {};\n var result = parseFunctions[startRule]();\n /*\n * The parser is now in one of the following three states:\n *\n * 1. The parser successfully parsed the whole input.\n *\n * - |result !== null|\n * - |pos === input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 2. The parser successfully parsed only a part of the input.\n *\n * - |result !== null|\n * - |pos < input.length|\n * - |rightmostFailuresExpected| may or may not contain something\n *\n * 3. The parser did not successfully parse any part of the input.\n *\n * - |result === null|\n * - |pos === 0|\n * - |rightmostFailuresExpected| contains at least one failure\n *\n * All code following this comment (including called functions) must\n * handle these states.\n */\n if (result === null || pos !== input.length) {\n var offset = Math.max(pos, rightmostFailuresPos);\n var found = offset < input.length ? input.charAt(offset) : null;\n var errorPosition = computeErrorPosition();\n new this.SyntaxError(\n cleanupExpected(rightmostFailuresExpected),\n found,\n offset,\n errorPosition.line,\n errorPosition.column\n );\n return -1;\n }\n return data;\n },\n /* Returns the parser source code. */\n toSource: function() { return this._source; }\n };\n /* Thrown when a parser encounters a syntax error. */\n result.SyntaxError = function(expected, found, offset, line, column) {\n function buildMessage(expected, found) {\n var expectedHumanized, foundHumanized;\n switch (expected.length) {\n case 0:\n expectedHumanized = \"end of input\";\n break;\n case 1:\n expectedHumanized = expected[0];\n break;\n default:\n expectedHumanized = expected.slice(0, expected.length - 1).join(\", \")\n + \" or \"\n + expected[expected.length - 1];\n }\n foundHumanized = found ? quote(found) : \"end of input\";\n return \"Expected \" + expectedHumanized + \" but \" + foundHumanized + \" found.\";\n }\n this.name = \"SyntaxError\";\n this.expected = expected;\n this.found = found;\n this.message = buildMessage(expected, found);\n this.offset = offset;\n this.line = line;\n this.column = column;\n };\n result.SyntaxError.prototype = Error.prototype;\n return result;\n})();","const JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst Grammar = require('./Grammar');\n\n/**\n * -param {String} [scheme]\n * -param {String} [user]\n * -param {String} host\n * -param {String} [port]\n * -param {Object} [parameters]\n * -param {Object} [headers]\n *\n */\nmodule.exports = class URI\n{\n /**\n * Parse the given string and returns a JsSIP.URI instance or undefined if\n * it is an invalid URI.\n */\n static parse(uri)\n {\n uri = Grammar.parse(uri, 'SIP_URI');\n\n if (uri !== -1)\n {\n return uri;\n }\n else\n {\n return undefined;\n }\n }\n\n constructor(scheme, user, host, port, parameters = {}, headers = {})\n {\n // Checks.\n if (!host)\n {\n throw new TypeError('missing or invalid \"host\" parameter');\n }\n\n // Initialize parameters.\n this._parameters = {};\n this._headers = {};\n\n this._scheme = scheme || JsSIP_C.SIP;\n this._user = user;\n this._host = host;\n this._port = port;\n\n for (const param in parameters)\n {\n if (Object.prototype.hasOwnProperty.call(parameters, param))\n {\n this.setParam(param, parameters[param]);\n }\n }\n\n for (const header in headers)\n {\n if (Object.prototype.hasOwnProperty.call(headers, header))\n {\n this.setHeader(header, headers[header]);\n }\n }\n }\n\n get scheme()\n {\n return this._scheme;\n }\n\n set scheme(value)\n {\n this._scheme = value.toLowerCase();\n }\n\n get user()\n {\n return this._user;\n }\n\n set user(value)\n {\n this._user = value;\n }\n\n get host()\n {\n return this._host;\n }\n\n set host(value)\n {\n this._host = value.toLowerCase();\n }\n\n get port()\n {\n return this._port;\n }\n\n set port(value)\n {\n this._port = value === 0 ? value : (parseInt(value, 10) || null);\n }\n\n setParam(key, value)\n {\n if (key)\n {\n this._parameters[key.toLowerCase()] = (typeof value === 'undefined' || value === null) ? null : value.toString();\n }\n }\n\n getParam(key)\n {\n if (key)\n {\n return this._parameters[key.toLowerCase()];\n }\n }\n\n hasParam(key)\n {\n if (key)\n {\n return (this._parameters.hasOwnProperty(key.toLowerCase()) && true) || false;\n }\n }\n\n deleteParam(parameter)\n {\n parameter = parameter.toLowerCase();\n if (this._parameters.hasOwnProperty(parameter))\n {\n const value = this._parameters[parameter];\n\n delete this._parameters[parameter];\n\n return value;\n }\n }\n\n clearParams()\n {\n this._parameters = {};\n }\n\n setHeader(name, value)\n {\n this._headers[Utils.headerize(name)] = (Array.isArray(value)) ? value : [ value ];\n }\n\n getHeader(name)\n {\n if (name)\n {\n return this._headers[Utils.headerize(name)];\n }\n }\n\n hasHeader(name)\n {\n if (name)\n {\n return (this._headers.hasOwnProperty(Utils.headerize(name)) && true) || false;\n }\n }\n\n deleteHeader(header)\n {\n header = Utils.headerize(header);\n if (this._headers.hasOwnProperty(header))\n {\n const value = this._headers[header];\n\n delete this._headers[header];\n\n return value;\n }\n }\n\n clearHeaders()\n {\n this._headers = {};\n }\n\n clone()\n {\n return new URI(\n this._scheme,\n this._user,\n this._host,\n this._port,\n JSON.parse(JSON.stringify(this._parameters)),\n JSON.parse(JSON.stringify(this._headers)));\n }\n\n toString()\n {\n const headers = [];\n\n let uri = `${this._scheme}:`;\n\n if (this._user)\n {\n uri += `${Utils.escapeUser(this._user)}@`;\n }\n uri += this._host;\n if (this._port || this._port === 0)\n {\n uri += `:${this._port}`;\n }\n\n for (const parameter in this._parameters)\n {\n if (Object.prototype.hasOwnProperty.call(this._parameters, parameter))\n {\n uri += `;${parameter}`;\n\n if (this._parameters[parameter] !== null)\n {\n uri += `=${this._parameters[parameter]}`;\n }\n }\n }\n\n for (const header in this._headers)\n {\n if (Object.prototype.hasOwnProperty.call(this._headers, header))\n {\n for (const item of this._headers[header])\n {\n headers.push(`${header}=${item}`);\n }\n }\n }\n\n if (headers.length > 0)\n {\n uri += `?${headers.join('&')}`;\n }\n\n return uri;\n }\n\n toAor(show_port)\n {\n let aor = `${this._scheme}:`;\n\n if (this._user)\n {\n aor += `${Utils.escapeUser(this._user)}@`;\n }\n aor += this._host;\n if (show_port && (this._port || this._port === 0))\n {\n aor += `:${this._port}`;\n }\n\n return aor;\n }\n};\n","const JsSIP_C = require('./Constants');\nconst URI = require('./URI');\nconst Grammar = require('./Grammar');\n\nexports.str_utf8_length = (string) => unescape(encodeURIComponent(string)).length;\n\n// Used by 'hasMethods'.\nconst isFunction = exports.isFunction = (fn) =>\n{\n if (fn !== undefined)\n {\n return (Object.prototype.toString.call(fn) === '[object Function]')? true : false;\n }\n else\n {\n return false;\n }\n};\n\nexports.isString = (str) =>\n{\n if (str !== undefined)\n {\n return (Object.prototype.toString.call(str) === '[object String]')? true : false;\n }\n else\n {\n return false;\n }\n};\n\nexports.isDecimal = (num) => !isNaN(num) && (parseFloat(num) === parseInt(num, 10));\n\nexports.isEmpty = (value) =>\n{\n return (value === null ||\n value === '' ||\n value === undefined ||\n (Array.isArray(value) && value.length === 0) ||\n (typeof(value) === 'number' && isNaN(value)));\n};\n\nexports.hasMethods = function(obj, ...methodNames)\n{\n for (const methodName of methodNames)\n {\n if (isFunction(obj[methodName]))\n {\n return false;\n }\n }\n\n return true;\n};\n\n// Used by 'newTag'.\nconst createRandomToken = exports.createRandomToken = (size, base = 32) =>\n{\n let i, r, token = '';\n\n for (i=0; i < size; i++)\n {\n r = (Math.random() * base) | 0;\n token += r.toString(base);\n }\n\n return token;\n};\n\nexports.newTag = () => createRandomToken(10);\n\n// https://stackoverflow.com/users/109538/broofa.\nexports.newUUID = () =>\n{\n const UUID = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) =>\n {\n const r = Math.random()*16|0, v = c === 'x' ? r : ((r&0x3)|0x8);\n\n\n return v.toString(16);\n });\n\n return UUID;\n};\n\nexports.hostType = (host) =>\n{\n if (!host)\n {\n return;\n }\n else\n {\n host = Grammar.parse(host, 'host');\n if (host !== -1)\n {\n return host.host_type;\n }\n }\n};\n\n/**\n* Hex-escape a SIP URI user.\n* Don't hex-escape ':' (%3A), '+' (%2B), '?' (%3F\"), '/' (%2F).\n*\n* Used by 'normalizeTarget'.\n*/\nconst escapeUser = exports.escapeUser = (user) =>\n encodeURIComponent(decodeURIComponent(user))\n .replace(/%3A/ig, ':')\n .replace(/%2B/ig, '+')\n .replace(/%3F/ig, '?')\n .replace(/%2F/ig, '/');\n\n/**\n* Normalize SIP URI.\n* NOTE: It does not allow a SIP URI without username.\n* Accepts 'sip', 'sips' and 'tel' URIs and convert them into 'sip'.\n* Detects the domain part (if given) and properly hex-escapes the user portion.\n* If the user portion has only 'tel' number symbols the user portion is clean of 'tel' visual separators.\n*/\nexports.normalizeTarget = (target, domain) =>\n{\n // If no target is given then raise an error.\n if (!target)\n {\n return;\n // If a URI instance is given then return it.\n }\n else if (target instanceof URI)\n {\n return target;\n\n // If a string is given split it by '@':\n // - Last fragment is the desired domain.\n // - Otherwise append the given domain argument.\n }\n else if (typeof target === 'string')\n {\n const target_array = target.split('@');\n let target_user;\n let target_domain;\n\n switch (target_array.length)\n {\n case 1:\n if (!domain)\n {\n return;\n }\n target_user = target;\n target_domain = domain;\n break;\n case 2:\n target_user = target_array[0];\n target_domain = target_array[1];\n break;\n default:\n target_user = target_array.slice(0, target_array.length-1).join('@');\n target_domain = target_array[target_array.length-1];\n }\n\n // Remove the URI scheme (if present).\n target_user = target_user.replace(/^(sips?|tel):/i, '');\n\n // Remove 'tel' visual separators if the user portion just contains 'tel' number symbols.\n if (/^[-.()]*\\+?[0-9\\-.()]+$/.test(target_user))\n {\n target_user = target_user.replace(/[-.()]/g, '');\n }\n\n // Build the complete SIP URI.\n target = `${JsSIP_C.SIP}:${escapeUser(target_user)}@${target_domain}`;\n\n // Finally parse the resulting URI.\n let uri;\n\n if ((uri = URI.parse(target)))\n {\n return uri;\n }\n else\n {\n return;\n }\n }\n else\n {\n return;\n }\n};\n\nexports.headerize = (string) =>\n{\n const exceptions = {\n 'Call-Id' : 'Call-ID',\n 'Cseq' : 'CSeq',\n 'Www-Authenticate' : 'WWW-Authenticate'\n };\n\n const name = string.toLowerCase()\n .replace(/_/g, '-')\n .split('-');\n let hname = '';\n const parts = name.length;\n let part;\n\n for (part = 0; part < parts; part++)\n {\n if (part !== 0)\n {\n hname +='-';\n }\n hname += name[part].charAt(0).toUpperCase()+name[part].substring(1);\n }\n if (exceptions[hname])\n {\n hname = exceptions[hname];\n }\n\n return hname;\n};\n\nexports.sipErrorCause = (status_code) =>\n{\n for (const cause in JsSIP_C.SIP_ERROR_CAUSES)\n {\n if (JsSIP_C.SIP_ERROR_CAUSES[cause].indexOf(status_code) !== -1)\n {\n return JsSIP_C.causes[cause];\n }\n }\n\n return JsSIP_C.causes.SIP_FAILURE_CODE;\n};\n\n/**\n* Generate a random Test-Net IP (https://tools.ietf.org/html/rfc5735)\n*/\nexports.getRandomTestNetIP = () =>\n{\n function getOctet(from, to)\n {\n return Math.floor((Math.random() * (to-from+1)) + from);\n }\n\n return `192.0.2.${getOctet(1, 254)}`;\n};\n\n// MD5 (Message-Digest Algorithm) https://www.webtoolkit.info.\nexports.calculateMD5 = (string) =>\n{\n function rotateLeft(lValue, iShiftBits)\n {\n return (lValue<<iShiftBits) | (lValue>>>(32-iShiftBits));\n }\n\n function addUnsigned(lX, lY)\n {\n const lX8 = (lX & 0x80000000);\n const lY8 = (lY & 0x80000000);\n const lX4 = (lX & 0x40000000);\n const lY4 = (lY & 0x40000000);\n const lResult = (lX & 0x3FFFFFFF)+(lY & 0x3FFFFFFF);\n\n if (lX4 & lY4)\n {\n return (lResult ^ 0x80000000 ^ lX8 ^ lY8);\n }\n if (lX4 | lY4)\n {\n if (lResult & 0x40000000)\n {\n return (lResult ^ 0xC0000000 ^ lX8 ^ lY8);\n }\n else\n {\n return (lResult ^ 0x40000000 ^ lX8 ^ lY8);\n }\n }\n else\n {\n return (lResult ^ lX8 ^ lY8);\n }\n }\n\n function doF(x, y, z)\n {\n return (x & y) | ((~x) & z);\n }\n\n function doG(x, y, z)\n {\n return (x & z) | (y & (~z));\n }\n\n function doH(x, y, z)\n {\n return (x ^ y ^ z);\n }\n\n function doI(x, y, z)\n {\n return (y ^ (x | (~z)));\n }\n\n function doFF(a, b, c, d, x, s, ac)\n {\n a = addUnsigned(a, addUnsigned(addUnsigned(doF(b, c, d), x), ac));\n\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function doGG(a, b, c, d, x, s, ac)\n {\n a = addUnsigned(a, addUnsigned(addUnsigned(doG(b, c, d), x), ac));\n\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function doHH(a, b, c, d, x, s, ac)\n {\n a = addUnsigned(a, addUnsigned(addUnsigned(doH(b, c, d), x), ac));\n\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function doII(a, b, c, d, x, s, ac)\n {\n a = addUnsigned(a, addUnsigned(addUnsigned(doI(b, c, d), x), ac));\n\n return addUnsigned(rotateLeft(a, s), b);\n }\n\n function convertToWordArray(str)\n {\n let lWordCount;\n const lMessageLength = str.length;\n const lNumberOfWords_temp1=lMessageLength + 8;\n const lNumberOfWords_temp2=(lNumberOfWords_temp1-(lNumberOfWords_temp1 % 64))/64;\n const lNumberOfWords = (lNumberOfWords_temp2+1)*16;\n const lWordArray = new Array(lNumberOfWords-1);\n let lBytePosition = 0;\n let lByteCount = 0;\n\n while (lByteCount < lMessageLength)\n {\n lWordCount = (lByteCount-(lByteCount % 4))/4;\n lBytePosition = (lByteCount % 4)*8;\n lWordArray[lWordCount] = (lWordArray[lWordCount] |\n (str.charCodeAt(lByteCount)<<lBytePosition));\n lByteCount++;\n }\n lWordCount = (lByteCount-(lByteCount % 4))/4;\n lBytePosition = (lByteCount % 4)*8;\n lWordArray[lWordCount] = lWordArray[lWordCount] | (0x80<<lBytePosition);\n lWordArray[lNumberOfWords-2] = lMessageLength<<3;\n lWordArray[lNumberOfWords-1] = lMessageLength>>>29;\n\n return lWordArray;\n }\n\n function wordToHex(lValue)\n {\n let wordToHexValue='', wordToHexValue_temp='', lByte, lCount;\n\n for (lCount = 0; lCount<=3; lCount++)\n {\n lByte = (lValue>>>(lCount*8)) & 255;\n wordToHexValue_temp = `0${lByte.toString(16)}`;\n wordToHexValue = wordToHexValue +\n wordToHexValue_temp.substr(wordToHexValue_temp.length-2, 2);\n }\n\n return wordToHexValue;\n }\n\n function utf8Encode(str)\n {\n let utftext = '';\n\n for (let n = 0; n < str.length; n++)\n {\n const c = str.charCodeAt(n);\n\n if (c < 128)\n {\n utftext += String.fromCharCode(c);\n }\n else if ((c > 127) && (c < 2048))\n {\n utftext += String.fromCharCode((c >> 6) | 192);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n else\n {\n utftext += String.fromCharCode((c >> 12) | 224);\n utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n utftext += String.fromCharCode((c & 63) | 128);\n }\n }\n\n return utftext;\n }\n\n let x=[];\n let k, AA, BB, CC, DD, a, b, c, d;\n const S11=7, S12=12, S13=17, S14=22;\n const S21=5, S22=9, S23=14, S24=20;\n const S31=4, S32=11, S33=16, S34=23;\n const S41=6, S42=10, S43=15, S44=21;\n\n string = utf8Encode(string);\n\n x = convertToWordArray(string);\n\n a = 0x67452301; b = 0xEFCDAB89; c = 0x98BADCFE; d = 0x10325476;\n\n for (k=0; k<x.length; k+=16)\n {\n AA=a; BB=b; CC=c; DD=d;\n a=doFF(a, b, c, d, x[k+0], S11, 0xD76AA478);\n d=doFF(d, a, b, c, x[k+1], S12, 0xE8C7B756);\n c=doFF(c, d, a, b, x[k+2], S13, 0x242070DB);\n b=doFF(b, c, d, a, x[k+3], S14, 0xC1BDCEEE);\n a=doFF(a, b, c, d, x[k+4], S11, 0xF57C0FAF);\n d=doFF(d, a, b, c, x[k+5], S12, 0x4787C62A);\n c=doFF(c, d, a, b, x[k+6], S13, 0xA8304613);\n b=doFF(b, c, d, a, x[k+7], S14, 0xFD469501);\n a=doFF(a, b, c, d, x[k+8], S11, 0x698098D8);\n d=doFF(d, a, b, c, x[k+9], S12, 0x8B44F7AF);\n c=doFF(c, d, a, b, x[k+10], S13, 0xFFFF5BB1);\n b=doFF(b, c, d, a, x[k+11], S14, 0x895CD7BE);\n a=doFF(a, b, c, d, x[k+12], S11, 0x6B901122);\n d=doFF(d, a, b, c, x[k+13], S12, 0xFD987193);\n c=doFF(c, d, a, b, x[k+14], S13, 0xA679438E);\n b=doFF(b, c, d, a, x[k+15], S14, 0x49B40821);\n a=doGG(a, b, c, d, x[k+1], S21, 0xF61E2562);\n d=doGG(d, a, b, c, x[k+6], S22, 0xC040B340);\n c=doGG(c, d, a, b, x[k+11], S23, 0x265E5A51);\n b=doGG(b, c, d, a, x[k+0], S24, 0xE9B6C7AA);\n a=doGG(a, b, c, d, x[k+5], S21, 0xD62F105D);\n d=doGG(d, a, b, c, x[k+10], S22, 0x2441453);\n c=doGG(c, d, a, b, x[k+15], S23, 0xD8A1E681);\n b=doGG(b, c, d, a, x[k+4], S24, 0xE7D3FBC8);\n a=doGG(a, b, c, d, x[k+9], S21, 0x21E1CDE6);\n d=doGG(d, a, b, c, x[k+14], S22, 0xC33707D6);\n c=doGG(c, d, a, b, x[k+3], S23, 0xF4D50D87);\n b=doGG(b, c, d, a, x[k+8], S24, 0x455A14ED);\n a=doGG(a, b, c, d, x[k+13], S21, 0xA9E3E905);\n d=doGG(d, a, b, c, x[k+2], S22, 0xFCEFA3F8);\n c=doGG(c, d, a, b, x[k+7], S23, 0x676F02D9);\n b=doGG(b, c, d, a, x[k+12], S24, 0x8D2A4C8A);\n a=doHH(a, b, c, d, x[k+5], S31, 0xFFFA3942);\n d=doHH(d, a, b, c, x[k+8], S32, 0x8771F681);\n c=doHH(c, d, a, b, x[k+11], S33, 0x6D9D6122);\n b=doHH(b, c, d, a, x[k+14], S34, 0xFDE5380C);\n a=doHH(a, b, c, d, x[k+1], S31, 0xA4BEEA44);\n d=doHH(d, a, b, c, x[k+4], S32, 0x4BDECFA9);\n c=doHH(c, d, a, b, x[k+7], S33, 0xF6BB4B60);\n b=doHH(b, c, d, a, x[k+10], S34, 0xBEBFBC70);\n a=doHH(a, b, c, d, x[k+13], S31, 0x289B7EC6);\n d=doHH(d, a, b, c, x[k+0], S32, 0xEAA127FA);\n c=doHH(c, d, a, b, x[k+3], S33, 0xD4EF3085);\n b=doHH(b, c, d, a, x[k+6], S34, 0x4881D05);\n a=doHH(a, b, c, d, x[k+9], S31, 0xD9D4D039);\n d=doHH(d, a, b, c, x[k+12], S32, 0xE6DB99E5);\n c=doHH(c, d, a, b, x[k+15], S33, 0x1FA27CF8);\n b=doHH(b, c, d, a, x[k+2], S34, 0xC4AC5665);\n a=doII(a, b, c, d, x[k+0], S41, 0xF4292244);\n d=doII(d, a, b, c, x[k+7], S42, 0x432AFF97);\n c=doII(c, d, a, b, x[k+14], S43, 0xAB9423A7);\n b=doII(b, c, d, a, x[k+5], S44, 0xFC93A039);\n a=doII(a, b, c, d, x[k+12], S41, 0x655B59C3);\n d=doII(d, a, b, c, x[k+3], S42, 0x8F0CCC92);\n c=doII(c, d, a, b, x[k+10], S43, 0xFFEFF47D);\n b=doII(b, c, d, a, x[k+1], S44, 0x85845DD1);\n a=doII(a, b, c, d, x[k+8], S41, 0x6FA87E4F);\n d=doII(d, a, b, c, x[k+15], S42, 0xFE2CE6E0);\n c=doII(c, d, a, b, x[k+6], S43, 0xA3014314);\n b=doII(b, c, d, a, x[k+13], S44, 0x4E0811A1);\n a=doII(a, b, c, d, x[k+4], S41, 0xF7537E82);\n d=doII(d, a, b, c, x[k+11], S42, 0xBD3AF235);\n c=doII(c, d, a, b, x[k+2], S43, 0x2AD7D2BB);\n b=doII(b, c, d, a, x[k+9], S44, 0xEB86D391);\n a=addUnsigned(a, AA);\n b=addUnsigned(b, BB);\n c=addUnsigned(c, CC);\n d=addUnsigned(d, DD);\n }\n\n const temp = wordToHex(a)+wordToHex(b)+wordToHex(c)+wordToHex(d);\n\n return temp.toLowerCase();\n};\n\nexports.closeMediaStream = (stream) =>\n{\n if (!stream)\n {\n return;\n }\n\n // Latest spec states that MediaStream has no stop() method and instead must\n // call stop() on every MediaStreamTrack.\n try\n {\n let tracks;\n\n if (stream.getTracks)\n {\n tracks = stream.getTracks();\n for (const track of tracks)\n {\n track.stop();\n }\n }\n else\n {\n tracks = stream.getAudioTracks();\n for (const track of tracks)\n {\n track.stop();\n }\n tracks = stream.getVideoTracks();\n for (const track of tracks)\n {\n track.stop();\n }\n }\n }\n // eslint-disable-next-line no-unused-vars\n catch (error)\n {\n // Deprecated by the spec, but still in use.\n // NOTE: In Temasys IE plugin stream.stop is a callable 'object'.\n if (typeof stream.stop === 'function' || typeof stream.stop === 'object')\n {\n stream.stop();\n }\n }\n};\n\nexports.cloneArray = (array) =>\n{\n return (array && array.slice()) || [];\n};\n\nexports.cloneObject = (obj, fallback = {}) =>\n{\n return (obj && Object.assign({}, obj)) || fallback;\n};\n","/**\n * Helpers.\n */\n\nvar s = 1000;\nvar m = s * 60;\nvar h = m * 60;\nvar d = h * 24;\nvar w = d * 7;\nvar y = d * 365.25;\n\n/**\n * Parse or format the given `val`.\n *\n * Options:\n *\n * - `long` verbose formatting [false]\n *\n * @param {String|Number} val\n * @param {Object} [options]\n * @throws {Error} throw an error if val is not a non-empty string or a number\n * @return {String|Number}\n * @api public\n */\n\nmodule.exports = function (val, options) {\n options = options || {};\n var type = typeof val;\n if (type === 'string' && val.length > 0) {\n return parse(val);\n } else if (type === 'number' && isFinite(val)) {\n return options.long ? fmtLong(val) : fmtShort(val);\n }\n throw new Error(\n 'val is not a non-empty string or a valid number. val=' +\n JSON.stringify(val)\n );\n};\n\n/**\n * Parse the given `str` and return milliseconds.\n *\n * @param {String} str\n * @return {Number}\n * @api private\n */\n\nfunction parse(str) {\n str = String(str);\n if (str.length > 100) {\n return;\n }\n var match = /^(-?(?:\\d+)?\\.?\\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(\n str\n );\n if (!match) {\n return;\n }\n var n = parseFloat(match[1]);\n var type = (match[2] || 'ms').toLowerCase();\n switch (type) {\n case 'years':\n case 'year':\n case 'yrs':\n case 'yr':\n case 'y':\n return n * y;\n case 'weeks':\n case 'week':\n case 'w':\n return n * w;\n case 'days':\n case 'day':\n case 'd':\n return n * d;\n case 'hours':\n case 'hour':\n case 'hrs':\n case 'hr':\n case 'h':\n return n * h;\n case 'minutes':\n case 'minute':\n case 'mins':\n case 'min':\n case 'm':\n return n * m;\n case 'seconds':\n case 'second':\n case 'secs':\n case 'sec':\n case 's':\n return n * s;\n case 'milliseconds':\n case 'millisecond':\n case 'msecs':\n case 'msec':\n case 'ms':\n return n;\n default:\n return undefined;\n }\n}\n\n/**\n * Short format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtShort(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return Math.round(ms / d) + 'd';\n }\n if (msAbs >= h) {\n return Math.round(ms / h) + 'h';\n }\n if (msAbs >= m) {\n return Math.round(ms / m) + 'm';\n }\n if (msAbs >= s) {\n return Math.round(ms / s) + 's';\n }\n return ms + 'ms';\n}\n\n/**\n * Long format for `ms`.\n *\n * @param {Number} ms\n * @return {String}\n * @api private\n */\n\nfunction fmtLong(ms) {\n var msAbs = Math.abs(ms);\n if (msAbs >= d) {\n return plural(ms, msAbs, d, 'day');\n }\n if (msAbs >= h) {\n return plural(ms, msAbs, h, 'hour');\n }\n if (msAbs >= m) {\n return plural(ms, msAbs, m, 'minute');\n }\n if (msAbs >= s) {\n return plural(ms, msAbs, s, 'second');\n }\n return ms + ' ms';\n}\n\n/**\n * Pluralization helper.\n */\n\nfunction plural(ms, msAbs, n, name) {\n var isPlural = msAbs >= n * 1.5;\n return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');\n}\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '')\n\t\t\t.trim()\n\t\t\t.replace(/\\s+/g, ',')\n\t\t\t.split(',')\n\t\t\t.filter(Boolean);\n\n\t\tfor (const ns of split) {\n\t\t\tif (ns[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(ns.slice(1));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(ns);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Checks if the given string matches a namespace template, honoring\n\t * asterisks as wildcards.\n\t *\n\t * @param {String} search\n\t * @param {String} template\n\t * @return {Boolean}\n\t */\n\tfunction matchesTemplate(search, template) {\n\t\tlet searchIndex = 0;\n\t\tlet templateIndex = 0;\n\t\tlet starIndex = -1;\n\t\tlet matchIndex = 0;\n\n\t\twhile (searchIndex < search.length) {\n\t\t\tif (templateIndex < template.length && (template[templateIndex] === search[searchIndex] || template[templateIndex] === '*')) {\n\t\t\t\t// Match character or proceed with wildcard\n\t\t\t\tif (template[templateIndex] === '*') {\n\t\t\t\t\tstarIndex = templateIndex;\n\t\t\t\t\tmatchIndex = searchIndex;\n\t\t\t\t\ttemplateIndex++; // Skip the '*'\n\t\t\t\t} else {\n\t\t\t\t\tsearchIndex++;\n\t\t\t\t\ttemplateIndex++;\n\t\t\t\t}\n\t\t\t} else if (starIndex !== -1) { // eslint-disable-line no-negated-condition\n\t\t\t\t// Backtrack to the last '*' and try to match more characters\n\t\t\t\ttemplateIndex = starIndex + 1;\n\t\t\t\tmatchIndex++;\n\t\t\t\tsearchIndex = matchIndex;\n\t\t\t} else {\n\t\t\t\treturn false; // No match\n\t\t\t}\n\t\t}\n\n\t\t// Handle trailing '*' in template\n\t\twhile (templateIndex < template.length && template[templateIndex] === '*') {\n\t\t\ttemplateIndex++;\n\t\t}\n\n\t\treturn templateIndex === template.length;\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names,\n\t\t\t...createDebug.skips.map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tfor (const skip of createDebug.skips) {\n\t\t\tif (matchesTemplate(name, skip)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (const ns of createDebug.names) {\n\t\t\tif (matchesTemplate(name, ns)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\tlet m;\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\t// eslint-disable-next-line no-return-assign\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && (m = navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/)) && parseInt(m[1], 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug') || exports.storage.getItem('DEBUG') ;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet flagForceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tflagForceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tflagForceColor = 1;\n}\n\nfunction envForceColor() {\n\tif ('FORCE_COLOR' in env) {\n\t\tif (env.FORCE_COLOR === 'true') {\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (env.FORCE_COLOR === 'false') {\n\t\t\treturn 0;\n\t\t}\n\n\t\treturn env.FORCE_COLOR.length === 0 ? 1 : Math.min(Number.parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, {streamIsTTY, sniffFlags = true} = {}) {\n\tconst noFlagForceColor = envForceColor();\n\tif (noFlagForceColor !== undefined) {\n\t\tflagForceColor = noFlagForceColor;\n\t}\n\n\tconst forceColor = sniffFlags ? flagForceColor : noFlagForceColor;\n\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (sniffFlags) {\n\t\tif (hasFlag('color=16m') ||\n\t\t\thasFlag('color=full') ||\n\t\t\thasFlag('color=truecolor')) {\n\t\t\treturn 3;\n\t\t}\n\n\t\tif (hasFlag('color=256')) {\n\t\t\treturn 2;\n\t\t}\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE', 'DRONE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = Number.parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream, options = {}) {\n\tconst level = supportsColor(stream, {\n\t\tstreamIsTTY: stream && stream.isTTY,\n\t\t...options\n\t});\n\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: getSupportLevel({isTTY: tty.isatty(1)}),\n\tstderr: getSupportLevel({isTTY: tty.isatty(2)})\n};\n","/**\n * Module dependencies.\n */\n\nconst tty = require('tty');\nconst util = require('util');\n\n/**\n * This is the Node.js implementation of `debug()`.\n */\n\nexports.init = init;\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.destroy = util.deprecate(\n\t() => {},\n\t'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'\n);\n\n/**\n * Colors.\n */\n\nexports.colors = [6, 2, 3, 4, 5, 1];\n\ntry {\n\t// Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json)\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tconst supportsColor = require('supports-color');\n\n\tif (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) {\n\t\texports.colors = [\n\t\t\t20,\n\t\t\t21,\n\t\t\t26,\n\t\t\t27,\n\t\t\t32,\n\t\t\t33,\n\t\t\t38,\n\t\t\t39,\n\t\t\t40,\n\t\t\t41,\n\t\t\t42,\n\t\t\t43,\n\t\t\t44,\n\t\t\t45,\n\t\t\t56,\n\t\t\t57,\n\t\t\t62,\n\t\t\t63,\n\t\t\t68,\n\t\t\t69,\n\t\t\t74,\n\t\t\t75,\n\t\t\t76,\n\t\t\t77,\n\t\t\t78,\n\t\t\t79,\n\t\t\t80,\n\t\t\t81,\n\t\t\t92,\n\t\t\t93,\n\t\t\t98,\n\t\t\t99,\n\t\t\t112,\n\t\t\t113,\n\t\t\t128,\n\t\t\t129,\n\t\t\t134,\n\t\t\t135,\n\t\t\t148,\n\t\t\t149,\n\t\t\t160,\n\t\t\t161,\n\t\t\t162,\n\t\t\t163,\n\t\t\t164,\n\t\t\t165,\n\t\t\t166,\n\t\t\t167,\n\t\t\t168,\n\t\t\t169,\n\t\t\t170,\n\t\t\t171,\n\t\t\t172,\n\t\t\t173,\n\t\t\t178,\n\t\t\t179,\n\t\t\t184,\n\t\t\t185,\n\t\t\t196,\n\t\t\t197,\n\t\t\t198,\n\t\t\t199,\n\t\t\t200,\n\t\t\t201,\n\t\t\t202,\n\t\t\t203,\n\t\t\t204,\n\t\t\t205,\n\t\t\t206,\n\t\t\t207,\n\t\t\t208,\n\t\t\t209,\n\t\t\t214,\n\t\t\t215,\n\t\t\t220,\n\t\t\t221\n\t\t];\n\t}\n} catch (error) {\n\t// Swallow - we only care if `supports-color` is available; it doesn't have to be.\n}\n\n/**\n * Build up the default `inspectOpts` object from the environment variables.\n *\n * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js\n */\n\nexports.inspectOpts = Object.keys(process.env).filter(key => {\n\treturn /^debug_/i.test(key);\n}).reduce((obj, key) => {\n\t// Camel-case\n\tconst prop = key\n\t\t.substring(6)\n\t\t.toLowerCase()\n\t\t.replace(/_([a-z])/g, (_, k) => {\n\t\t\treturn k.toUpperCase();\n\t\t});\n\n\t// Coerce string value into JS value\n\tlet val = process.env[key];\n\tif (/^(yes|on|true|enabled)$/i.test(val)) {\n\t\tval = true;\n\t} else if (/^(no|off|false|disabled)$/i.test(val)) {\n\t\tval = false;\n\t} else if (val === 'null') {\n\t\tval = null;\n\t} else {\n\t\tval = Number(val);\n\t}\n\n\tobj[prop] = val;\n\treturn obj;\n}, {});\n\n/**\n * Is stdout a TTY? Colored output is enabled when `true`.\n */\n\nfunction useColors() {\n\treturn 'colors' in exports.inspectOpts ?\n\t\tBoolean(exports.inspectOpts.colors) :\n\t\ttty.isatty(process.stderr.fd);\n}\n\n/**\n * Adds ANSI color escape codes if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\tconst {namespace: name, useColors} = this;\n\n\tif (useColors) {\n\t\tconst c = this.color;\n\t\tconst colorCode = '\\u001B[3' + (c < 8 ? c : '8;5;' + c);\n\t\tconst prefix = ` ${colorCode};1m${name} \\u001B[0m`;\n\n\t\targs[0] = prefix + args[0].split('\\n').join('\\n' + prefix);\n\t\targs.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\\u001B[0m');\n\t} else {\n\t\targs[0] = getDate() + name + ' ' + args[0];\n\t}\n}\n\nfunction getDate() {\n\tif (exports.inspectOpts.hideDate) {\n\t\treturn '';\n\t}\n\treturn new Date().toISOString() + ' ';\n}\n\n/**\n * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr.\n */\n\nfunction log(...args) {\n\treturn process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\\n');\n}\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\tif (namespaces) {\n\t\tprocess.env.DEBUG = namespaces;\n\t} else {\n\t\t// If you set a process.env field to null or undefined, it gets cast to the\n\t\t// string 'null' or 'undefined'. Just delete instead.\n\t\tdelete process.env.DEBUG;\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\nfunction load() {\n\treturn process.env.DEBUG;\n}\n\n/**\n * Init logic for `debug` instances.\n *\n * Create a new `inspectOpts` object in case `useColors` is set\n * differently for a particular `debug` instance.\n */\n\nfunction init(debug) {\n\tdebug.inspectOpts = {};\n\n\tconst keys = Object.keys(exports.inspectOpts);\n\tfor (let i = 0; i < keys.length; i++) {\n\t\tdebug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]];\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %o to `util.inspect()`, all on a single line.\n */\n\nformatters.o = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts)\n\t\t.split('\\n')\n\t\t.map(str => str.trim())\n\t\t.join(' ');\n};\n\n/**\n * Map %O to `util.inspect()`, allowing multiple lines if needed.\n */\n\nformatters.O = function (v) {\n\tthis.inspectOpts.colors = this.useColors;\n\treturn util.inspect(v, this.inspectOpts);\n};\n","/**\n * Detect Electron renderer / nwjs process, which is node, but we should\n * treat as a browser.\n */\n\nif (typeof process === 'undefined' || process.type === 'renderer' || process.browser === true || process.__nwjs) {\n\tmodule.exports = require('./browser.js');\n} else {\n\tmodule.exports = require('./node.js');\n}\n","const debug = require('debug');\n\nconst APP_NAME = 'JsSIP';\n\nmodule.exports = class Logger\n{\n constructor(prefix)\n {\n if (prefix)\n {\n this._debug = debug.default(`${APP_NAME}:${prefix}`);\n this._warn = debug.default(`${APP_NAME}:WARN:${prefix}`);\n this._error = debug.default(`${APP_NAME}:ERROR:${prefix}`);\n }\n else\n {\n this._debug = debug.default(APP_NAME);\n this._warn = debug.default(`${APP_NAME}:WARN`);\n this._error = debug.default(`${APP_NAME}:ERROR`);\n }\n /* eslint-disable no-console */\n this._debug.log = console.info.bind(console);\n this._warn.log = console.warn.bind(console);\n this._error.log = console.error.bind(console);\n /* eslint-enable no-console */\n }\n\n get debug()\n {\n return this._debug;\n }\n\n get warn()\n {\n return this._warn;\n }\n\n get error()\n {\n return this._error;\n }\n};\n","var grammar = module.exports = {\n v: [{\n name: 'version',\n reg: /^(\\d*)$/\n }],\n o: [{\n // o=- 20518 0 IN IP4 203.0.113.1\n // NB: sessionId will be a String in most cases because it is huge\n name: 'origin',\n reg: /^(\\S*) (\\d*) (\\d*) (\\S*) IP(\\d) (\\S*)/,\n names: ['username', 'sessionId', 'sessionVersion', 'netType', 'ipVer', 'address'],\n format: '%s %s %d %s IP%d %s'\n }],\n // default parsing of these only (though some of these feel outdated)\n s: [{ name: 'name' }],\n i: [{ name: 'description' }],\n u: [{ name: 'uri' }],\n e: [{ name: 'email' }],\n p: [{ name: 'phone' }],\n z: [{ name: 'timezones' }], // TODO: this one can actually be parsed properly...\n r: [{ name: 'repeats' }], // TODO: this one can also be parsed properly\n // k: [{}], // outdated thing ignored\n t: [{\n // t=0 0\n name: 'timing',\n reg: /^(\\d*) (\\d*)/,\n names: ['start', 'stop'],\n format: '%d %d'\n }],\n c: [{\n // c=IN IP4 10.47.197.26\n name: 'connection',\n reg: /^IN IP(\\d) (\\S*)/,\n names: ['version', 'ip'],\n format: 'IN IP%d %s'\n }],\n b: [{\n // b=AS:4000\n push: 'bandwidth',\n reg: /^(TIAS|AS|CT|RR|RS):(\\d*)/,\n names: ['type', 'limit'],\n format: '%s:%s'\n }],\n m: [{\n // m=video 51744 RTP/AVP 126 97 98 34 31\n // NB: special - pushes to session\n // TODO: rtp/fmtp should be filtered by the payloads found here?\n reg: /^(\\w*) (\\d*) ([\\w/]*)(?: (.*))?/,\n names: ['type', 'port', 'protocol', 'payloads'],\n format: '%s %d %s %s'\n }],\n a: [\n {\n // a=rtpmap:110 opus/48000/2\n push: 'rtp',\n reg: /^rtpmap:(\\d*) ([\\w\\-.]*)(?:\\s*\\/(\\d*)(?:\\s*\\/(\\S*))?)?/,\n names: ['payload', 'codec', 'rate', 'encoding'],\n format: function (o) {\n return (o.encoding)\n ? 'rtpmap:%d %s/%s/%s'\n : o.rate\n ? 'rtpmap:%d %s/%s'\n : 'rtpmap:%d %s';\n }\n },\n {\n // a=fmtp:108 profile-level-id=24;object=23;bitrate=64000\n // a=fmtp:111 minptime=10; useinbandfec=1\n push: 'fmtp',\n reg: /^fmtp:(\\d*) ([\\S| ]*)/,\n names: ['payload', 'config'],\n format: 'fmtp:%d %s'\n },\n {\n // a=control:streamid=0\n name: 'control',\n reg: /^control:(.*)/,\n format: 'control:%s'\n },\n {\n // a=rtcp:65179 IN IP4 193.84.77.194\n name: 'rtcp',\n reg: /^rtcp:(\\d*)(?: (\\S*) IP(\\d) (\\S*))?/,\n names: ['port', 'netType', 'ipVer', 'address'],\n format: function (o) {\n return (o.address != null)\n ? 'rtcp:%d %s IP%d %s'\n : 'rtcp:%d';\n }\n },\n {\n // a=rtcp-fb:98 trr-int 100\n push: 'rtcpFbTrrInt',\n reg: /^rtcp-fb:(\\*|\\d*) trr-int (\\d*)/,\n names: ['payload', 'value'],\n format: 'rtcp-fb:%s trr-int %d'\n },\n {\n // a=rtcp-fb:98 nack rpsi\n push: 'rtcpFb',\n reg: /^rtcp-fb:(\\*|\\d*) ([\\w-_]*)(?: ([\\w-_]*))?/,\n names: ['payload', 'type', 'subtype'],\n format: function (o) {\n return (o.subtype != null)\n ? 'rtcp-fb:%s %s %s'\n : 'rtcp-fb:%s %s';\n }\n },\n {\n // a=extmap:2 urn:ietf:params:rtp-hdrext:toffset\n // a=extmap:1/recvonly URI-gps-string\n // a=extmap:3 urn:ietf:params:rtp-hdrext:encrypt urn:ietf:params:rtp-hdrext:smpte-tc 25@600/24\n push: 'ext',\n reg: /^extmap:(\\d+)(?:\\/(\\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\\S*)(?: (\\S*))?/,\n names: ['value', 'direction', 'encrypt-uri', 'uri', 'config'],\n format: function (o) {\n return (\n 'extmap:%d' +\n (o.direction ? '/%s' : '%v') +\n (o['encrypt-uri'] ? ' %s' : '%v') +\n ' %s' +\n (o.config ? ' %s' : '')\n );\n }\n },\n {\n // a=extmap-allow-mixed\n name: 'extmapAllowMixed',\n reg: /^(extmap-allow-mixed)/\n },\n {\n // a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:PS1uQCVeeCFCanVmcjkpPywjNWhcYD0mXXtxaVBR|2^20|1:32\n push: 'crypto',\n reg: /^crypto:(\\d*) ([\\w_]*) (\\S*)(?: (\\S*))?/,\n names: ['id', 'suite', 'config', 'sessionConfig'],\n format: function (o) {\n return (o.sessionConfig != null)\n ? 'crypto:%d %s %s %s'\n : 'crypto:%d %s %s';\n }\n },\n {\n // a=setup:actpass\n name: 'setup',\n reg: /^setup:(\\w*)/,\n format: 'setup:%s'\n },\n {\n // a=connection:new\n name: 'connectionType',\n reg: /^connection:(new|existing)/,\n format: 'connection:%s'\n },\n {\n // a=mid:1\n name: 'mid',\n reg: /^mid:([^\\s]*)/,\n format: 'mid:%s'\n },\n {\n // a=msid:0c8b064d-d807-43b4-b434-f92a889d8587 98178685-d409-46e0-8e16-7ef0db0db64a\n name: 'msid',\n reg: /^msid:(.*)/,\n format: 'msid:%s'\n },\n {\n // a=ptime:20\n name: 'ptime',\n reg: /^ptime:(\\d*(?:\\.\\d*)*)/,\n format: 'ptime:%d'\n },\n {\n // a=maxptime:60\n name: 'maxptime',\n reg: /^maxptime:(\\d*(?:\\.\\d*)*)/,\n format: 'maxptime:%d'\n },\n {\n // a=sendrecv\n name: 'direction',\n reg: /^(sendrecv|recvonly|sendonly|inactive)/\n },\n {\n // a=ice-lite\n name: 'icelite',\n reg: /^(ice-lite)/\n },\n {\n // a=ice-ufrag:F7gI\n name: 'iceUfrag',\n reg: /^ice-ufrag:(\\S*)/,\n format: 'ice-ufrag:%s'\n },\n {\n // a=ice-pwd:x9cml/YzichV2+XlhiMu8g\n name: 'icePwd',\n reg: /^ice-pwd:(\\S*)/,\n format: 'ice-pwd:%s'\n },\n {\n // a=fingerprint:SHA-1 00:11:22:33:44:55:66:77:88:99:AA:BB:CC:DD:EE:FF:00:11:22:33\n name: 'fingerprint',\n reg: /^fingerprint:(\\S*) (\\S*)/,\n names: ['type', 'hash'],\n format: 'fingerprint:%s %s'\n },\n {\n // a=candidate:0 1 UDP 2113667327 203.0.113.1 54400 typ host\n // a=candidate:1162875081 1 udp 2113937151 192.168.34.75 60017 typ host generation 0 network-id 3 network-cost 10\n // a=candidate:3289912957 2 udp 1845501695 193.84.77.194 60017 typ srflx raddr 192.168.34.75 rport 60017 generation 0 network-id 3 network-cost 10\n // a=candidate:229815620 1 tcp 1518280447 192.168.150.19 60017 typ host tcptype active generation 0 network-id 3 network-cost 10\n // a=candidate:3289912957 2 tcp 1845501695 193.84.77.194 60017 typ srflx raddr 192.168.34.75 rport 60017 tcptype passive generation 0 network-id 3 network-cost 10\n push:'candidates',\n reg: /^candidate:(\\S*) (\\d*) (\\S*) (\\d*) (\\S*) (\\d*) typ (\\S*)(?: raddr (\\S*) rport (\\d*))?(?: tcptype (\\S*))?(?: generation (\\d*))?(?: network-id (\\d*))?(?: network-cost (\\d*))?/,\n names: ['foundation', 'component', 'transport', 'priority', 'ip', 'port', 'type', 'raddr', 'rport', 'tcptype', 'generation', 'network-id', 'network-cost'],\n format: function (o) {\n var str = 'candidate:%s %d %s %d %s %d typ %s';\n\n str += (o.raddr != null) ? ' raddr %s rport %d' : '%v%v';\n\n // NB: candidate has three optional chunks, so %void middles one if it's missing\n str += (o.tcptype != null) ? ' tcptype %s' : '%v';\n\n if (o.generation != null) {\n str += ' generation %d';\n }\n\n str += (o['network-id'] != null) ? ' network-id %d' : '%v';\n str += (o['network-cost'] != null) ? ' network-cost %d' : '%v';\n return str;\n }\n },\n {\n // a=end-of-candidates (keep after the candidates line for readability)\n name: 'endOfCandidates',\n reg: /^(end-of-candidates)/\n },\n {\n // a=remote-candidates:1 203.0.113.1 54400 2 203.0.113.1 54401 ...\n name: 'remoteCandidates',\n reg: /^remote-candidates:(.*)/,\n format: 'remote-candidates:%s'\n },\n {\n // a=ice-options:google-ice\n name: 'iceOptions',\n reg: /^ice-options:(\\S*)/,\n format: 'ice-options:%s'\n },\n {\n // a=ssrc:2566107569 cname:t9YU8M1UxTF8Y1A1\n push: 'ssrcs',\n reg: /^ssrc:(\\d*) ([\\w_-]*)(?::(.*))?/,\n names: ['id', 'attribute', 'value'],\n format: function (o) {\n var str = 'ssrc:%d';\n if (o.attribute != null) {\n str += ' %s';\n if (o.value != null) {\n str += ':%s';\n }\n }\n return str;\n }\n },\n {\n // a=ssrc-group:FEC 1 2\n // a=ssrc-group:FEC-FR 3004364195 1080772241\n push: 'ssrcGroups',\n // token-char = %x21 / %x23-27 / %x2A-2B / %x2D-2E / %x30-39 / %x41-5A / %x5E-7E\n reg: /^ssrc-group:([\\x21\\x23\\x24\\x25\\x26\\x27\\x2A\\x2B\\x2D\\x2E\\w]*) (.*)/,\n names: ['semantics', 'ssrcs'],\n format: 'ssrc-group:%s %s'\n },\n {\n // a=msid-semantic: WMS Jvlam5X3SX1OP6pn20zWogvaKJz5Hjf9OnlV\n name: 'msidSemantic',\n reg: /^msid-semantic:\\s?(\\w*) (\\S*)/,\n names: ['semantic', 'token'],\n format: 'msid-semantic: %s %s' // space after ':' is not accidental\n },\n {\n // a=group:BUNDLE audio video\n push: 'groups',\n reg: /^group:(\\w*) (.*)/,\n names: ['type', 'mids'],\n format: 'group:%s %s'\n },\n {\n // a=rtcp-mux\n name: 'rtcpMux',\n reg: /^(rtcp-mux)/\n },\n {\n // a=rtcp-rsize\n name: 'rtcpRsize',\n reg: /^(rtcp-rsize)/\n },\n {\n // a=sctpmap:5000 webrtc-datachannel 1024\n name: 'sctpmap',\n reg: /^sctpmap:([\\w_/]*) (\\S*)(?: (\\S*))?/,\n names: ['sctpmapNumber', 'app', 'maxMessageSize'],\n format: function (o) {\n return (o.maxMessageSize != null)\n ? 'sctpmap:%s %s %s'\n : 'sctpmap:%s %s';\n }\n },\n {\n // a=x-google-flag:conference\n name: 'xGoogleFlag',\n reg: /^x-google-flag:([^\\s]*)/,\n format: 'x-google-flag:%s'\n },\n {\n // a=rid:1 send max-width=1280;max-height=720;max-fps=30;depend=0\n push: 'rids',\n reg: /^rid:([\\d\\w]+) (\\w+)(?: ([\\S| ]*))?/,\n names: ['id', 'direction', 'params'],\n format: function (o) {\n return (o.params) ? 'rid:%s %s %s' : 'rid:%s %s';\n }\n },\n {\n // a=imageattr:97 send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320] recv [x=330,y=250]\n // a=imageattr:* send [x=800,y=640] recv *\n // a=imageattr:100 recv [x=320,y=240]\n push: 'imageattrs',\n reg: new RegExp(\n // a=imageattr:97\n '^imageattr:(\\\\d+|\\\\*)' +\n // send [x=800,y=640,sar=1.1,q=0.6] [x=480,y=320]\n '[\\\\s\\\\t]+(send|recv)[\\\\s\\\\t]+(\\\\*|\\\\[\\\\S+\\\\](?:[\\\\s\\\\t]+\\\\[\\\\S+\\\\])*)' +\n // recv [x=330,y=250]\n '(?:[\\\\s\\\\t]+(recv|send)[\\\\s\\\\t]+(\\\\*|\\\\[\\\\S+\\\\](?:[\\\\s\\\\t]+\\\\[\\\\S+\\\\])*))?'\n ),\n names: ['pt', 'dir1', 'attrs1', 'dir2', 'attrs2'],\n format: function (o) {\n return 'imageattr:%s %s %s' + (o.dir2 ? ' %s %s' : '');\n }\n },\n {\n // a=simulcast:send 1,2,3;~4,~5 recv 6;~7,~8\n // a=simulcast:recv 1;4,5 send 6;7\n name: 'simulcast',\n reg: new RegExp(\n // a=simulcast:\n '^simulcast:' +\n // send 1,2,3;~4,~5\n '(send|recv) ([a-zA-Z0-9\\\\-_~;,]+)' +\n // space + recv 6;~7,~8\n '(?:\\\\s?(send|recv) ([a-zA-Z0-9\\\\-_~;,]+))?' +\n // end\n '$'\n ),\n names: ['dir1', 'list1', 'dir2', 'list2'],\n format: function (o) {\n return 'simulcast:%s %s' + (o.dir2 ? ' %s %s' : '');\n }\n },\n {\n // old simulcast draft 03 (implemented by Firefox)\n // https://tools.ietf.org/html/draft-ietf-mmusic-sdp-simulcast-03\n // a=simulcast: recv pt=97;98 send pt=97\n // a=simulcast: send rid=5;6;7 paused=6,7\n name: 'simulcast_03',\n reg: /^simulcast:[\\s\\t]+([\\S+\\s\\t]+)$/,\n names: ['value'],\n format: 'simulcast: %s'\n },\n {\n // a=framerate:25\n // a=framerate:29.97\n name: 'framerate',\n reg: /^framerate:(\\d+(?:$|\\.\\d+))/,\n format: 'framerate:%s'\n },\n {\n // RFC4570\n // a=source-filter: incl IN IP4 239.5.2.31 10.1.15.5\n name: 'sourceFilter',\n reg: /^source-filter: *(excl|incl) (\\S*) (IP4|IP6|\\*) (\\S*) (.*)/,\n names: ['filterMode', 'netType', 'addressTypes', 'destAddress', 'srcList'],\n format: 'source-filter: %s %s %s %s %s'\n },\n {\n // a=bundle-only\n name: 'bundleOnly',\n reg: /^(bundle-only)/\n },\n {\n // a=label:1\n name: 'label',\n reg: /^label:(.+)/,\n format: 'label:%s'\n },\n {\n // RFC version 26 for SCTP over DTLS\n // https://tools.ietf.org/html/draft-ietf-mmusic-sctp-sdp-26#section-5\n name: 'sctpPort',\n reg: /^sctp-port:(\\d+)$/,\n format: 'sctp-port:%s'\n },\n {\n // RFC version 26 for SCTP over DTLS\n // https://tools.ietf.org/html/draft-ietf-mmusic-sctp-sdp-26#section-6\n name: 'maxMessageSize',\n reg: /^max-message-size:(\\d+)$/,\n format: 'max-message-size:%s'\n },\n {\n // RFC7273\n // a=ts-refclk:ptp=IEEE1588-2008:39-A7-94-FF-FE-07-CB-D0:37\n push:'tsRefClocks',\n reg: /^ts-refclk:([^\\s=]*)(?:=(\\S*))?/,\n names: ['clksrc', 'clksrcExt'],\n format: function (o) {\n return 'ts-refclk:%s' + (o.clksrcExt != null ? '=%s' : '');\n }\n },\n {\n // RFC7273\n // a=mediaclk:direct=963214424\n name:'mediaClk',\n reg: /^mediaclk:(?:id=(\\S*))? *([^\\s=]*)(?:=(\\S*))?(?: *rate=(\\d+)\\/(\\d+))?/,\n names: ['id', 'mediaClockName', 'mediaClockValue', 'rateNumerator', 'rateDenominator'],\n format: function (o) {\n var str = 'mediaclk:';\n str += (o.id != null ? 'id=%s %s' : '%v%s');\n str += (o.mediaClockValue != null ? '=%s' : '');\n str += (o.rateNumerator != null ? ' rate=%s' : '');\n str += (o.rateDenominator != null ? '/%s' : '');\n return str;\n }\n },\n {\n // a=keywds:keywords\n name: 'keywords',\n reg: /^keywds:(.+)$/,\n format: 'keywds:%s'\n },\n {\n // a=content:main\n name: 'content',\n reg: /^content:(.+)/,\n format: 'content:%s'\n },\n // BFCP https://tools.ietf.org/html/rfc4583\n {\n // a=floorctrl:c-s\n name: 'bfcpFloorCtrl',\n reg: /^floorctrl:(c-only|s-only|c-s)/,\n format: 'floorctrl:%s'\n },\n {\n // a=confid:1\n name: 'bfcpConfId',\n reg: /^confid:(\\d+)/,\n format: 'confid:%s'\n },\n {\n // a=userid:1\n name: 'bfcpUserId',\n reg: /^userid:(\\d+)/,\n format: 'userid:%s'\n },\n {\n // a=floorid:1\n name: 'bfcpFloorId',\n reg: /^floorid:(.+) (?:m-stream|mstrm):(.+)/,\n names: ['id', 'mStream'],\n format: 'floorid:%s mstrm:%s'\n },\n {\n // any a= that we don't understand is kept verbatim on media.invalid\n push: 'invalid',\n names: ['value']\n }\n ]\n};\n\n// set sensible defaults to avoid polluting the grammar with boring details\nObject.keys(grammar).forEach(function (key) {\n var objs = grammar[key];\n objs.forEach(function (obj) {\n if (!obj.reg) {\n obj.reg = /(.*)/;\n }\n if (!obj.format) {\n obj.format = '%s';\n }\n });\n});\n","var toIntIfInt = function (v) {\n return String(Number(v)) === v ? Number(v) : v;\n};\n\nvar attachProperties = function (match, location, names, rawName) {\n if (rawName && !names) {\n location[rawName] = toIntIfInt(match[1]);\n }\n else {\n for (var i = 0; i < names.length; i += 1) {\n if (match[i+1] != null) {\n location[names[i]] = toIntIfInt(match[i+1]);\n }\n }\n }\n};\n\nvar parseReg = function (obj, location, content) {\n var needsBlank = obj.name && obj.names;\n if (obj.push && !location[obj.push]) {\n location[obj.push] = [];\n }\n else if (needsBlank && !location[obj.name]) {\n location[obj.name] = {};\n }\n var keyLocation = obj.push ?\n {} : // blank object that will be pushed\n needsBlank ? location[obj.name] : location; // otherwise, named location or root\n\n attachProperties(content.match(obj.reg), keyLocation, obj.names, obj.name);\n\n if (obj.push) {\n location[obj.push].push(keyLocation);\n }\n};\n\nvar grammar = require('./grammar');\nvar validLine = RegExp.prototype.test.bind(/^([a-z])=(.*)/);\n\nexports.parse = function (sdp) {\n var session = {}\n , media = []\n , location = session; // points at where properties go under (one of the above)\n\n // parse lines we understand\n sdp.split(/(\\r\\n|\\r|\\n)/).filter(validLine).forEach(function (l) {\n var type = l[0];\n var content = l.slice(2);\n if (type === 'm') {\n media.push({rtp: [], fmtp: []});\n location = media[media.length-1]; // point at latest media line\n }\n\n for (var j = 0; j < (grammar[type] || []).length; j += 1) {\n var obj = grammar[type][j];\n if (obj.reg.test(content)) {\n return parseReg(obj, location, content);\n }\n }\n });\n\n session.media = media; // link it up\n return session;\n};\n\nvar paramReducer = function (acc, expr) {\n var s = expr.split(/=(.+)/, 2);\n if (s.length === 2) {\n acc[s[0]] = toIntIfInt(s[1]);\n } else if (s.length === 1 && expr.length > 1) {\n acc[s[0]] = undefined;\n }\n return acc;\n};\n\nexports.parseParams = function (str) {\n return str.split(/;\\s?/).reduce(paramReducer, {});\n};\n\n// For backward compatibility - alias will be removed in 3.0.0\nexports.parseFmtpConfig = exports.parseParams;\n\nexports.parsePayloads = function (str) {\n return str.toString().split(' ').map(Number);\n};\n\nexports.parseRemoteCandidates = function (str) {\n var candidates = [];\n var parts = str.split(' ').map(toIntIfInt);\n for (var i = 0; i < parts.length; i += 3) {\n candidates.push({\n component: parts[i],\n ip: parts[i + 1],\n port: parts[i + 2]\n });\n }\n return candidates;\n};\n\nexports.parseImageAttributes = function (str) {\n return str.split(' ').map(function (item) {\n return item.substring(1, item.length-1).split(',').reduce(paramReducer, {});\n });\n};\n\nexports.parseSimulcastStreamList = function (str) {\n return str.split(';').map(function (stream) {\n return stream.split(',').map(function (format) {\n var scid, paused = false;\n\n if (format[0] !== '~') {\n scid = toIntIfInt(format);\n } else {\n scid = toIntIfInt(format.substring(1, format.length));\n paused = true;\n }\n\n return {\n scid: scid,\n paused: paused\n };\n });\n });\n};\n","var grammar = require('./grammar');\n\n// customized util.format - discards excess arguments and can void middle ones\nvar formatRegExp = /%[sdv%]/g;\nvar format = function (formatStr) {\n var i = 1;\n var args = arguments;\n var len = args.length;\n return formatStr.replace(formatRegExp, function (x) {\n if (i >= len) {\n return x; // missing argument\n }\n var arg = args[i];\n i += 1;\n switch (x) {\n case '%%':\n return '%';\n case '%s':\n return String(arg);\n case '%d':\n return Number(arg);\n case '%v':\n return '';\n }\n });\n // NB: we discard excess arguments - they are typically undefined from makeLine\n};\n\nvar makeLine = function (type, obj, location) {\n var str = obj.format instanceof Function ?\n (obj.format(obj.push ? location : location[obj.name])) :\n obj.format;\n\n var args = [type + '=' + str];\n if (obj.names) {\n for (var i = 0; i < obj.names.length; i += 1) {\n var n = obj.names[i];\n if (obj.name) {\n args.push(location[obj.name][n]);\n }\n else { // for mLine and push attributes\n args.push(location[obj.names[i]]);\n }\n }\n }\n else {\n args.push(location[obj.name]);\n }\n return format.apply(null, args);\n};\n\n// RFC specified order\n// TODO: extend this with all the rest\nvar defaultOuterOrder = [\n 'v', 'o', 's', 'i',\n 'u', 'e', 'p', 'c',\n 'b', 't', 'r', 'z', 'a'\n];\nvar defaultInnerOrder = ['i', 'c', 'b', 'a'];\n\n\nmodule.exports = function (session, opts) {\n opts = opts || {};\n // ensure certain properties exist\n if (session.version == null) {\n session.version = 0; // 'v=0' must be there (only defined version atm)\n }\n if (session.name == null) {\n session.name = ' '; // 's= ' must be there if no meaningful name set\n }\n session.media.forEach(function (mLine) {\n if (mLine.payloads == null) {\n mLine.payloads = '';\n }\n });\n\n var outerOrder = opts.outerOrder || defaultOuterOrder;\n var innerOrder = opts.innerOrder || defaultInnerOrder;\n var sdp = [];\n\n // loop through outerOrder for matching properties on session\n outerOrder.forEach(function (type) {\n grammar[type].forEach(function (obj) {\n if (obj.name in session && session[obj.name] != null) {\n sdp.push(makeLine(type, obj, session));\n }\n else if (obj.push in session && session[obj.push] != null) {\n session[obj.push].forEach(function (el) {\n sdp.push(makeLine(type, obj, el));\n });\n }\n });\n });\n\n // then for each media line, follow the innerOrder\n session.media.forEach(function (mLine) {\n sdp.push(makeLine('m', grammar.m[0], mLine));\n\n innerOrder.forEach(function (type) {\n grammar[type].forEach(function (obj) {\n if (obj.name in mLine && mLine[obj.name] != null) {\n sdp.push(makeLine(type, obj, mLine));\n }\n else if (obj.push in mLine && mLine[obj.push] != null) {\n mLine[obj.push].forEach(function (el) {\n sdp.push(makeLine(type, obj, el));\n });\n }\n });\n });\n });\n\n return sdp.join('\\r\\n') + '\\r\\n';\n};\n","var parser = require('./parser');\nvar writer = require('./writer');\nvar grammar = require('./grammar');\n\nexports.grammar = grammar;\nexports.write = writer;\nexports.parse = parser.parse;\nexports.parseParams = parser.parseParams;\nexports.parseFmtpConfig = parser.parseFmtpConfig; // Alias of parseParams().\nexports.parsePayloads = parser.parsePayloads;\nexports.parseRemoteCandidates = parser.parseRemoteCandidates;\nexports.parseImageAttributes = parser.parseImageAttributes;\nexports.parseSimulcastStreamList = parser.parseSimulcastStreamList;\n","const sdp_transform = require('sdp-transform');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst NameAddrHeader = require('./NameAddrHeader');\nconst Grammar = require('./Grammar');\n\nconst logger = new Logger('SIPMessage');\n\n/**\n * -param {String} method request method\n * -param {String} ruri request uri\n * -param {UA} ua\n * -param {Object} params parameters that will have priority over ua.configuration parameters:\n * <br>\n * - cseq, call_id, from_tag, from_uri, from_display_name, to_uri, to_tag, route_set\n * -param {Object} [headers] extra headers\n * -param {String} [body]\n */\nclass OutgoingRequest\n{\n constructor(method, ruri, ua, params, extraHeaders, body)\n {\n // Mandatory parameters check.\n if (!method || !ruri || !ua)\n {\n return null;\n }\n\n params = params || {};\n\n this.ua = ua;\n this.headers = {};\n this.method = method;\n this.ruri = ruri;\n this.body = body;\n this.extraHeaders = Utils.cloneArray(extraHeaders);\n\n if (this.ua.configuration.extra_headers)\n {\n this.extraHeaders = this.extraHeaders.concat(this.ua.configuration.extra_headers);\n }\n\n // Fill the Common SIP Request Headers.\n\n // Route.\n if (params.route_set)\n {\n this.setHeader('route', params.route_set);\n }\n else if (ua.configuration.use_preloaded_route)\n {\n this.setHeader('route', `<${ua.transport.sip_uri};lr>`);\n }\n\n // Via.\n // Empty Via header. Will be filled by the client transaction.\n this.setHeader('via', '');\n\n // Max-Forwards.\n this.setHeader('max-forwards', JsSIP_C.MAX_FORWARDS);\n\n // To\n const to_uri = params.to_uri || ruri;\n const to_params = params.to_tag ? { tag: params.to_tag } : null;\n const to_display_name = typeof params.to_display_name !== 'undefined' ? params.to_display_name : null;\n\n this.to = new NameAddrHeader(to_uri, to_display_name, to_params);\n this.setHeader('to', this.to.toString());\n\n // From.\n const from_uri = params.from_uri || ua.configuration.uri;\n const from_params = { tag: params.from_tag || Utils.newTag() };\n let display_name;\n\n if (typeof params.from_display_name !== 'undefined')\n {\n display_name = params.from_display_name;\n }\n else if (ua.configuration.display_name)\n {\n display_name = ua.configuration.display_name;\n }\n else\n {\n display_name = null;\n }\n\n this.from = new NameAddrHeader(from_uri, display_name, from_params);\n this.setHeader('from', this.from.toString());\n\n // Call-ID.\n const call_id = params.call_id ||\n (ua.configuration.jssip_id + Utils.createRandomToken(15));\n\n this.call_id = call_id;\n this.setHeader('call-id', call_id);\n\n // CSeq.\n const cseq = params.cseq || Math.floor(Math.random() * 10000);\n\n this.cseq = cseq;\n this.setHeader('cseq', `${cseq} ${method}`);\n }\n\n /**\n * Replace the the given header by the given value.\n * -param {String} name header name\n * -param {String | Array} value header value\n */\n setHeader(name, value)\n {\n // Remove the header from extraHeaders if present.\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n\n for (let idx=0; idx<this.extraHeaders.length; idx++)\n {\n if (regexp.test(this.extraHeaders[idx]))\n {\n this.extraHeaders.splice(idx, 1);\n }\n }\n\n this.headers[Utils.headerize(name)] = (Array.isArray(value)) ? value : [ value ];\n }\n\n /**\n * Get the value of the given header name at the given position.\n * -param {String} name header name\n * -returns {String|undefined} Returns the specified header, null if header doesn't exist.\n */\n getHeader(name)\n {\n const headers = this.headers[Utils.headerize(name)];\n\n if (headers)\n {\n if (headers[0])\n {\n return headers[0];\n }\n }\n else\n {\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n\n for (const header of this.extraHeaders)\n {\n if (regexp.test(header))\n {\n return header.substring(header.indexOf(':')+1).trim();\n }\n }\n }\n\n return;\n }\n\n /**\n * Get the header/s of the given name.\n * -param {String} name header name\n * -returns {Array} Array with all the headers of the specified name.\n */\n getHeaders(name)\n {\n const headers = this.headers[Utils.headerize(name)];\n const result = [];\n\n if (headers)\n {\n for (const header of headers)\n {\n result.push(header);\n }\n\n return result;\n }\n else\n {\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n\n for (const header of this.extraHeaders)\n {\n if (regexp.test(header))\n {\n result.push(header.substring(header.indexOf(':')+1).trim());\n }\n }\n\n return result;\n }\n }\n\n /**\n * Verify the existence of the given header.\n * -param {String} name header name\n * -returns {boolean} true if header with given name exists, false otherwise\n */\n hasHeader(name)\n {\n if (this.headers[Utils.headerize(name)])\n {\n return true;\n }\n else\n {\n const regexp = new RegExp(`^\\\\s*${name}\\\\s*:`, 'i');\n\n for (const header of this.extraHeaders)\n {\n if (regexp.test(header))\n {\n return true;\n }\n }\n }\n\n return false;\n }\n\n /**\n * Parse the current body as a SDP and store the resulting object\n * into this.sdp.\n * -param {Boolean} force: Parse even if this.sdp already exists.\n *\n * Returns this.sdp.\n */\n parseSDP(force)\n {\n if (!force && this.sdp)\n {\n return this.sdp;\n }\n else\n {\n this.sdp = sdp_transform.parse(this.body || '');\n\n return this.sdp;\n }\n }\n\n toString()\n {\n let msg = `${this.method} ${this.ruri} SIP/2.0\\r\\n`;\n\n for (const headerName in this.headers)\n {\n if (Object.prototype.hasOwnProperty.call(this.headers, headerName))\n {\n for (const headerValue of this.headers[headerName])\n {\n msg += `${headerName}: ${headerValue}\\r\\n`;\n }\n }\n }\n\n for (const header of this.extraHeaders)\n {\n msg += `${header.trim()}\\r\\n`;\n }\n\n // Supported.\n const supported = [];\n\n switch (this.method)\n {\n case JsSIP_C.REGISTER:\n supported.push('path', 'gruu');\n break;\n case JsSIP_C.INVITE:\n if (this.ua.configuration.session_timers)\n {\n supported.push('timer');\n }\n if (this.ua.contact.pub_gruu || this.ua.contact.temp_gruu)\n {\n supported.push('gruu');\n }\n supported.push('ice', 'replaces');\n break;\n case JsSIP_C.UPDATE:\n if (this.ua.configuration.session_timers)\n {\n supported.push('timer');\n }\n supported.push('ice');\n break;\n }\n\n supported.push('outbound');\n\n const userAgent = this.ua.configuration.user_agent || JsSIP_C.USER_AGENT;\n\n // Allow.\n msg += `Allow: ${JsSIP_C.ALLOWED_METHODS}\\r\\n`;\n msg += `Supported: ${supported}\\r\\n`;\n msg += `User-Agent: ${userAgent}\\r\\n`;\n\n if (this.body)\n {\n const length = Utils.str_utf8_length(this.body);\n\n msg += `Content-Length: ${length}\\r\\n\\r\\n`;\n msg += this.body;\n }\n else\n {\n msg += 'Content-Length: 0\\r\\n\\r\\n';\n }\n\n return msg;\n }\n\n clone()\n {\n const request = new OutgoingRequest(this.method, this.ruri, this.ua);\n\n Object.keys(this.headers).forEach(function(name)\n {\n request.headers[name] = this.headers[name].slice();\n }, this);\n\n request.body = this.body;\n request.extraHeaders = Utils.cloneArray(this.extraHeaders);\n request.to = this.to;\n request.from = this.from;\n request.call_id = this.call_id;\n request.cseq = this.cseq;\n\n return request;\n }\n}\n\nclass InitialOutgoingInviteRequest extends OutgoingRequest\n{\n constructor(ruri, ua, params, extraHeaders, body)\n {\n super(JsSIP_C.INVITE, ruri, ua, params, extraHeaders, body);\n\n this.transaction = null;\n }\n\n cancel(reason)\n {\n this.transaction.cancel(reason);\n }\n\n clone()\n {\n const request = new InitialOutgoingInviteRequest(this.ruri, this.ua);\n\n Object.keys(this.headers).forEach(function(name)\n {\n request.headers[name] = this.headers[name].slice();\n }, this);\n\n request.body = this.body;\n request.extraHeaders = Utils.cloneArray(this.extraHeaders);\n request.to = this.to;\n request.from = this.from;\n request.call_id = this.call_id;\n request.cseq = this.cseq;\n\n request.transaction = this.transaction;\n\n return request;\n }\n}\n\nclass IncomingMessage\n{\n constructor()\n {\n this.data = null;\n this.headers = null;\n this.method = null;\n this.via = null;\n this.via_branch = null;\n this.call_id = null;\n this.cseq = null;\n this.from = null;\n this.from_tag = null;\n this.to = null;\n this.to_tag = null;\n this.body = null;\n this.sdp = null;\n }\n\n /**\n * Insert a header of the given name and value into the last position of the\n * header array.\n */\n addHeader(name, value)\n {\n const header = { raw: value };\n\n name = Utils.headerize(name);\n\n if (this.headers[name])\n {\n this.headers[name].push(header);\n }\n else\n {\n this.headers[name] = [ header ];\n }\n }\n\n /**\n * Get the value of the given header name at the given position.\n */\n getHeader(name)\n {\n const header = this.headers[Utils.headerize(name)];\n\n if (header)\n {\n if (header[0])\n {\n return header[0].raw;\n }\n }\n else\n {\n return;\n }\n }\n\n /**\n * Get the header/s of the given name.\n */\n getHeaders(name)\n {\n const headers = this.headers[Utils.headerize(name)];\n const result = [];\n\n if (!headers)\n {\n return [];\n }\n\n for (const header of headers)\n {\n result.push(header.raw);\n }\n\n return result;\n }\n\n /**\n * Verify the existence of the given header.\n */\n hasHeader(name)\n {\n return (this.headers[Utils.headerize(name)]) ? true : false;\n }\n\n /**\n * Parse the given header on the given index.\n * -param {String} name header name\n * -param {Number} [idx=0] header index\n * -returns {Object|undefined} Parsed header object, undefined if the header\n * is not present or in case of a parsing error.\n */\n parseHeader(name, idx = 0)\n {\n name = Utils.headerize(name);\n\n if (!this.headers[name])\n {\n logger.debug(`header \"${name}\" not present`);\n\n return;\n }\n else if (idx >= this.headers[name].length)\n {\n logger.debug(`not so many \"${name}\" headers present`);\n\n return;\n }\n\n const header = this.headers[name][idx];\n const value = header.raw;\n\n if (header.parsed)\n {\n return header.parsed;\n }\n\n // Substitute '-' by '_' for grammar rule matching.\n const parsed = Grammar.parse(value, name.replace(/-/g, '_'));\n\n if (parsed === -1)\n {\n this.headers[name].splice(idx, 1); // delete from headers\n logger.debug(`error parsing \"${name}\" header field with value \"${value}\"`);\n\n return;\n }\n else\n {\n header.parsed = parsed;\n\n return parsed;\n }\n }\n\n /**\n * Message Header attribute selector. Alias of parseHeader.\n * -param {String} name header name\n * -param {Number} [idx=0] header index\n * -returns {Object|undefined} Parsed header object, undefined if the header\n * is not present or in case of a parsing error.\n *\n * -example\n * message.s('via',3).port\n */\n s(name, idx)\n {\n return this.parseHeader(name, idx);\n }\n\n /**\n * Replace the value of the given header by the value.\n * -param {String} name header name\n * -param {String} value header value\n */\n setHeader(name, value)\n {\n const header = { raw: value };\n\n this.headers[Utils.headerize(name)] = [ header ];\n }\n\n /**\n * Parse the current body as a SDP and store the resulting object\n * into this.sdp.\n * -param {Boolean} force: Parse even if this.sdp already exists.\n *\n * Returns this.sdp.\n */\n parseSDP(force)\n {\n if (!force && this.sdp)\n {\n return this.sdp;\n }\n else\n {\n this.sdp = sdp_transform.parse(this.body || '');\n\n return this.sdp;\n }\n }\n\n toString()\n {\n return this.data;\n }\n}\n\nclass IncomingRequest extends IncomingMessage\n{\n constructor(ua)\n {\n super();\n\n this.ua = ua;\n this.headers = {};\n this.ruri = null;\n this.transport = null;\n this.server_transaction = null;\n }\n\n /**\n * Stateful reply.\n * -param {Number} code status code\n * -param {String} reason reason phrase\n * -param {Object} headers extra headers\n * -param {String} body body\n * -param {Function} [onSuccess] onSuccess callback\n * -param {Function} [onFailure] onFailure callback\n */\n reply(code, reason, extraHeaders, body, onSuccess, onFailure)\n {\n const supported = [];\n let to = this.getHeader('To');\n\n code = code || null;\n reason = reason || null;\n\n // Validate code and reason values.\n if (!code || (code < 100 || code > 699))\n {\n throw new TypeError(`Invalid status_code: ${code}`);\n }\n else if (reason && typeof reason !== 'string' && !(reason instanceof String))\n {\n throw new TypeError(`Invalid reason_phrase: ${reason}`);\n }\n\n reason = reason || JsSIP_C.REASON_PHRASE[code] || '';\n extraHeaders = Utils.cloneArray(extraHeaders);\n\n if (this.ua.configuration.extra_headers)\n {\n extraHeaders = extraHeaders.concat(this.ua.configuration.extra_headers);\n }\n\n let response = `SIP/2.0 ${code} ${reason}\\r\\n`;\n\n if (this.method === JsSIP_C.INVITE && code > 100 && code <= 200)\n {\n const headers = this.getHeaders('record-route');\n\n for (const header of headers)\n {\n response += `Record-Route: ${header}\\r\\n`;\n }\n }\n\n const vias = this.getHeaders('via');\n\n for (const via of vias)\n {\n response += `Via: ${via}\\r\\n`;\n }\n\n if (!this.to_tag && code > 100)\n {\n to += `;tag=${Utils.newTag()}`;\n }\n else if (this.to_tag && !this.s('to').hasParam('tag'))\n {\n to += `;tag=${this.to_tag}`;\n }\n\n response += `To: ${to}\\r\\n`;\n response += `From: ${this.getHeader('From')}\\r\\n`;\n response += `Call-ID: ${this.call_id}\\r\\n`;\n response += `CSeq: ${this.cseq} ${this.method}\\r\\n`;\n\n for (const header of extraHeaders)\n {\n response += `${header.trim()}\\r\\n`;\n }\n\n // Supported.\n switch (this.method)\n {\n case JsSIP_C.INVITE:\n if (this.ua.configuration.session_timers)\n {\n supported.push('timer');\n }\n if (this.ua.contact.pub_gruu || this.ua.contact.temp_gruu)\n {\n supported.push('gruu');\n }\n supported.push('ice', 'replaces');\n break;\n case JsSIP_C.UPDATE:\n if (this.ua.configuration.session_timers)\n {\n supported.push('timer');\n }\n if (body)\n {\n supported.push('ice');\n }\n supported.push('replaces');\n }\n\n supported.push('outbound');\n\n // Allow and Accept.\n if (this.method === JsSIP_C.OPTIONS)\n {\n response += `Allow: ${JsSIP_C.ALLOWED_METHODS}\\r\\n`;\n response += `Accept: ${JsSIP_C.ACCEPTED_BODY_TYPES}\\r\\n`;\n }\n else if (code === 405)\n {\n response += `Allow: ${JsSIP_C.ALLOWED_METHODS}\\r\\n`;\n }\n else if (code === 415)\n {\n response += `Accept: ${JsSIP_C.ACCEPTED_BODY_TYPES}\\r\\n`;\n }\n\n response += `Supported: ${supported}\\r\\n`;\n\n if (body)\n {\n const length = Utils.str_utf8_length(body);\n\n response += 'Content-Type: application/sdp\\r\\n';\n response += `Content-Length: ${length}\\r\\n\\r\\n`;\n response += body;\n }\n else\n {\n response += `Content-Length: ${0}\\r\\n\\r\\n`;\n }\n\n this.server_transaction.receiveResponse(code, response, onSuccess, onFailure);\n }\n\n /**\n * Stateless reply.\n * -param {Number} code status code\n * -param {String} reason reason phrase\n */\n reply_sl(code = null, reason = null)\n {\n const vias = this.getHeaders('via');\n\n // Validate code and reason values.\n if (!code || (code < 100 || code > 699))\n {\n throw new TypeError(`Invalid status_code: ${code}`);\n }\n else if (reason && typeof reason !== 'string' && !(reason instanceof String))\n {\n throw new TypeError(`Invalid reason_phrase: ${reason}`);\n }\n\n reason = reason || JsSIP_C.REASON_PHRASE[code] || '';\n\n let response = `SIP/2.0 ${code} ${reason}\\r\\n`;\n\n for (const via of vias)\n {\n response += `Via: ${via}\\r\\n`;\n }\n\n let to = this.getHeader('To');\n\n if (!this.to_tag && code > 100)\n {\n to += `;tag=${Utils.newTag()}`;\n }\n else if (this.to_tag && !this.s('to').hasParam('tag'))\n {\n to += `;tag=${this.to_tag}`;\n }\n\n response += `To: ${to}\\r\\n`;\n response += `From: ${this.getHeader('From')}\\r\\n`;\n response += `Call-ID: ${this.call_id}\\r\\n`;\n response += `CSeq: ${this.cseq} ${this.method}\\r\\n`;\n\n if (this.ua.configuration.extra_headers)\n {\n for (const header of this.ua.configuration.extra_headers)\n {\n response += `${header.trim()}\\r\\n`;\n }\n }\n\n response += `Content-Length: ${0}\\r\\n\\r\\n`;\n\n this.transport.send(response);\n }\n}\n\nclass IncomingResponse extends IncomingMessage\n{\n constructor()\n {\n super();\n\n this.headers = {};\n this.status_code = null;\n this.reason_phrase = null;\n }\n}\n\nmodule.exports = {\n OutgoingRequest,\n InitialOutgoingInviteRequest,\n IncomingRequest,\n IncomingResponse\n};\n","const Logger = require('./Logger');\nconst Utils = require('./Utils');\n\nconst logger = new Logger('DigestAuthentication');\n\nmodule.exports = class DigestAuthentication\n{\n constructor(credentials)\n {\n this._credentials = credentials;\n this._cnonce = null;\n this._nc = 0;\n this._ncHex = '00000000';\n this._algorithm = null;\n this._realm = null;\n this._nonce = null;\n this._opaque = null;\n this._stale = null;\n this._qop = null;\n this._method = null;\n this._uri = null;\n this._ha1 = null;\n this._response = null;\n }\n\n get(parameter)\n {\n switch (parameter)\n {\n case 'realm':\n return this._realm;\n\n case 'ha1':\n return this._ha1;\n\n default:\n logger.warn('get() | cannot get \"%s\" parameter', parameter);\n\n return undefined;\n }\n }\n\n /**\n * Performs Digest authentication given a SIP request and the challenge\n * received in a response to that request.\n * Returns true if auth was successfully generated, false otherwise.\n */\n authenticate({ method, ruri, body }, challenge, cnonce = null /* test interface */)\n {\n this._algorithm = challenge.algorithm;\n this._realm = challenge.realm;\n this._nonce = challenge.nonce;\n this._opaque = challenge.opaque;\n this._stale = challenge.stale;\n\n if (this._algorithm)\n {\n if (this._algorithm !== 'MD5')\n {\n logger.warn('authenticate() | challenge with Digest algorithm different than \"MD5\", authentication aborted');\n\n return false;\n }\n }\n else\n {\n this._algorithm = 'MD5';\n }\n\n if (!this._nonce)\n {\n logger.warn('authenticate() | challenge without Digest nonce, authentication aborted');\n\n return false;\n }\n\n if (!this._realm)\n {\n logger.warn('authenticate() | challenge without Digest realm, authentication aborted');\n\n return false;\n }\n\n // If no plain SIP password is provided.\n if (!this._credentials.password)\n {\n // If ha1 is not provided we cannot authenticate.\n if (!this._credentials.ha1)\n {\n logger.warn('authenticate() | no plain SIP password nor ha1 provided, authentication aborted');\n\n return false;\n }\n\n // If the realm does not match the stored realm we cannot authenticate.\n if (this._credentials.realm !== this._realm)\n {\n logger.warn('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:\"%s\", given:\"%s\"]', this._credentials.realm, this._realm);\n\n return false;\n }\n }\n\n // 'qop' can contain a list of values (Array). Let's choose just one.\n if (challenge.qop)\n {\n if (challenge.qop.indexOf('auth-int') > -1)\n {\n this._qop = 'auth-int';\n }\n else if (challenge.qop.indexOf('auth') > -1)\n {\n this._qop = 'auth';\n }\n else\n {\n // Otherwise 'qop' is present but does not contain 'auth' or 'auth-int', so abort here.\n logger.warn('authenticate() | challenge without Digest qop different than \"auth\" or \"auth-int\", authentication aborted');\n\n return false;\n }\n }\n else\n {\n this._qop = null;\n }\n\n // Fill other attributes.\n\n this._method = method;\n this._uri = ruri;\n this._cnonce = cnonce || Utils.createRandomToken(12);\n this._nc += 1;\n const hex = Number(this._nc).toString(16);\n\n this._ncHex = '00000000'.substr(0, 8-hex.length) + hex;\n\n // Nc-value = 8LHEX. Max value = 'FFFFFFFF'.\n if (this._nc === 4294967296)\n {\n this._nc = 1;\n this._ncHex = '00000001';\n }\n\n // Calculate the Digest \"response\" value.\n\n // If we have plain SIP password then regenerate ha1.\n if (this._credentials.password)\n {\n // HA1 = MD5(A1) = MD5(username:realm:password).\n this._ha1 = Utils.calculateMD5(`${this._credentials.username}:${this._realm}:${this._credentials.password}`);\n }\n // Otherwise reuse the stored ha1.\n else\n {\n this._ha1 = this._credentials.ha1;\n }\n\n let a2;\n let ha2;\n\n if (this._qop === 'auth')\n {\n // HA2 = MD5(A2) = MD5(method:digestURI).\n a2 = `${this._method}:${this._uri}`;\n ha2 = Utils.calculateMD5(a2);\n\n logger.debug('authenticate() | using qop=auth [a2:\"%s\"]', a2);\n\n // Response = MD5(HA1:nonce:nonceCount:credentialsNonce:qop:HA2).\n this._response = Utils.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth:${ha2}`);\n\n }\n else if (this._qop === 'auth-int')\n {\n // HA2 = MD5(A2) = MD5(method:digestURI:MD5(entityBody)).\n a2 = `${this._method}:${this._uri}:${Utils.calculateMD5(body ? body : '')}`;\n ha2 = Utils.calculateMD5(a2);\n\n logger.debug('authenticate() | using qop=auth-int [a2:\"%s\"]', a2);\n\n // Response = MD5(HA1:nonce:nonceCount:credentialsNonce:qop:HA2).\n this._response = Utils.calculateMD5(`${this._ha1}:${this._nonce}:${this._ncHex}:${this._cnonce}:auth-int:${ha2}`);\n\n }\n else if (this._qop === null)\n {\n // HA2 = MD5(A2) = MD5(method:digestURI).\n a2 = `${this._method}:${this._uri}`;\n ha2 = Utils.calculateMD5(a2);\n\n logger.debug('authenticate() | using qop=null [a2:\"%s\"]', a2);\n\n // Response = MD5(HA1:nonce:HA2).\n this._response = Utils.calculateMD5(`${this._ha1}:${this._nonce}:${ha2}`);\n }\n\n logger.debug('authenticate() | response generated');\n\n return true;\n }\n\n /**\n * Return the Proxy-Authorization or WWW-Authorization header value.\n */\n toString()\n {\n const auth_params = [];\n\n if (!this._response)\n {\n throw new Error('response field does not exist, cannot generate Authorization header');\n }\n\n auth_params.push(`algorithm=${this._algorithm}`);\n auth_params.push(`username=\"${this._credentials.username}\"`);\n auth_params.push(`realm=\"${this._realm}\"`);\n auth_params.push(`nonce=\"${this._nonce}\"`);\n auth_params.push(`uri=\"${this._uri}\"`);\n auth_params.push(`response=\"${this._response}\"`);\n if (this._opaque)\n {\n auth_params.push(`opaque=\"${this._opaque}\"`);\n }\n if (this._qop)\n {\n auth_params.push(`qop=${this._qop}`);\n auth_params.push(`cnonce=\"${this._cnonce}\"`);\n auth_params.push(`nc=${this._ncHex}`);\n }\n\n return `Digest ${auth_params.join(', ')}`;\n }\n};\n","const T1 = 500, T2 = 4000, T4 = 5000;\n\nmodule.exports = {\n T1,\n T2,\n T4,\n TIMER_B : 64 * T1,\n TIMER_D : 0 * T1,\n TIMER_F : 64 * T1,\n TIMER_H : 64 * T1,\n TIMER_I : 0 * T1,\n TIMER_J : 0 * T1,\n TIMER_K : 0 * T4,\n TIMER_L : 64 * T1,\n TIMER_M : 64 * T1,\n PROVISIONAL_RESPONSE_INTERVAL : 60000 // See RFC 3261 Section 13.3.1.1\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Timers = require('./Timers');\n\nconst loggernict = new Logger('NonInviteClientTransaction');\nconst loggerict = new Logger('InviteClientTransaction');\nconst loggeract = new Logger('AckClientTransaction');\nconst loggernist = new Logger('NonInviteServerTransaction');\nconst loggerist = new Logger('InviteServerTransaction');\n\nconst C = {\n // Transaction states.\n STATUS_TRYING : 1,\n STATUS_PROCEEDING : 2,\n STATUS_CALLING : 3,\n STATUS_ACCEPTED : 4,\n STATUS_COMPLETED : 5,\n STATUS_TERMINATED : 6,\n STATUS_CONFIRMED : 7,\n\n // Transaction types.\n NON_INVITE_CLIENT : 'nict',\n NON_INVITE_SERVER : 'nist',\n INVITE_CLIENT : 'ict',\n INVITE_SERVER : 'ist'\n};\n\nclass NonInviteClientTransaction extends EventEmitter\n{\n constructor(ua, transport, request, eventHandlers)\n {\n super();\n\n this.type = C.NON_INVITE_CLIENT;\n this.id = `z9hG4bK${Math.floor(Math.random() * 10000000)}`;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.eventHandlers = eventHandlers;\n\n let via = `SIP/2.0/${transport.via_transport}`;\n\n via += ` ${ua.configuration.via_host};branch=${this.id}`;\n\n this.request.setHeader('via', via);\n\n this.ua.newTransaction(this);\n }\n\n get C()\n {\n return C;\n }\n\n stateChanged(state)\n {\n this.state = state;\n this.emit('stateChanged');\n }\n\n send()\n {\n this.stateChanged(C.STATUS_TRYING);\n this.F = setTimeout(() => { this.timer_F(); }, Timers.TIMER_F);\n\n if (!this.transport.send(this.request))\n {\n this.onTransportError();\n }\n }\n\n onTransportError()\n {\n loggernict.debug(`transport error occurred, deleting transaction ${this.id}`);\n clearTimeout(this.F);\n clearTimeout(this.K);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n this.eventHandlers.onTransportError();\n }\n\n timer_F()\n {\n loggernict.debug(`Timer F expired for transaction ${this.id}`);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n this.eventHandlers.onRequestTimeout();\n }\n\n timer_K()\n {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n\n receiveResponse(response)\n {\n const status_code = response.status_code;\n\n if (status_code < 200)\n {\n switch (this.state)\n {\n case C.STATUS_TRYING:\n case C.STATUS_PROCEEDING:\n this.stateChanged(C.STATUS_PROCEEDING);\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n }\n else\n {\n switch (this.state)\n {\n case C.STATUS_TRYING:\n case C.STATUS_PROCEEDING:\n this.stateChanged(C.STATUS_COMPLETED);\n clearTimeout(this.F);\n\n if (status_code === 408)\n {\n this.eventHandlers.onRequestTimeout();\n }\n else\n {\n this.eventHandlers.onReceiveResponse(response);\n }\n\n this.K = setTimeout(() => { this.timer_K(); }, Timers.TIMER_K);\n break;\n case C.STATUS_COMPLETED:\n break;\n }\n }\n }\n}\n\nclass InviteClientTransaction extends EventEmitter\n{\n constructor(ua, transport, request, eventHandlers)\n {\n super();\n\n this.type = C.INVITE_CLIENT;\n this.id = `z9hG4bK${Math.floor(Math.random() * 10000000)}`;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.eventHandlers = eventHandlers;\n request.transaction = this;\n\n let via = `SIP/2.0/${transport.via_transport}`;\n\n via += ` ${ua.configuration.via_host};branch=${this.id}`;\n\n this.request.setHeader('via', via);\n\n this.ua.newTransaction(this);\n }\n\n get C()\n {\n return C;\n }\n\n stateChanged(state)\n {\n this.state = state;\n this.emit('stateChanged');\n }\n\n send()\n {\n this.stateChanged(C.STATUS_CALLING);\n this.B = setTimeout(() =>\n {\n this.timer_B();\n }, Timers.TIMER_B);\n\n if (!this.transport.send(this.request))\n {\n this.onTransportError();\n }\n }\n\n onTransportError()\n {\n clearTimeout(this.B);\n clearTimeout(this.D);\n clearTimeout(this.M);\n\n if (this.state !== C.STATUS_ACCEPTED)\n {\n loggerict.debug(`transport error occurred, deleting transaction ${this.id}`);\n this.eventHandlers.onTransportError();\n }\n\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n\n // RFC 6026 7.2.\n timer_M()\n {\n loggerict.debug(`Timer M expired for transaction ${this.id}`);\n\n if (this.state === C.STATUS_ACCEPTED)\n {\n clearTimeout(this.B);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n\n // RFC 3261 17.1.1.\n timer_B()\n {\n loggerict.debug(`Timer B expired for transaction ${this.id}`);\n if (this.state === C.STATUS_CALLING)\n {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n this.eventHandlers.onRequestTimeout();\n }\n }\n\n timer_D()\n {\n loggerict.debug(`Timer D expired for transaction ${this.id}`);\n clearTimeout(this.B);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n\n sendACK(response)\n {\n const ack = new SIPMessage.OutgoingRequest(JsSIP_C.ACK, this.request.ruri,\n this.ua, {\n 'route_set' : this.request.getHeaders('route'),\n 'call_id' : this.request.getHeader('call-id'),\n 'cseq' : this.request.cseq\n });\n\n ack.setHeader('from', this.request.getHeader('from'));\n ack.setHeader('via', this.request.getHeader('via'));\n ack.setHeader('to', response.getHeader('to'));\n\n this.D = setTimeout(() => { this.timer_D(); }, Timers.TIMER_D);\n\n this.transport.send(ack);\n }\n\n cancel(reason)\n {\n // Send only if a provisional response (>100) has been received.\n if (this.state !== C.STATUS_PROCEEDING)\n {\n return;\n }\n\n const cancel = new SIPMessage.OutgoingRequest(JsSIP_C.CANCEL, this.request.ruri,\n this.ua, {\n 'route_set' : this.request.getHeaders('route'),\n 'call_id' : this.request.getHeader('call-id'),\n 'cseq' : this.request.cseq\n });\n\n cancel.setHeader('from', this.request.getHeader('from'));\n cancel.setHeader('via', this.request.getHeader('via'));\n cancel.setHeader('to', this.request.getHeader('to'));\n\n if (reason)\n {\n cancel.setHeader('reason', reason);\n }\n\n this.transport.send(cancel);\n }\n\n receiveResponse(response)\n {\n const status_code = response.status_code;\n\n if (status_code >= 100 && status_code <= 199)\n {\n switch (this.state)\n {\n case C.STATUS_CALLING:\n this.stateChanged(C.STATUS_PROCEEDING);\n this.eventHandlers.onReceiveResponse(response);\n break;\n case C.STATUS_PROCEEDING:\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n }\n else if (status_code >= 200 && status_code <= 299)\n {\n switch (this.state)\n {\n case C.STATUS_CALLING:\n case C.STATUS_PROCEEDING:\n this.stateChanged(C.STATUS_ACCEPTED);\n this.M = setTimeout(() =>\n {\n this.timer_M();\n }, Timers.TIMER_M);\n this.eventHandlers.onReceiveResponse(response);\n break;\n case C.STATUS_ACCEPTED:\n this.eventHandlers.onReceiveResponse(response);\n break;\n }\n }\n else if (status_code >= 300 && status_code <= 699)\n {\n switch (this.state)\n {\n case C.STATUS_CALLING:\n case C.STATUS_PROCEEDING:\n this.stateChanged(C.STATUS_COMPLETED);\n this.sendACK(response);\n this.eventHandlers.onReceiveResponse(response);\n break;\n case C.STATUS_COMPLETED:\n this.sendACK(response);\n break;\n }\n }\n }\n}\n\nclass AckClientTransaction extends EventEmitter\n{\n constructor(ua, transport, request, eventHandlers)\n {\n super();\n\n this.id = `z9hG4bK${Math.floor(Math.random() * 10000000)}`;\n this.transport = transport;\n this.request = request;\n this.eventHandlers = eventHandlers;\n\n let via = `SIP/2.0/${transport.via_transport}`;\n\n via += ` ${ua.configuration.via_host};branch=${this.id}`;\n\n this.request.setHeader('via', via);\n }\n\n get C()\n {\n return C;\n }\n\n send()\n {\n if (!this.transport.send(this.request))\n {\n this.onTransportError();\n }\n }\n\n onTransportError()\n {\n loggeract.debug(`transport error occurred for transaction ${this.id}`);\n this.eventHandlers.onTransportError();\n }\n}\n\nclass NonInviteServerTransaction extends EventEmitter\n{\n constructor(ua, transport, request)\n {\n super();\n\n this.type = C.NON_INVITE_SERVER;\n this.id = request.via_branch;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.last_response = '';\n request.server_transaction = this;\n\n this.state = C.STATUS_TRYING;\n\n ua.newTransaction(this);\n }\n\n get C()\n {\n return C;\n }\n\n stateChanged(state)\n {\n this.state = state;\n this.emit('stateChanged');\n }\n\n timer_J()\n {\n loggernist.debug(`Timer J expired for transaction ${this.id}`);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n\n onTransportError()\n {\n if (!this.transportError)\n {\n this.transportError = true;\n\n loggernist.debug(`transport error occurred, deleting transaction ${this.id}`);\n\n clearTimeout(this.J);\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n\n receiveResponse(status_code, response, onSuccess, onFailure)\n {\n if (status_code === 100)\n {\n /* RFC 4320 4.1\n * 'A SIP element MUST NOT\n * send any provisional response with a\n * Status-Code other than 100 to a non-INVITE request.'\n */\n switch (this.state)\n {\n case C.STATUS_TRYING:\n this.stateChanged(C.STATUS_PROCEEDING);\n if (!this.transport.send(response))\n {\n this.onTransportError();\n }\n break;\n case C.STATUS_PROCEEDING:\n this.last_response = response;\n if (!this.transport.send(response))\n {\n this.onTransportError();\n if (onFailure)\n {\n onFailure();\n }\n }\n else if (onSuccess)\n {\n onSuccess();\n }\n break;\n }\n }\n else if (status_code >= 200 && status_code <= 699)\n {\n switch (this.state)\n {\n case C.STATUS_TRYING:\n case C.STATUS_PROCEEDING:\n this.stateChanged(C.STATUS_COMPLETED);\n this.last_response = response;\n this.J = setTimeout(() =>\n {\n this.timer_J();\n }, Timers.TIMER_J);\n if (!this.transport.send(response))\n {\n this.onTransportError();\n if (onFailure)\n {\n onFailure();\n }\n }\n else if (onSuccess)\n {\n onSuccess();\n }\n break;\n case C.STATUS_COMPLETED:\n break;\n }\n }\n }\n}\n\nclass InviteServerTransaction extends EventEmitter\n{\n constructor(ua, transport, request)\n {\n super();\n\n this.type = C.INVITE_SERVER;\n this.id = request.via_branch;\n this.ua = ua;\n this.transport = transport;\n this.request = request;\n this.last_response = '';\n request.server_transaction = this;\n\n this.state = C.STATUS_PROCEEDING;\n\n ua.newTransaction(this);\n\n this.resendProvisionalTimer = null;\n\n request.reply(100);\n }\n\n get C()\n {\n return C;\n }\n\n stateChanged(state)\n {\n this.state = state;\n this.emit('stateChanged');\n }\n\n timer_H()\n {\n loggerist.debug(`Timer H expired for transaction ${this.id}`);\n\n if (this.state === C.STATUS_COMPLETED)\n {\n loggerist.debug('ACK not received, dialog will be terminated');\n }\n\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n\n timer_I()\n {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n\n // RFC 6026 7.1.\n timer_L()\n {\n loggerist.debug(`Timer L expired for transaction ${this.id}`);\n\n if (this.state === C.STATUS_ACCEPTED)\n {\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n\n onTransportError()\n {\n if (!this.transportError)\n {\n this.transportError = true;\n\n loggerist.debug(`transport error occurred, deleting transaction ${this.id}`);\n\n if (this.resendProvisionalTimer !== null)\n {\n clearInterval(this.resendProvisionalTimer);\n this.resendProvisionalTimer = null;\n }\n\n clearTimeout(this.L);\n clearTimeout(this.H);\n clearTimeout(this.I);\n\n this.stateChanged(C.STATUS_TERMINATED);\n this.ua.destroyTransaction(this);\n }\n }\n\n resend_provisional()\n {\n if (!this.transport.send(this.last_response))\n {\n this.onTransportError();\n }\n }\n\n // INVITE Server Transaction RFC 3261 17.2.1.\n receiveResponse(status_code, response, onSuccess, onFailure)\n {\n if (status_code >= 100 && status_code <= 199)\n {\n switch (this.state)\n {\n case C.STATUS_PROCEEDING:\n if (!this.transport.send(response))\n {\n this.onTransportError();\n }\n this.last_response = response;\n break;\n }\n }\n\n if (status_code > 100 && status_code <= 199 && this.state === C.STATUS_PROCEEDING)\n {\n // Trigger the resendProvisionalTimer only for the first non 100 provisional response.\n if (this.resendProvisionalTimer === null)\n {\n this.resendProvisionalTimer = setInterval(() =>\n {\n this.resend_provisional();\n }, Timers.PROVISIONAL_RESPONSE_INTERVAL);\n }\n }\n else if (status_code >= 200 && status_code <= 299)\n {\n switch (this.state)\n {\n case C.STATUS_PROCEEDING:\n this.stateChanged(C.STATUS_ACCEPTED);\n this.last_response = response;\n this.L = setTimeout(() =>\n {\n this.timer_L();\n }, Timers.TIMER_L);\n\n if (this.resendProvisionalTimer !== null)\n {\n clearInterval(this.resendProvisionalTimer);\n this.resendProvisionalTimer = null;\n }\n\n /* falls through */\n case C.STATUS_ACCEPTED:\n // Note that this point will be reached for proceeding this.state also.\n if (!this.transport.send(response))\n {\n this.onTransportError();\n if (onFailure)\n {\n onFailure();\n }\n }\n else if (onSuccess)\n {\n onSuccess();\n }\n break;\n }\n }\n else if (status_code >= 300 && status_code <= 699)\n {\n switch (this.state)\n {\n case C.STATUS_PROCEEDING:\n if (this.resendProvisionalTimer !== null)\n {\n clearInterval(this.resendProvisionalTimer);\n this.resendProvisionalTimer = null;\n }\n\n if (!this.transport.send(response))\n {\n this.onTransportError();\n if (onFailure)\n {\n onFailure();\n }\n }\n else\n {\n this.stateChanged(C.STATUS_COMPLETED);\n this.H = setTimeout(() =>\n {\n this.timer_H();\n }, Timers.TIMER_H);\n if (onSuccess)\n {\n onSuccess();\n }\n }\n break;\n }\n }\n }\n}\n\n/**\n * INVITE:\n * _true_ if retransmission\n * _false_ new request\n *\n * ACK:\n * _true_ ACK to non2xx response\n * _false_ ACK must be passed to TU (accepted state)\n * ACK to 2xx response\n *\n * CANCEL:\n * _true_ no matching invite transaction\n * _false_ matching invite transaction and no final response sent\n *\n * OTHER:\n * _true_ retransmission\n * _false_ new request\n */\nfunction checkTransaction({ _transactions }, request)\n{\n let tr;\n\n switch (request.method)\n {\n case JsSIP_C.INVITE:\n tr = _transactions.ist[request.via_branch];\n if (tr)\n {\n switch (tr.state)\n {\n case C.STATUS_PROCEEDING:\n tr.transport.send(tr.last_response);\n break;\n\n // RFC 6026 7.1 Invite retransmission.\n // Received while in C.STATUS_ACCEPTED state. Absorb it.\n case C.STATUS_ACCEPTED:\n break;\n }\n\n return true;\n }\n break;\n case JsSIP_C.ACK:\n tr = _transactions.ist[request.via_branch];\n\n // RFC 6026 7.1.\n if (tr)\n {\n if (tr.state === C.STATUS_ACCEPTED)\n {\n return false;\n }\n else if (tr.state === C.STATUS_COMPLETED)\n {\n tr.state = C.STATUS_CONFIRMED;\n tr.I = setTimeout(() => { tr.timer_I(); }, Timers.TIMER_I);\n\n return true;\n }\n }\n // ACK to 2XX Response.\n else\n {\n return false;\n }\n break;\n case JsSIP_C.CANCEL:\n tr = _transactions.ist[request.via_branch];\n if (tr)\n {\n request.reply_sl(200);\n if (tr.state === C.STATUS_PROCEEDING)\n {\n return false;\n }\n else\n {\n return true;\n }\n }\n else\n {\n request.reply_sl(481);\n\n return true;\n }\n default:\n\n // Non-INVITE Server Transaction RFC 3261 17.2.2.\n tr = _transactions.nist[request.via_branch];\n if (tr)\n {\n switch (tr.state)\n {\n case C.STATUS_TRYING:\n break;\n case C.STATUS_PROCEEDING:\n case C.STATUS_COMPLETED:\n tr.transport.send(tr.last_response);\n break;\n }\n\n return true;\n }\n break;\n }\n}\n\nmodule.exports = {\n C,\n NonInviteClientTransaction,\n InviteClientTransaction,\n AckClientTransaction,\n NonInviteServerTransaction,\n InviteServerTransaction,\n checkTransaction\n};\n","const Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst DigestAuthentication = require('./DigestAuthentication');\nconst Transactions = require('./Transactions');\n\nconst logger = new Logger('RequestSender');\n\n// Default event handlers.\nconst EventHandlers = {\n onRequestTimeout : () => {},\n onTransportError : () => {},\n onReceiveResponse : () => {},\n onAuthenticated : () => {}\n};\n\nmodule.exports = class RequestSender\n{\n constructor(ua, request, eventHandlers)\n {\n this._ua = ua;\n this._eventHandlers = eventHandlers;\n this._method = request.method;\n this._request = request;\n this._auth = null;\n this._challenged = false;\n this._staled = false;\n\n // Define the undefined handlers.\n for (const handler in EventHandlers)\n {\n if (Object.prototype.hasOwnProperty.call(EventHandlers, handler))\n {\n if (!this._eventHandlers[handler])\n {\n this._eventHandlers[handler] = EventHandlers[handler];\n }\n }\n }\n\n // If ua is in closing process or even closed just allow sending Bye and ACK.\n if (ua.status === ua.C.STATUS_USER_CLOSED &&\n (this._method !== JsSIP_C.BYE || this._method !== JsSIP_C.ACK))\n {\n this._eventHandlers.onTransportError();\n }\n }\n\n /**\n * Create the client transaction and send the message.\n */\n send()\n {\n const eventHandlers = {\n onRequestTimeout : () => { this._eventHandlers.onRequestTimeout(); },\n onTransportError : () => { this._eventHandlers.onTransportError(); },\n onReceiveResponse : (response) => { this._receiveResponse(response); }\n };\n\n switch (this._method)\n {\n case 'INVITE':\n this.clientTransaction = new Transactions.InviteClientTransaction(\n this._ua, this._ua.transport, this._request, eventHandlers);\n break;\n case 'ACK':\n this.clientTransaction = new Transactions.AckClientTransaction(\n this._ua, this._ua.transport, this._request, eventHandlers);\n break;\n default:\n this.clientTransaction = new Transactions.NonInviteClientTransaction(\n this._ua, this._ua.transport, this._request, eventHandlers);\n }\n // If authorization JWT is present, use it.\n if (this._ua._configuration.authorization_jwt)\n {\n this._request.setHeader('Authorization', this._ua._configuration.authorization_jwt);\n }\n\n this.clientTransaction.send();\n }\n\n /**\n * Called from client transaction when receiving a correct response to the request.\n * Authenticate request if needed or pass the response back to the applicant.\n */\n _receiveResponse(response)\n {\n let challenge;\n let authorization_header_name;\n const status_code = response.status_code;\n\n /*\n * Authentication\n * Authenticate once. _challenged_ flag used to avoid infinite authentications.\n */\n if ((status_code === 401 || status_code === 407) &&\n (this._ua.configuration.password !== null || this._ua.configuration.ha1 !== null))\n {\n\n // Get and parse the appropriate WWW-Authenticate or Proxy-Authenticate header.\n if (response.status_code === 401)\n {\n challenge = response.parseHeader('www-authenticate');\n authorization_header_name = 'authorization';\n }\n else\n {\n challenge = response.parseHeader('proxy-authenticate');\n authorization_header_name = 'proxy-authorization';\n }\n\n // Verify it seems a valid challenge.\n if (!challenge)\n {\n logger.debug(`${response.status_code} with wrong or missing challenge, cannot authenticate`);\n this._eventHandlers.onReceiveResponse(response);\n\n return;\n }\n\n if (!this._challenged || (!this._staled && challenge.stale === true))\n {\n if (!this._auth)\n {\n this._auth = new DigestAuthentication({\n username : this._ua.configuration.authorization_user,\n password : this._ua.configuration.password,\n realm : this._ua.configuration.realm,\n ha1 : this._ua.configuration.ha1\n });\n }\n\n // Verify that the challenge is really valid.\n if (!this._auth.authenticate(this._request, challenge))\n {\n this._eventHandlers.onReceiveResponse(response);\n\n return;\n }\n this._challenged = true;\n\n // Update ha1 and realm in the UA.\n this._ua.set('realm', this._auth.get('realm'));\n this._ua.set('ha1', this._auth.get('ha1'));\n\n if (challenge.stale)\n {\n this._staled = true;\n }\n\n this._request = this._request.clone();\n this._request.cseq += 1;\n this._request.setHeader('cseq', `${this._request.cseq} ${this._method}`);\n this._request.setHeader(authorization_header_name, this._auth.toString());\n\n this._eventHandlers.onAuthenticated(this._request);\n this.send();\n }\n else\n {\n this._eventHandlers.onReceiveResponse(response);\n }\n }\n else\n {\n this._eventHandlers.onReceiveResponse(response);\n }\n }\n};\n","const Logger = require('./Logger');\nconst Utils = require('./Utils');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst RequestSender = require('./RequestSender');\n\nconst logger = new Logger('Registrator');\n\nconst MIN_REGISTER_EXPIRES = 10; // In seconds.\n\nmodule.exports = class Registrator\n{\n constructor(ua, transport)\n {\n // Force reg_id to 1.\n this._reg_id = 1;\n\n this._ua = ua;\n this._transport = transport;\n\n this._registrar = ua.configuration.registrar_server;\n this._expires = ua.configuration.register_expires;\n\n // Call-ID and CSeq values RFC3261 10.2.\n this._call_id = Utils.createRandomToken(22);\n this._cseq = 0;\n\n this._to_uri = ua.configuration.uri;\n\n this._registrationTimer = null;\n\n // Ongoing Register request.\n this._registering = false;\n\n // Set status.\n this._registered = false;\n\n // Contact header.\n this._contact = this._ua.contact.toString();\n\n // Sip.ice media feature tag (RFC 5768).\n this._contact += ';+sip.ice';\n\n // Custom headers for REGISTER and un-REGISTER.\n this._extraHeaders = [];\n\n // Custom Contact header params for REGISTER and un-REGISTER.\n this._extraContactParams = '';\n\n // Contents of the sip.instance Contact header parameter.\n this._sipInstance = `\"<urn:uuid:${this._ua.configuration.instance_id}>\"`;\n\n this._contact += `;reg-id=${this._reg_id}`;\n this._contact += `;+sip.instance=${this._sipInstance}`;\n }\n\n get registered()\n {\n return this._registered;\n }\n\n setExtraHeaders(extraHeaders)\n {\n if (!Array.isArray(extraHeaders))\n {\n extraHeaders = [];\n }\n\n this._extraHeaders = extraHeaders.slice();\n }\n\n setExtraContactParams(extraContactParams)\n {\n if (!(extraContactParams instanceof Object))\n {\n extraContactParams = {};\n }\n\n // Reset it.\n this._extraContactParams = '';\n\n for (const param_key in extraContactParams)\n {\n if (Object.prototype.hasOwnProperty.call(extraContactParams, param_key))\n {\n const param_value = extraContactParams[param_key];\n\n this._extraContactParams += (`;${param_key}`);\n if (param_value)\n {\n this._extraContactParams += (`=${param_value}`);\n }\n }\n }\n }\n\n register()\n {\n if (this._registering)\n {\n logger.debug('Register request in progress...');\n\n return;\n }\n\n const extraHeaders = Utils.cloneArray(this._extraHeaders);\n\n let contactValue;\n\n if (this._expires)\n {\n contactValue = `${this._contact};expires=${this._expires}${this._extraContactParams}`;\n extraHeaders.push(`Expires: ${this._expires}`);\n }\n else\n {\n contactValue = `${this._contact}${this._extraContactParams}`;\n }\n\n extraHeaders.push(`Contact: ${contactValue}`);\n\n let fromTag = Utils.newTag();\n\n if (this._ua.configuration.register_from_tag_trail)\n {\n if (typeof this._ua.configuration.register_from_tag_trail === 'function')\n {\n fromTag += this._ua.configuration.register_from_tag_trail();\n }\n else\n {\n fromTag += this._ua.configuration.register_from_tag_trail;\n }\n }\n\n const request = new SIPMessage.OutgoingRequest(\n JsSIP_C.REGISTER, this._registrar, this._ua, {\n 'to_uri' : this._to_uri,\n 'call_id' : this._call_id,\n 'cseq' : (this._cseq += 1),\n 'from_tag' : fromTag\n }, extraHeaders);\n\n const request_sender = new RequestSender(this._ua, request, {\n onRequestTimeout : () =>\n {\n this._registrationFailure(null, JsSIP_C.causes.REQUEST_TIMEOUT);\n },\n onTransportError : () =>\n {\n this._registrationFailure(null, JsSIP_C.causes.CONNECTION_ERROR);\n },\n // Increase the CSeq on authentication.\n onAuthenticated : () =>\n {\n this._cseq += 1;\n },\n onReceiveResponse : (response) =>\n {\n // Discard responses to older REGISTER/un-REGISTER requests.\n if (response.cseq !== this._cseq)\n {\n return;\n }\n\n // Clear registration timer.\n if (this._registrationTimer !== null)\n {\n clearTimeout(this._registrationTimer);\n this._registrationTimer = null;\n }\n\n switch (true)\n {\n case /^1[0-9]{2}$/.test(response.status_code):\n {\n // Ignore provisional responses.\n break;\n }\n\n case /^2[0-9]{2}$/.test(response.status_code):\n {\n this._registering = false;\n\n if (!response.hasHeader('Contact'))\n {\n logger.debug('no Contact header in response to REGISTER, response ignored');\n\n break;\n }\n\n const contacts = response.headers['Contact']\n .reduce((a, b) => a.concat(b.parsed), []);\n\n // Get the Contact pointing to us and update the expires value accordingly.\n // Try to find a matching Contact using sip.instance and reg-id.\n let contact = contacts.find((element) => (\n (this._sipInstance === element.getParam('+sip.instance')) &&\n (this._reg_id === parseInt(element.getParam('reg-id')))\n ));\n\n // If no match was found using the sip.instance try comparing the URIs.\n if (!contact)\n {\n contact = contacts.find((element) => (\n (element.uri.user === this._ua.contact.uri.user)\n ));\n }\n\n if (!contact)\n {\n logger.debug('no Contact header pointing to us, response ignored');\n\n break;\n }\n\n let expires = contact.getParam('expires');\n\n if (!expires && response.hasHeader('expires'))\n {\n expires = response.getHeader('expires');\n }\n\n if (!expires)\n {\n expires = this._expires;\n }\n\n expires = Number(expires);\n\n if (expires < MIN_REGISTER_EXPIRES)\n expires = MIN_REGISTER_EXPIRES;\n\n const timeout = expires > 64\n ? (expires * 1000 / 2) +\n Math.floor(((expires / 2) - 32) * 1000 * Math.random())\n : (expires * 1000) - 5000;\n\n // Re-Register or emit an event before the expiration interval has elapsed.\n // For that, decrease the expires value. ie: 3 seconds.\n this._registrationTimer = setTimeout(() =>\n {\n this._registrationTimer = null;\n // If there are no listeners for registrationExpiring, renew registration.\n // If there are listeners, let the function listening do the register call.\n if (this._ua.listeners('registrationExpiring').length === 0)\n {\n this.register();\n }\n else\n {\n this._ua.emit('registrationExpiring');\n }\n }, timeout);\n\n // Save gruu values.\n if (contact.hasParam('temp-gruu'))\n {\n this._ua.contact.temp_gruu = contact.getParam('temp-gruu').replace(/\"/g, '');\n }\n if (contact.hasParam('pub-gruu'))\n {\n this._ua.contact.pub_gruu = contact.getParam('pub-gruu').replace(/\"/g, '');\n }\n\n if (!this._registered)\n {\n this._registered = true;\n this._ua.registered({ response });\n }\n\n break;\n }\n\n // Interval too brief RFC3261 10.2.8.\n case /^423$/.test(response.status_code):\n {\n if (response.hasHeader('min-expires'))\n {\n // Increase our registration interval to the suggested minimum.\n this._expires = Number(response.getHeader('min-expires'));\n\n if (this._expires < MIN_REGISTER_EXPIRES)\n this._expires = MIN_REGISTER_EXPIRES;\n\n // Assure register re-try with new expire.\n this._registering = false;\n\n // Attempt the registration again immediately.\n this.register();\n }\n else\n { // This response MUST contain a Min-Expires header field.\n logger.debug('423 response received for REGISTER without Min-Expires');\n\n this._registrationFailure(response, JsSIP_C.causes.SIP_FAILURE_CODE);\n }\n\n break;\n }\n\n default:\n {\n const cause = Utils.sipErrorCause(response.status_code);\n\n this._registrationFailure(response, cause);\n }\n }\n }\n });\n\n this._registering = true;\n request_sender.send();\n }\n\n unregister(options = {})\n {\n if (!this._registered)\n {\n logger.debug('already unregistered');\n\n return;\n }\n\n this._registered = false;\n\n // Clear the registration timer.\n if (this._registrationTimer !== null)\n {\n clearTimeout(this._registrationTimer);\n this._registrationTimer = null;\n }\n\n const extraHeaders = Utils.cloneArray(this._extraHeaders);\n\n if (options.all)\n {\n extraHeaders.push(`Contact: *${this._extraContactParams}`);\n }\n else\n {\n extraHeaders.push(`Contact: ${this._contact};expires=0${this._extraContactParams}`);\n }\n\n extraHeaders.push('Expires: 0');\n\n const request = new SIPMessage.OutgoingRequest(\n JsSIP_C.REGISTER, this._registrar, this._ua, {\n 'to_uri' : this._to_uri,\n 'call_id' : this._call_id,\n 'cseq' : (this._cseq += 1)\n }, extraHeaders);\n\n const request_sender = new RequestSender(this._ua, request, {\n onRequestTimeout : () =>\n {\n this._unregistered(null, JsSIP_C.causes.REQUEST_TIMEOUT);\n },\n onTransportError : () =>\n {\n this._unregistered(null, JsSIP_C.causes.CONNECTION_ERROR);\n },\n // Increase the CSeq on authentication.\n onAuthenticated : () =>\n {\n this._cseq += 1;\n },\n onReceiveResponse : (response) =>\n {\n switch (true)\n {\n case /^1[0-9]{2}$/.test(response.status_code):\n // Ignore provisional responses.\n break;\n case /^2[0-9]{2}$/.test(response.status_code):\n this._unregistered(response);\n break;\n default:\n {\n const cause = Utils.sipErrorCause(response.status_code);\n\n this._unregistered(response, cause);\n }\n }\n }\n });\n\n request_sender.send();\n }\n\n close()\n {\n if (this._registered)\n {\n this.unregister();\n }\n }\n\n\n onTransportClosed()\n {\n this._registering = false;\n if (this._registrationTimer !== null)\n {\n clearTimeout(this._registrationTimer);\n this._registrationTimer = null;\n }\n\n if (this._registered)\n {\n this._registered = false;\n this._ua.unregistered({});\n }\n }\n\n _registrationFailure(response, cause)\n {\n this._registering = false;\n this._ua.registrationFailed({\n response : response || null,\n cause\n });\n\n if (this._registered)\n {\n this._registered = false;\n this._ua.unregistered({\n response : response || null,\n cause\n });\n }\n }\n\n _unregistered(response, cause)\n {\n this._registering = false;\n this._registered = false;\n this._ua.unregistered({\n response : response || null,\n cause : cause || null\n });\n }\n};\n","const JsSIP_C = require('../Constants');\nconst Transactions = require('../Transactions');\nconst RequestSender = require('../RequestSender');\n\n// Default event handlers.\nconst EventHandlers = {\n onRequestTimeout : () => {},\n onTransportError : () => {},\n onSuccessResponse : () => {},\n onErrorResponse : () => {},\n onAuthenticated : () => {},\n onDialogError : () => {}\n};\n\nmodule.exports = class DialogRequestSender\n{\n constructor(dialog, request, eventHandlers)\n {\n this._dialog = dialog;\n this._ua = dialog._ua;\n this._request = request;\n this._eventHandlers = eventHandlers;\n\n // RFC3261 14.1 Modifying an Existing Session. UAC Behavior.\n this._reattempt = false;\n this._reattemptTimer = null;\n\n // Define the undefined handlers.\n for (const handler in EventHandlers)\n {\n if (Object.prototype.hasOwnProperty.call(EventHandlers, handler))\n {\n if (!this._eventHandlers[handler])\n {\n this._eventHandlers[handler] = EventHandlers[handler];\n }\n }\n }\n }\n\n get request()\n {\n return this._request;\n }\n\n send()\n {\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout : () =>\n {\n this._eventHandlers.onRequestTimeout();\n },\n onTransportError : () =>\n {\n this._eventHandlers.onTransportError();\n },\n onAuthenticated : (request) =>\n {\n this._eventHandlers.onAuthenticated(request);\n },\n onReceiveResponse : (response) =>\n {\n this._receiveResponse(response);\n }\n });\n\n request_sender.send();\n\n // RFC3261 14.2 Modifying an Existing Session -UAC BEHAVIOR-.\n if ((this._request.method === JsSIP_C.INVITE ||\n (this._request.method === JsSIP_C.UPDATE && this._request.body)) &&\n request_sender.clientTransaction.state !== Transactions.C.STATUS_TERMINATED)\n {\n this._dialog.uac_pending_reply = true;\n\n const stateChanged = () =>\n {\n if (request_sender.clientTransaction.state === Transactions.C.STATUS_ACCEPTED ||\n request_sender.clientTransaction.state === Transactions.C.STATUS_COMPLETED ||\n request_sender.clientTransaction.state === Transactions.C.STATUS_TERMINATED)\n {\n request_sender.clientTransaction.removeListener('stateChanged', stateChanged);\n this._dialog.uac_pending_reply = false;\n }\n };\n\n request_sender.clientTransaction.on('stateChanged', stateChanged);\n }\n }\n\n _receiveResponse(response)\n {\n // RFC3261 12.2.1.2 408 or 481 is received for a request within a dialog.\n if (response.status_code === 408 || response.status_code === 481)\n {\n this._eventHandlers.onDialogError(response);\n }\n else if (response.method === JsSIP_C.INVITE && response.status_code === 491)\n {\n if (this._reattempt)\n {\n this._eventHandlers.onErrorResponse(response);\n }\n else\n {\n this._request.cseq = this._dialog.local_seqnum += 1;\n this._reattemptTimer = setTimeout(() =>\n {\n if (!this._dialog.isTerminated())\n {\n this._reattempt = true;\n this.send();\n }\n }, 1000);\n }\n }\n else if (response.status_code >= 200 && response.status_code < 300)\n {\n this._eventHandlers.onSuccessResponse(response);\n }\n else if (response.status_code >= 300)\n {\n this._eventHandlers.onErrorResponse(response);\n }\n }\n};\n","const Logger = require('./Logger');\nconst SIPMessage = require('./SIPMessage');\nconst JsSIP_C = require('./Constants');\nconst Transactions = require('./Transactions');\nconst Dialog_RequestSender = require('./Dialog/RequestSender');\nconst Utils = require('./Utils');\n\nconst logger = new Logger('Dialog');\n\nconst C = {\n // Dialog states.\n STATUS_EARLY : 1,\n STATUS_CONFIRMED : 2,\n STATUS_TERMINATED : 3\n};\n\n// RFC 3261 12.1.\nmodule.exports = class Dialog\n{\n // Expose C object.\n static get C()\n {\n return C;\n }\n\n constructor(owner, message, type, state = C.STATUS_CONFIRMED)\n {\n this._owner = owner;\n this._ua = owner._ua;\n\n this._uac_pending_reply = false;\n this._uas_pending_reply = false;\n\n if (!message.hasHeader('contact'))\n {\n return {\n error : 'unable to create a Dialog without Contact header field'\n };\n }\n\n if (message instanceof SIPMessage.IncomingResponse)\n {\n state = (message.status_code < 200) ? C.STATUS_EARLY : C.STATUS_CONFIRMED;\n }\n\n const contact = message.parseHeader('contact');\n\n // RFC 3261 12.1.1.\n if (type === 'UAS')\n {\n this._id = {\n call_id : message.call_id,\n local_tag : message.to_tag,\n remote_tag : message.from_tag,\n toString()\n {\n return this.call_id + this.local_tag + this.remote_tag;\n }\n };\n this._state = state;\n this._remote_seqnum = message.cseq;\n this._local_uri = message.parseHeader('to').uri;\n this._remote_uri = message.parseHeader('from').uri;\n this._remote_target = contact.uri;\n this._route_set = message.getHeaders('record-route');\n this.incoming_ack_seqnum = message.cseq;\n this.outgoing_ack_seqnum = null;\n }\n // RFC 3261 12.1.2.\n else if (type === 'UAC')\n {\n this._id = {\n call_id : message.call_id,\n local_tag : message.from_tag,\n remote_tag : message.to_tag,\n toString()\n {\n return this.call_id + this.local_tag + this.remote_tag;\n }\n };\n this._state = state;\n this._local_seqnum = message.cseq;\n this._local_uri = message.parseHeader('from').uri;\n this._remote_uri = message.parseHeader('to').uri;\n this._remote_target = contact.uri;\n this._route_set = message.getHeaders('record-route').reverse();\n this.incoming_ack_seqnum = null;\n this.outgoing_ack_seqnum = this._local_seqnum;\n\n }\n\n this._ua.newDialog(this);\n logger.debug(`new ${type} dialog created with status ${this._state === C.STATUS_EARLY ? 'EARLY': 'CONFIRMED'}`);\n }\n\n get id()\n {\n return this._id;\n }\n\n get local_seqnum()\n {\n return this._local_seqnum;\n }\n\n set local_seqnum(num)\n {\n this._local_seqnum = num;\n }\n\n get owner()\n {\n return this._owner;\n }\n\n get uac_pending_reply()\n {\n return this._uac_pending_reply;\n }\n\n set uac_pending_reply(pending)\n {\n this._uac_pending_reply = pending;\n }\n\n get uas_pending_reply()\n {\n return this._uas_pending_reply;\n }\n\n isTerminated()\n {\n return this._status === C.STATUS_TERMINATED;\n }\n\n update(message, type)\n {\n this._state = C.STATUS_CONFIRMED;\n\n logger.debug(`dialog ${this._id.toString()} changed to CONFIRMED state`);\n\n if (type === 'UAC')\n {\n // RFC 3261 13.2.2.4.\n this._route_set = message.getHeaders('record-route').reverse();\n }\n }\n\n terminate()\n {\n logger.debug(`dialog ${this._id.toString()} deleted`);\n\n this._ua.destroyDialog(this);\n this._state = C.STATUS_TERMINATED;\n }\n\n sendRequest(method, options = {})\n {\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const body = options.body || null;\n const request = this._createRequest(method, extraHeaders, body);\n\n // Increase the local CSeq on authentication.\n eventHandlers.onAuthenticated = () =>\n {\n this._local_seqnum += 1;\n\n // In case of re-INVITE store outgoing ack_seqnum for its CANCEL or ACK.\n if (request.method === JsSIP_C.INVITE)\n {\n this._outgoing_ack_seqnum = this._local_seqnum;\n }\n };\n\n const request_sender = new Dialog_RequestSender(this, request, eventHandlers);\n\n request_sender.send();\n\n // Return the instance of OutgoingRequest.\n return request;\n }\n\n receiveRequest(request)\n {\n // Check in-dialog request.\n if (!this._checkInDialogRequest(request))\n {\n return;\n }\n\n // ACK received. Cleanup this._ack_seqnum.\n if (request.method === JsSIP_C.ACK && this.incoming_ack_seqnum !== null)\n {\n this.incoming_ack_seqnum = null;\n }\n // INVITE received. Set this._ack_seqnum.\n else if (request.method === JsSIP_C.INVITE)\n {\n this.incoming_ack_seqnum = request.cseq;\n }\n\n this._owner.receiveRequest(request);\n }\n\n // RFC 3261 12.2.1.1.\n _createRequest(method, extraHeaders, body)\n {\n extraHeaders = Utils.cloneArray(extraHeaders);\n\n if (!this._local_seqnum) { this._local_seqnum = Math.floor(Math.random() * 10000); }\n\n // CANCEL and ACK must use the same sequence number as the INVITE.\n const cseq = (method === JsSIP_C.CANCEL || method === JsSIP_C.ACK) ?\n this.outgoing_ack_seqnum :\n this._local_seqnum += 1;\n\n // In case of re-INVITE store ack_seqnum for future CANCEL or ACK.\n if (method === JsSIP_C.INVITE)\n {\n this.outgoing_ack_seqnum = cseq;\n }\n\n const request = new SIPMessage.OutgoingRequest(\n method,\n this._remote_target,\n this._ua, {\n 'cseq' : cseq,\n 'call_id' : this._id.call_id,\n 'from_uri' : this._local_uri,\n 'from_tag' : this._id.local_tag,\n 'to_uri' : this._remote_uri,\n 'to_tag' : this._id.remote_tag,\n 'route_set' : this._route_set\n }, extraHeaders, body);\n\n return request;\n }\n\n // RFC 3261 12.2.2.\n _checkInDialogRequest(request)\n {\n\n if (!this._remote_seqnum)\n {\n this._remote_seqnum = request.cseq;\n }\n else if (request.cseq < this._remote_seqnum)\n {\n if (request.method === JsSIP_C.ACK)\n {\n // We are not expecting any ACK with lower seqnum than the current one.\n // Or this is not the ACK we are waiting for.\n if (this.incoming_ack_seqnum === null ||\n request.cseq !== this.incoming_ack_seqnum)\n {\n return false;\n }\n }\n else\n {\n request.reply(500);\n\n return false;\n }\n }\n else if (request.cseq > this._remote_seqnum)\n {\n this._remote_seqnum = request.cseq;\n }\n\n // RFC3261 14.2 Modifying an Existing Session -UAS BEHAVIOR-.\n if (request.method === JsSIP_C.INVITE ||\n (request.method === JsSIP_C.UPDATE && request.body))\n {\n if (this._uac_pending_reply === true)\n {\n request.reply(491);\n }\n else if (this._uas_pending_reply === true)\n {\n const retryAfter = (Math.random() * 10 | 0) + 1;\n\n request.reply(500, null, [ `Retry-After:${retryAfter}` ]);\n\n return false;\n }\n else\n {\n this._uas_pending_reply = true;\n\n const stateChanged = () =>\n {\n if (request.server_transaction.state === Transactions.C.STATUS_ACCEPTED ||\n request.server_transaction.state === Transactions.C.STATUS_COMPLETED ||\n request.server_transaction.state === Transactions.C.STATUS_TERMINATED)\n {\n\n request.server_transaction.removeListener('stateChanged', stateChanged);\n this._uas_pending_reply = false;\n }\n };\n\n request.server_transaction.on('stateChanged', stateChanged);\n }\n\n // RFC3261 12.2.2 Replace the dialog`s remote target URI if the request is accepted.\n if (request.hasHeader('contact'))\n {\n request.server_transaction.on('stateChanged', () =>\n {\n if (request.server_transaction.state === Transactions.C.STATUS_ACCEPTED)\n {\n this._remote_target = request.parseHeader('contact').uri;\n }\n });\n }\n }\n else if (request.method === JsSIP_C.NOTIFY)\n {\n // RFC6665 3.2 Replace the dialog`s remote target URI if the request is accepted.\n if (request.hasHeader('contact'))\n {\n request.server_transaction.on('stateChanged', () =>\n {\n if (request.server_transaction.state === Transactions.C.STATUS_COMPLETED)\n {\n this._remote_target = request.parseHeader('contact').uri;\n }\n });\n }\n }\n\n return true;\n }\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Logger = require('../Logger');\nconst JsSIP_C = require('../Constants');\nconst Exceptions = require('../Exceptions');\nconst Utils = require('../Utils');\n\nconst logger = new Logger('RTCSession:DTMF');\n\nconst C = {\n MIN_DURATION : 70,\n MAX_DURATION : 6000,\n DEFAULT_DURATION : 100,\n MIN_INTER_TONE_GAP : 50,\n DEFAULT_INTER_TONE_GAP : 500\n};\n\nmodule.exports = class DTMF extends EventEmitter\n{\n constructor(session)\n {\n super();\n\n this._session = session;\n this._direction = null;\n this._tone = null;\n this._duration = null;\n this._request = null;\n }\n\n get tone()\n {\n return this._tone;\n }\n\n get duration()\n {\n return this._duration;\n }\n\n send(tone, options = {})\n {\n if (tone === undefined)\n {\n throw new TypeError('Not enough arguments');\n }\n\n this._direction = 'outgoing';\n\n // Check RTCSession Status.\n if (\n this._session.status !== this._session.C.STATUS_CONFIRMED &&\n this._session.status !== this._session.C.STATUS_WAITING_FOR_ACK &&\n this._session.status !== this._session.C.STATUS_1XX_RECEIVED\n )\n {\n throw new Exceptions.InvalidStateError(this._session.status);\n }\n\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n\n this.eventHandlers = Utils.cloneObject(options.eventHandlers);\n\n // Check tone type.\n if (typeof tone === 'string')\n {\n tone = tone.toUpperCase();\n }\n else if (typeof tone === 'number')\n {\n tone = tone.toString();\n }\n else\n {\n throw new TypeError(`Invalid tone: ${tone}`);\n }\n\n // Check tone value.\n if (!tone.match(/^[0-9A-DR#*]$/))\n {\n throw new TypeError(`Invalid tone: ${tone}`);\n }\n else\n {\n this._tone = tone;\n }\n\n // Duration is checked/corrected in RTCSession.\n this._duration = options.duration;\n\n extraHeaders.push('Content-Type: application/dtmf-relay');\n\n let body = `Signal=${this._tone}\\r\\n`;\n\n body += `Duration=${this._duration}`;\n\n this._session.newDTMF({\n originator : 'local',\n dtmf : this,\n request : this._request\n });\n\n this._session.sendRequest(JsSIP_C.INFO, {\n extraHeaders,\n eventHandlers : {\n onSuccessResponse : (response) =>\n {\n this.emit('succeeded', {\n originator : 'remote',\n response\n });\n },\n onErrorResponse : (response) =>\n {\n if (this.eventHandlers.onFailed)\n {\n this.eventHandlers.onFailed();\n }\n\n this.emit('failed', {\n originator : 'remote',\n response\n });\n },\n onRequestTimeout : () =>\n {\n this._session.onRequestTimeout();\n },\n onTransportError : () =>\n {\n this._session.onTransportError();\n },\n onDialogError : () =>\n {\n this._session.onDialogError();\n }\n },\n body\n });\n }\n\n init_incoming(request)\n {\n const reg_tone = /^(Signal\\s*?=\\s*?)([0-9A-D#*]{1})(\\s)?.*/;\n const reg_duration = /^(Duration\\s?=\\s?)([0-9]{1,4})(\\s)?.*/;\n\n this._direction = 'incoming';\n this._request = request;\n\n request.reply(200);\n\n if (request.body)\n {\n const body = request.body.split('\\n');\n\n if (body.length >= 1)\n {\n if (reg_tone.test(body[0]))\n {\n this._tone = body[0].replace(reg_tone, '$2');\n }\n }\n if (body.length >=2)\n {\n if (reg_duration.test(body[1]))\n {\n this._duration = parseInt(body[1].replace(reg_duration, '$2'), 10);\n }\n }\n }\n\n if (!this._duration)\n {\n this._duration = C.DEFAULT_DURATION;\n }\n\n if (!this._tone)\n {\n logger.debug('invalid INFO DTMF received, discarded');\n }\n else\n {\n this._session.newDTMF({\n originator : 'remote',\n dtmf : this,\n request\n });\n }\n }\n};\n\n/**\n * Expose C object.\n */\nmodule.exports.C = C;\n","const EventEmitter = require('events').EventEmitter;\nconst JsSIP_C = require('../Constants');\nconst Exceptions = require('../Exceptions');\nconst Utils = require('../Utils');\n\nmodule.exports = class Info extends EventEmitter\n{\n constructor(session)\n {\n super();\n\n this._session = session;\n this._direction = null;\n this._contentType = null;\n this._body = null;\n }\n\n get contentType()\n {\n return this._contentType;\n }\n\n get body()\n {\n return this._body;\n }\n\n send(contentType, body, options = {})\n {\n this._direction = 'outgoing';\n\n if (contentType === undefined)\n {\n throw new TypeError('Not enough arguments');\n }\n\n // Check RTCSession Status.\n if (this._session.status !== this._session.C.STATUS_CONFIRMED &&\n this._session.status !== this._session.C.STATUS_WAITING_FOR_ACK)\n {\n throw new Exceptions.InvalidStateError(this._session.status);\n }\n\n this._contentType = contentType;\n this._body = body;\n\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n\n extraHeaders.push(`Content-Type: ${contentType}`);\n\n this._session.newInfo({\n originator : 'local',\n info : this,\n request : this.request\n });\n\n this._session.sendRequest(JsSIP_C.INFO, {\n extraHeaders,\n eventHandlers : {\n onSuccessResponse : (response) =>\n {\n this.emit('succeeded', {\n originator : 'remote',\n response\n });\n },\n onErrorResponse : (response) =>\n {\n this.emit('failed', {\n originator : 'remote',\n response\n });\n },\n onTransportError : () =>\n {\n this._session.onTransportError();\n },\n onRequestTimeout : () =>\n {\n this._session.onRequestTimeout();\n },\n onDialogError : () =>\n {\n this._session.onDialogError();\n }\n },\n body\n });\n }\n\n init_incoming(request)\n {\n this._direction = 'incoming';\n this.request = request;\n\n request.reply(200);\n\n this._contentType = request.hasHeader('Content-Type') ?\n request.getHeader('Content-Type').toLowerCase() : undefined;\n this._body = request.body;\n\n this._session.newInfo({\n originator : 'remote',\n info : this,\n request\n });\n }\n};\n","const Logger = require('../Logger');\nconst JsSIP_C = require('../Constants');\n\nconst logger = new Logger('RTCSession:ReferNotifier');\n\nconst C = {\n event_type : 'refer',\n body_type : 'message/sipfrag;version=2.0',\n expires : 300\n};\n\nmodule.exports = class ReferNotifier\n{\n constructor(session, id, expires)\n {\n this._session = session;\n this._id = id;\n this._expires = expires || C.expires;\n this._active = true;\n\n // The creation of a Notifier results in an immediate NOTIFY.\n this.notify(100);\n }\n\n notify(code, reason)\n {\n logger.debug('notify()');\n\n if (this._active === false)\n {\n return;\n }\n\n reason = reason || JsSIP_C.REASON_PHRASE[code] || '';\n\n let state;\n\n if (code >= 200)\n {\n state = 'terminated;reason=noresource';\n }\n else\n {\n state = `active;expires=${this._expires}`;\n }\n\n // Put this in a try/catch block.\n this._session.sendRequest(JsSIP_C.NOTIFY, {\n extraHeaders : [\n `Event: ${C.event_type};id=${this._id}`,\n `Subscription-State: ${state}`,\n `Content-Type: ${C.body_type}`\n ],\n body : `SIP/2.0 ${code} ${reason}`,\n eventHandlers : {\n // If a negative response is received, subscription is canceled.\n onErrorResponse() { this._active = false; }\n }\n });\n }\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Logger = require('../Logger');\nconst JsSIP_C = require('../Constants');\nconst Grammar = require('../Grammar');\nconst Utils = require('../Utils');\n\nconst logger = new Logger('RTCSession:ReferSubscriber');\n\nmodule.exports = class ReferSubscriber extends EventEmitter\n{\n constructor(session)\n {\n super();\n\n this._id = null;\n this._session = session;\n }\n\n get id()\n {\n return this._id;\n }\n\n sendRefer(target, options = {})\n {\n logger.debug('sendRefer()');\n\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n\n // Set event handlers.\n for (const event in eventHandlers)\n {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event))\n {\n this.on(event, eventHandlers[event]);\n }\n }\n\n // Replaces URI header field.\n let replaces = null;\n\n if (options.replaces)\n {\n replaces = options.replaces._request.call_id;\n replaces += `;to-tag=${options.replaces._to_tag}`;\n replaces += `;from-tag=${options.replaces._from_tag}`;\n\n replaces = encodeURIComponent(replaces);\n }\n\n // Refer-To header field.\n const referTo = `Refer-To: <${target}${replaces?`?Replaces=${replaces}`:''}>`;\n\n extraHeaders.push(referTo);\n\n // Referred-By header field (if not already present).\n if (!extraHeaders.some((header) => header.toLowerCase().startsWith('referred-by:')))\n {\n const referredBy = `Referred-By: <${this._session._ua._configuration.uri._scheme}:${this._session._ua._configuration.uri._user}@${this._session._ua._configuration.uri._host}>`;\n\n extraHeaders.push(referredBy);\n }\n\n extraHeaders.push(`Contact: ${this._session.contact}`);\n\n const request = this._session.sendRequest(JsSIP_C.REFER, {\n extraHeaders,\n eventHandlers : {\n onSuccessResponse : (response) =>\n {\n this._requestSucceeded(response);\n },\n onErrorResponse : (response) =>\n {\n this._requestFailed(response, JsSIP_C.causes.REJECTED);\n },\n onTransportError : () =>\n {\n this._requestFailed(null, JsSIP_C.causes.CONNECTION_ERROR);\n },\n onRequestTimeout : () =>\n {\n this._requestFailed(null, JsSIP_C.causes.REQUEST_TIMEOUT);\n },\n onDialogError : () =>\n {\n this._requestFailed(null, JsSIP_C.causes.DIALOG_ERROR);\n }\n }\n });\n\n this._id = request.cseq;\n }\n\n receiveNotify(request)\n {\n logger.debug('receiveNotify()');\n\n if (!request.body)\n {\n return;\n }\n\n const status_line = Grammar.parse(request.body.trim().split('\\r\\n', 1)[0], 'Status_Line');\n\n if (status_line === -1)\n {\n logger.debug(`receiveNotify() | error parsing NOTIFY body: \"${request.body}\"`);\n\n return;\n }\n\n switch (true)\n {\n case /^100$/.test(status_line.status_code):\n this.emit('trying', {\n request,\n status_line\n });\n break;\n\n case /^1[0-9]{2}$/.test(status_line.status_code):\n this.emit('progress', {\n request,\n status_line\n });\n break;\n\n case /^2[0-9]{2}$/.test(status_line.status_code):\n this.emit('accepted', {\n request,\n status_line\n });\n break;\n\n default:\n this.emit('failed', {\n request,\n status_line\n });\n break;\n }\n }\n\n _requestSucceeded(response)\n {\n logger.debug('REFER succeeded');\n\n logger.debug('emit \"requestSucceeded\"');\n\n this.emit('requestSucceeded', {\n response\n });\n }\n\n _requestFailed(response, cause)\n {\n logger.debug('REFER failed');\n\n logger.debug('emit \"requestFailed\"');\n\n this.emit('requestFailed', {\n response : response || null,\n cause\n });\n }\n};\n","// eslint-disable-next-line no-redeclare\n/* globals RTCPeerConnection: false, RTCSessionDescription: false */\n\nconst EventEmitter = require('events').EventEmitter;\nconst sdp_transform = require('sdp-transform');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Exceptions = require('./Exceptions');\nconst Transactions = require('./Transactions');\nconst Utils = require('./Utils');\nconst Timers = require('./Timers');\nconst SIPMessage = require('./SIPMessage');\nconst Dialog = require('./Dialog');\nconst RequestSender = require('./RequestSender');\nconst RTCSession_DTMF = require('./RTCSession/DTMF');\nconst RTCSession_Info = require('./RTCSession/Info');\nconst RTCSession_ReferNotifier = require('./RTCSession/ReferNotifier');\nconst RTCSession_ReferSubscriber = require('./RTCSession/ReferSubscriber');\nconst URI = require('./URI');\n\nconst logger = new Logger('RTCSession');\n\nconst C = {\n // RTCSession states.\n STATUS_NULL : 0,\n STATUS_INVITE_SENT : 1,\n STATUS_1XX_RECEIVED : 2,\n STATUS_INVITE_RECEIVED : 3,\n STATUS_WAITING_FOR_ANSWER : 4,\n STATUS_ANSWERED : 5,\n STATUS_WAITING_FOR_ACK : 6,\n STATUS_CANCELED : 7,\n STATUS_TERMINATED : 8,\n STATUS_CONFIRMED : 9\n};\n\n/**\n * Local variables.\n */\nconst holdMediaTypes = [ 'audio', 'video' ];\n\nmodule.exports = class RTCSession extends EventEmitter\n{\n /**\n * Expose C object.\n */\n static get C()\n {\n return C;\n }\n\n constructor(ua)\n {\n logger.debug('new');\n\n super();\n\n this._id = null;\n this._ua = ua;\n this._status = C.STATUS_NULL;\n this._dialog = null;\n this._earlyDialogs = {};\n this._contact = null;\n this._from_tag = null;\n this._to_tag = null;\n\n // The RTCPeerConnection instance (public attribute).\n this._connection = null;\n\n // Prevent races on serial PeerConnction operations.\n this._connectionPromiseQueue = Promise.resolve();\n\n // Incoming/Outgoing request being currently processed.\n this._request = null;\n\n // Cancel state for initial outgoing request.\n this._is_canceled = false;\n this._cancel_reason = '';\n\n // RTCSession confirmation flag.\n this._is_confirmed = false;\n\n // Is late SDP being negotiated.\n this._late_sdp = false;\n\n // Default rtcOfferConstraints and rtcAnswerConstrainsts (passed in connect() or answer()).\n this._rtcOfferConstraints = null;\n this._rtcAnswerConstraints = null;\n\n // Local MediaStream.\n this._localMediaStream = null;\n this._localMediaStreamLocallyGenerated = false;\n\n // Flag to indicate PeerConnection ready for new actions.\n this._rtcReady = true;\n\n // Flag to indicate ICE candidate gathering is finished even if iceGatheringState is not yet 'complete'.\n this._iceReady = false;\n\n // SIP Timers.\n this._timers = {\n ackTimer : null,\n expiresTimer : null,\n invite2xxTimer : null,\n userNoAnswerTimer : null\n };\n\n // Session info.\n this._direction = null;\n this._local_identity = null;\n this._remote_identity = null;\n this._start_time = null;\n this._end_time = null;\n this._tones = null;\n\n // Mute/Hold state.\n this._audioMuted = false;\n this._videoMuted = false;\n this._localHold = false;\n this._remoteHold = false;\n\n // Session Timers (RFC 4028).\n this._sessionTimers = {\n enabled : this._ua.configuration.session_timers,\n refreshMethod : this._ua.configuration.session_timers_refresh_method,\n defaultExpires : JsSIP_C.SESSION_EXPIRES,\n currentExpires : null,\n running : false,\n refresher : false,\n timer : null // A setTimeout.\n };\n\n // Map of ReferSubscriber instances indexed by the REFER's CSeq number.\n this._referSubscribers = {};\n\n // Custom session empty object for high level use.\n this._data = {};\n }\n\n /**\n * User API\n */\n\n // Expose RTCSession constants as a property of the RTCSession instance.\n get C()\n {\n return C;\n }\n\n // Expose session failed/ended causes as a property of the RTCSession instance.\n get causes()\n {\n return JsSIP_C.causes;\n }\n\n get id()\n {\n return this._id;\n }\n\n get connection()\n {\n return this._connection;\n }\n\n get contact()\n {\n return this._contact;\n }\n\n get direction()\n {\n return this._direction;\n }\n\n get local_identity()\n {\n return this._local_identity;\n }\n\n get remote_identity()\n {\n return this._remote_identity;\n }\n\n get start_time()\n {\n return this._start_time;\n }\n\n get end_time()\n {\n return this._end_time;\n }\n\n get data()\n {\n return this._data;\n }\n\n set data(_data)\n {\n this._data = _data;\n }\n\n get status()\n {\n return this._status;\n }\n\n isInProgress()\n {\n switch (this._status)\n {\n case C.STATUS_NULL:\n case C.STATUS_INVITE_SENT:\n case C.STATUS_1XX_RECEIVED:\n case C.STATUS_INVITE_RECEIVED:\n case C.STATUS_WAITING_FOR_ANSWER:\n return true;\n default:\n return false;\n }\n }\n\n isEstablished()\n {\n switch (this._status)\n {\n case C.STATUS_ANSWERED:\n case C.STATUS_WAITING_FOR_ACK:\n case C.STATUS_CONFIRMED:\n return true;\n default:\n return false;\n }\n }\n\n isEnded()\n {\n switch (this._status)\n {\n case C.STATUS_CANCELED:\n case C.STATUS_TERMINATED:\n return true;\n default:\n return false;\n }\n }\n\n isMuted()\n {\n return {\n audio : this._audioMuted,\n video : this._videoMuted\n };\n }\n\n isOnHold()\n {\n return {\n local : this._localHold,\n remote : this._remoteHold\n };\n }\n\n connect(target, options = {}, initCallback)\n {\n logger.debug('connect()');\n\n const originalTarget = target;\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const mediaConstraints = Utils.cloneObject(options.mediaConstraints, {\n audio : true,\n video : true\n });\n const mediaStream = options.mediaStream || null;\n const pcConfig = Utils.cloneObject(options.pcConfig, { iceServers: [] });\n const rtcConstraints = options.rtcConstraints || null;\n const rtcOfferConstraints = options.rtcOfferConstraints || null;\n\n this._rtcOfferConstraints = rtcOfferConstraints;\n this._rtcAnswerConstraints = options.rtcAnswerConstraints || null;\n\n this._data = options.data || this._data;\n\n // Check target.\n if (target === undefined)\n {\n throw new TypeError('Not enough arguments');\n }\n\n // Check Session Status.\n if (this._status !== C.STATUS_NULL)\n {\n throw new Exceptions.InvalidStateError(this._status);\n }\n\n // Check WebRTC support.\n if (!window.RTCPeerConnection)\n {\n throw new Exceptions.NotSupportedError('WebRTC not supported');\n }\n\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target)\n {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n\n // Session Timers.\n if (this._sessionTimers.enabled)\n {\n if (Utils.isDecimal(options.sessionTimersExpires))\n {\n if (options.sessionTimersExpires >= JsSIP_C.MIN_SESSION_EXPIRES)\n {\n this._sessionTimers.defaultExpires = options.sessionTimersExpires;\n }\n else\n {\n this._sessionTimers.defaultExpires = JsSIP_C.SESSION_EXPIRES;\n }\n }\n }\n\n // Set event handlers.\n for (const event in eventHandlers)\n {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event))\n {\n this.on(event, eventHandlers[event]);\n }\n }\n\n // Session parameter initialization.\n this._from_tag = Utils.newTag();\n\n // Set anonymous property.\n const anonymous = options.anonymous || false;\n\n const requestParams = { from_tag: this._from_tag };\n\n this._contact = this._ua.contact.toString({\n anonymous,\n outbound : true\n });\n\n if (anonymous)\n {\n requestParams.from_display_name = 'Anonymous';\n requestParams.from_uri = new URI('sip', 'anonymous', 'anonymous.invalid');\n\n extraHeaders.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`);\n extraHeaders.push('Privacy: id');\n }\n else if (options.fromUserName)\n {\n requestParams.from_uri = new URI('sip', options.fromUserName, this._ua.configuration.uri.host);\n\n extraHeaders.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`);\n }\n\n if (options.fromDisplayName)\n {\n requestParams.from_display_name = options.fromDisplayName;\n }\n\n extraHeaders.push(`Contact: ${this._contact}`);\n extraHeaders.push('Content-Type: application/sdp');\n if (this._sessionTimers.enabled)\n {\n extraHeaders.push(`Session-Expires: ${this._sessionTimers.defaultExpires}${this._ua.configuration.session_timers_force_refresher ? ';refresher=uac' : ''}`);\n }\n\n this._request = new SIPMessage.InitialOutgoingInviteRequest(\n target, this._ua, requestParams, extraHeaders);\n\n this._id = this._request.call_id + this._from_tag;\n\n // Create a new RTCPeerConnection instance.\n this._createRTCConnection(pcConfig, rtcConstraints);\n\n // Set internal properties.\n this._direction = 'outgoing';\n this._local_identity = this._request.from;\n this._remote_identity = this._request.to;\n\n // User explicitly provided a newRTCSession callback for this session.\n if (initCallback)\n {\n initCallback(this);\n }\n\n this._newRTCSession('local', this._request);\n\n this._sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream);\n }\n\n init_incoming(request, initCallback)\n {\n logger.debug('init_incoming()');\n\n let expires;\n const contentType = request.hasHeader('Content-Type') ?\n request.getHeader('Content-Type').toLowerCase() : undefined;\n\n // Check body and content type.\n if (request.body && (contentType !== 'application/sdp'))\n {\n request.reply(415);\n\n return;\n }\n\n // Session parameter initialization.\n this._status = C.STATUS_INVITE_RECEIVED;\n this._from_tag = request.from_tag;\n this._id = request.call_id + this._from_tag;\n this._request = request;\n this._contact = this._ua.contact.toString();\n\n // Get the Expires header value if exists.\n if (request.hasHeader('expires'))\n {\n expires = request.getHeader('expires') * 1000;\n }\n\n /* Set the to_tag before\n * replying a response code that will create a dialog.\n */\n request.to_tag = Utils.newTag();\n\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(request, 'UAS', true))\n {\n request.reply(500, 'Missing Contact header field');\n\n return;\n }\n\n if (request.body)\n {\n this._late_sdp = false;\n }\n else\n {\n this._late_sdp = true;\n }\n\n this._status = C.STATUS_WAITING_FOR_ANSWER;\n\n // Set userNoAnswerTimer.\n this._timers.userNoAnswerTimer = setTimeout(() =>\n {\n request.reply(408);\n this._failed('local', null, JsSIP_C.causes.NO_ANSWER);\n }, this._ua.configuration.no_answer_timeout\n );\n\n /* Set expiresTimer\n * RFC3261 13.3.1\n */\n if (expires)\n {\n this._timers.expiresTimer = setTimeout(() =>\n {\n if (this._status === C.STATUS_WAITING_FOR_ANSWER)\n {\n request.reply(487);\n this._failed('system', null, JsSIP_C.causes.EXPIRES);\n }\n }, expires\n );\n }\n\n // Set internal properties.\n this._direction = 'incoming';\n this._local_identity = request.to;\n this._remote_identity = request.from;\n\n // A init callback was specifically defined.\n if (initCallback)\n {\n initCallback(this);\n }\n\n // Fire 'newRTCSession' event.\n this._newRTCSession('remote', request);\n\n // The user may have rejected the call in the 'newRTCSession' event.\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n // Reply 180.\n request.reply(180, null, [ `Contact: ${this._contact}` ]);\n\n // Fire 'progress' event.\n // TODO: Document that 'response' field in 'progress' event is null for incoming calls.\n this._progress('local', null);\n }\n\n /**\n * Answer the call.\n */\n answer(options = {})\n {\n logger.debug('answer()');\n\n const request = this._request;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const mediaConstraints = Utils.cloneObject(options.mediaConstraints);\n const mediaStream = options.mediaStream || null;\n const pcConfig = Utils.cloneObject(options.pcConfig, { iceServers: [] });\n const rtcConstraints = options.rtcConstraints || null;\n const rtcAnswerConstraints = options.rtcAnswerConstraints || null;\n const rtcOfferConstraints = Utils.cloneObject(options.rtcOfferConstraints);\n\n let tracks;\n let peerHasAudioLine = false;\n let peerHasVideoLine = false;\n let peerOffersFullAudio = false;\n let peerOffersFullVideo = false;\n\n this._rtcAnswerConstraints = rtcAnswerConstraints;\n this._rtcOfferConstraints = options.rtcOfferConstraints || null;\n\n this._data = options.data || this._data;\n\n // Check Session Direction and Status.\n if (this._direction !== 'incoming')\n {\n throw new Exceptions.NotSupportedError('\"answer\" not supported for outgoing RTCSession');\n }\n\n // Check Session status.\n if (this._status !== C.STATUS_WAITING_FOR_ANSWER)\n {\n throw new Exceptions.InvalidStateError(this._status);\n }\n\n // Session Timers.\n if (this._sessionTimers.enabled)\n {\n if (Utils.isDecimal(options.sessionTimersExpires))\n {\n if (options.sessionTimersExpires >= JsSIP_C.MIN_SESSION_EXPIRES)\n {\n this._sessionTimers.defaultExpires = options.sessionTimersExpires;\n }\n else\n {\n this._sessionTimers.defaultExpires = JsSIP_C.SESSION_EXPIRES;\n }\n }\n }\n\n this._status = C.STATUS_ANSWERED;\n\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(request, 'UAS'))\n {\n request.reply(500, 'Error creating dialog');\n\n return;\n }\n\n clearTimeout(this._timers.userNoAnswerTimer);\n\n extraHeaders.unshift(`Contact: ${this._contact}`);\n\n // Determine incoming media from incoming SDP offer (if any).\n const sdp = request.parseSDP();\n\n // Make sure sdp.media is an array, not the case if there is only one media.\n if (!Array.isArray(sdp.media))\n {\n sdp.media = [ sdp.media ];\n }\n\n // Go through all medias in SDP to find offered capabilities to answer with.\n for (const m of sdp.media)\n {\n if (m.type === 'audio')\n {\n peerHasAudioLine = true;\n if (!m.direction || m.direction === 'sendrecv')\n {\n peerOffersFullAudio = true;\n }\n }\n if (m.type === 'video')\n {\n peerHasVideoLine = true;\n if (!m.direction || m.direction === 'sendrecv')\n {\n peerOffersFullVideo = true;\n }\n }\n }\n\n // Remove audio from mediaStream if suggested by mediaConstraints.\n if (mediaStream && mediaConstraints.audio === false)\n {\n tracks = mediaStream.getAudioTracks();\n for (const track of tracks)\n {\n mediaStream.removeTrack(track);\n }\n }\n\n // Remove video from mediaStream if suggested by mediaConstraints.\n if (mediaStream && mediaConstraints.video === false)\n {\n tracks = mediaStream.getVideoTracks();\n for (const track of tracks)\n {\n mediaStream.removeTrack(track);\n }\n }\n\n // Set audio constraints based on incoming stream if not supplied.\n if (!mediaStream && mediaConstraints.audio === undefined)\n {\n mediaConstraints.audio = peerOffersFullAudio;\n }\n\n // Set video constraints based on incoming stream if not supplied.\n if (!mediaStream && mediaConstraints.video === undefined)\n {\n mediaConstraints.video = peerOffersFullVideo;\n }\n\n // Don't ask for audio if the incoming offer has no audio section.\n if (!mediaStream && !peerHasAudioLine && !rtcOfferConstraints.offerToReceiveAudio)\n {\n mediaConstraints.audio = false;\n }\n\n // Don't ask for video if the incoming offer has no video section.\n if (!mediaStream && !peerHasVideoLine && !rtcOfferConstraints.offerToReceiveVideo)\n {\n mediaConstraints.video = false;\n }\n\n // Create a new RTCPeerConnection instance.\n // TODO: This may throw an error, should react.\n this._createRTCConnection(pcConfig, rtcConstraints);\n\n Promise.resolve()\n // Handle local MediaStream.\n .then(() =>\n {\n // A local MediaStream is given, use it.\n if (mediaStream)\n {\n return mediaStream;\n }\n\n // Audio and/or video requested, prompt getUserMedia.\n else if (mediaConstraints.audio || mediaConstraints.video)\n {\n this._localMediaStreamLocallyGenerated = true;\n\n return navigator.mediaDevices.getUserMedia(mediaConstraints)\n .catch((error) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n request.reply(480);\n this._failed('local', null, JsSIP_C.causes.USER_DENIED_MEDIA_ACCESS);\n\n logger.warn('emit \"getusermediafailed\" [error:%o]', error);\n\n this.emit('getusermediafailed', error);\n\n throw new Error('getUserMedia() failed');\n });\n }\n })\n // Attach MediaStream to RTCPeerconnection.\n .then((stream) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n this._localMediaStream = stream;\n if (stream)\n {\n stream.getTracks().forEach((track) =>\n {\n this._connection.addTrack(track, stream);\n });\n }\n })\n // Set remote description.\n .then(() =>\n {\n if (this._late_sdp)\n {\n return;\n }\n\n const e = { originator: 'remote', type: 'offer', sdp: request.body };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n const offer = new RTCSessionDescription({ type: 'offer', sdp: e.sdp });\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(offer))\n .catch((error) =>\n {\n request.reply(488);\n\n this._failed('system', null, JsSIP_C.causes.WEBRTC_ERROR);\n\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n\n this.emit('peerconnection:setremotedescriptionfailed', error);\n\n throw new Error('peerconnection.setRemoteDescription() failed');\n });\n\n return this._connectionPromiseQueue;\n })\n // Create local description.\n .then(() =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n // TODO: Is this event already useful?\n this._connecting(request);\n\n if (!this._late_sdp)\n {\n return this._createLocalDescription('answer', rtcAnswerConstraints)\n .catch(() =>\n {\n request.reply(500);\n\n throw new Error('_createLocalDescription() failed');\n });\n }\n else\n {\n return this._createLocalDescription('offer', this._rtcOfferConstraints)\n .catch(() =>\n {\n request.reply(500);\n\n throw new Error('_createLocalDescription() failed');\n });\n }\n })\n // Send reply.\n .then((desc) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n this._handleSessionTimersInIncomingRequest(request, extraHeaders);\n\n request.reply(200, null, extraHeaders,\n desc,\n () =>\n {\n this._status = C.STATUS_WAITING_FOR_ACK;\n\n this._setInvite2xxTimer(request, desc);\n this._setACKTimer();\n this._accepted('local');\n },\n () =>\n {\n this._failed('system', null, JsSIP_C.causes.CONNECTION_ERROR);\n }\n );\n })\n .catch((error) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n logger.warn(`answer() failed: ${error.message}`);\n\n this._failed('system', error.message, JsSIP_C.causes.INTERNAL_ERROR);\n });\n }\n\n /**\n * Terminate the call.\n */\n terminate(options = {})\n {\n logger.debug('terminate()');\n\n const cause = options.cause || JsSIP_C.causes.BYE;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n\n let cancel_reason;\n let status_code = options.status_code;\n let reason_phrase = options.reason_phrase;\n\n // Check Session Status.\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Exceptions.InvalidStateError(this._status);\n }\n\n switch (this._status)\n {\n // - UAC -\n case C.STATUS_NULL:\n case C.STATUS_INVITE_SENT:\n case C.STATUS_1XX_RECEIVED:\n logger.debug('canceling session');\n\n if (status_code && (status_code < 200 || status_code >= 700))\n {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n else if (status_code)\n {\n reason_phrase = reason_phrase || JsSIP_C.REASON_PHRASE[status_code] || '';\n cancel_reason = `SIP ;cause=${status_code} ;text=\"${reason_phrase}\"`;\n }\n\n // Check Session Status.\n if (this._status === C.STATUS_NULL || this._status === C.STATUS_INVITE_SENT)\n {\n this._is_canceled = true;\n this._cancel_reason = cancel_reason;\n }\n else if (this._status === C.STATUS_1XX_RECEIVED)\n {\n this._request.cancel(cancel_reason);\n }\n\n this._status = C.STATUS_CANCELED;\n\n this._failed('local', null, JsSIP_C.causes.CANCELED);\n break;\n\n // - UAS -\n case C.STATUS_WAITING_FOR_ANSWER:\n case C.STATUS_ANSWERED:\n logger.debug('rejecting session');\n\n status_code = status_code || 480;\n\n if (status_code < 300 || status_code >= 700)\n {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n\n this._request.reply(status_code, reason_phrase, extraHeaders, body);\n this._failed('local', null, JsSIP_C.causes.REJECTED);\n break;\n\n case C.STATUS_WAITING_FOR_ACK:\n case C.STATUS_CONFIRMED:\n logger.debug('terminating session');\n\n reason_phrase = options.reason_phrase || JsSIP_C.REASON_PHRASE[status_code] || '';\n\n if (status_code && (status_code < 200 || status_code >= 700))\n {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n else if (status_code)\n {\n extraHeaders.push(`Reason: SIP ;cause=${status_code}; text=\"${reason_phrase}\"`);\n }\n\n /* RFC 3261 section 15 (Terminating a session):\n *\n * \"...the callee's UA MUST NOT send a BYE on a confirmed dialog\n * until it has received an ACK for its 2xx response or until the server\n * transaction times out.\"\n */\n if (this._status === C.STATUS_WAITING_FOR_ACK &&\n this._direction === 'incoming' &&\n this._request.server_transaction.state !== Transactions.C.STATUS_TERMINATED)\n {\n\n // Save the dialog for later restoration.\n const dialog = this._dialog;\n\n // Send the BYE as soon as the ACK is received...\n this.receiveRequest = ({ method }) =>\n {\n if (method === JsSIP_C.ACK)\n {\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders,\n body\n });\n dialog.terminate();\n }\n };\n\n // .., or when the INVITE transaction times out\n this._request.server_transaction.on('stateChanged', () =>\n {\n if (this._request.server_transaction.state ===\n Transactions.C.STATUS_TERMINATED)\n {\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders,\n body\n });\n dialog.terminate();\n }\n });\n\n this._ended('local', null, cause);\n\n // Restore the dialog into 'this' in order to be able to send the in-dialog BYE :-).\n this._dialog = dialog;\n\n // Restore the dialog into 'ua' so the ACK can reach 'this' session.\n this._ua.newDialog(dialog);\n }\n else\n {\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders,\n body\n });\n\n this._ended('local', null, cause);\n }\n }\n }\n\n sendDTMF(tones, options = {})\n {\n logger.debug('sendDTMF() | tones: %s', tones);\n\n let duration = options.duration || null;\n let interToneGap = options.interToneGap || null;\n const transportType = options.transportType || JsSIP_C.DTMF_TRANSPORT.INFO;\n\n if (tones === undefined)\n {\n throw new TypeError('Not enough arguments');\n }\n\n // Check Session Status.\n if (\n this._status !== C.STATUS_CONFIRMED &&\n this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_1XX_RECEIVED\n )\n {\n throw new Exceptions.InvalidStateError(this._status);\n }\n\n // Check Transport type.\n if (\n transportType !== JsSIP_C.DTMF_TRANSPORT.INFO &&\n transportType !== JsSIP_C.DTMF_TRANSPORT.RFC2833\n )\n {\n throw new TypeError(`invalid transportType: ${transportType}`);\n }\n\n // Convert to string.\n if (typeof tones === 'number')\n {\n tones = tones.toString();\n }\n\n // Check tones.\n if (!tones || typeof tones !== 'string' || !tones.match(/^[0-9A-DR#*,]+$/i))\n {\n throw new TypeError(`Invalid tones: ${tones}`);\n }\n\n // Check duration.\n if (duration && !Utils.isDecimal(duration))\n {\n throw new TypeError(`Invalid tone duration: ${duration}`);\n }\n else if (!duration)\n {\n duration = RTCSession_DTMF.C.DEFAULT_DURATION;\n }\n else if (duration < RTCSession_DTMF.C.MIN_DURATION)\n {\n logger.debug(`\"duration\" value is lower than the minimum allowed, setting it to ${RTCSession_DTMF.C.MIN_DURATION} milliseconds`);\n duration = RTCSession_DTMF.C.MIN_DURATION;\n }\n else if (duration > RTCSession_DTMF.C.MAX_DURATION)\n {\n logger.debug(`\"duration\" value is greater than the maximum allowed, setting it to ${RTCSession_DTMF.C.MAX_DURATION} milliseconds`);\n duration = RTCSession_DTMF.C.MAX_DURATION;\n }\n else\n {\n duration = Math.abs(duration);\n }\n options.duration = duration;\n\n // Check interToneGap.\n if (interToneGap && !Utils.isDecimal(interToneGap))\n {\n throw new TypeError(`Invalid interToneGap: ${interToneGap}`);\n }\n else if (!interToneGap)\n {\n interToneGap = RTCSession_DTMF.C.DEFAULT_INTER_TONE_GAP;\n }\n else if (interToneGap < RTCSession_DTMF.C.MIN_INTER_TONE_GAP)\n {\n logger.debug(`\"interToneGap\" value is lower than the minimum allowed, setting it to ${RTCSession_DTMF.C.MIN_INTER_TONE_GAP} milliseconds`);\n interToneGap = RTCSession_DTMF.C.MIN_INTER_TONE_GAP;\n }\n else\n {\n interToneGap = Math.abs(interToneGap);\n }\n\n // RFC2833. Let RTCDTMFSender enqueue the DTMFs.\n if (transportType === JsSIP_C.DTMF_TRANSPORT.RFC2833)\n {\n // Send DTMF in current audio RTP stream.\n const sender = this._getDTMFRTPSender();\n\n if (sender)\n {\n // Add remaining buffered tones.\n tones = sender.toneBuffer + tones;\n // Insert tones.\n sender.insertDTMF(tones, duration, interToneGap);\n }\n\n return;\n }\n\n if (this._tones)\n {\n // Tones are already queued, just add to the queue.\n this._tones += tones;\n\n return;\n }\n\n this._tones = tones;\n\n // Send the first tone.\n _sendDTMF.call(this);\n\n function _sendDTMF()\n {\n let timeout;\n\n if (this._status === C.STATUS_TERMINATED || !this._tones)\n {\n // Stop sending DTMF.\n this._tones = null;\n\n return;\n }\n\n // Retrieve the next tone.\n const tone = this._tones[0];\n\n // Remove the tone from this._tones.\n this._tones = this._tones.substring(1);\n\n if (tone === ',')\n {\n timeout = 2000;\n }\n else\n {\n // Send DTMF via SIP INFO messages.\n const dtmf = new RTCSession_DTMF(this);\n\n options.eventHandlers = {\n onFailed : () => { this._tones = null; }\n };\n dtmf.send(tone, options);\n timeout = duration + interToneGap;\n }\n\n // Set timeout for the next tone.\n setTimeout(_sendDTMF.bind(this), timeout);\n }\n }\n\n sendInfo(contentType, body, options = {})\n {\n logger.debug('sendInfo()');\n\n // Check Session Status.\n if (\n this._status !== C.STATUS_CONFIRMED &&\n this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_1XX_RECEIVED\n )\n {\n throw new Exceptions.InvalidStateError(this._status);\n }\n\n const info = new RTCSession_Info(this);\n\n info.send(contentType, body, options);\n }\n\n /**\n * Mute\n */\n mute(options = { audio: true, video: false })\n {\n logger.debug('mute()');\n\n let audioMuted = false, videoMuted = false;\n\n if (this._audioMuted === false && options.audio)\n {\n audioMuted = true;\n this._audioMuted = true;\n this._toggleMuteAudio(true);\n }\n\n if (this._videoMuted === false && options.video)\n {\n videoMuted = true;\n this._videoMuted = true;\n this._toggleMuteVideo(true);\n }\n\n if (audioMuted === true || videoMuted === true)\n {\n this._onmute({\n audio : audioMuted,\n video : videoMuted\n });\n }\n }\n\n /**\n * Unmute\n */\n unmute(options = { audio: true, video: true })\n {\n logger.debug('unmute()');\n\n let audioUnMuted = false, videoUnMuted = false;\n\n if (this._audioMuted === true && options.audio)\n {\n audioUnMuted = true;\n this._audioMuted = false;\n\n if (this._localHold === false)\n {\n this._toggleMuteAudio(false);\n }\n }\n\n if (this._videoMuted === true && options.video)\n {\n videoUnMuted = true;\n this._videoMuted = false;\n\n if (this._localHold === false)\n {\n this._toggleMuteVideo(false);\n }\n }\n\n if (audioUnMuted === true || videoUnMuted === true)\n {\n this._onunmute({\n audio : audioUnMuted,\n video : videoUnMuted\n });\n }\n }\n\n /**\n * Hold\n */\n hold(options = {}, done)\n {\n logger.debug('hold()');\n\n if (this._status !== C.STATUS_WAITING_FOR_ACK && this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n if (this._localHold === true)\n {\n return false;\n }\n\n if (!this.isReadyToReOffer())\n {\n return false;\n }\n\n this._localHold = true;\n this._onhold('local');\n\n const eventHandlers = {\n succeeded : () =>\n {\n if (done) { done(); }\n },\n failed : () =>\n {\n this.terminate({\n cause : JsSIP_C.causes.WEBRTC_ERROR,\n status_code : 500,\n reason_phrase : 'Hold Failed'\n });\n }\n };\n\n if (options.useUpdate)\n {\n this._sendUpdate({\n sdpOffer : true,\n eventHandlers,\n extraHeaders : options.extraHeaders\n });\n }\n else\n {\n this._sendReinvite({\n eventHandlers,\n extraHeaders : options.extraHeaders\n });\n }\n\n return true;\n }\n\n unhold(options = {}, done)\n {\n logger.debug('unhold()');\n\n if (this._status !== C.STATUS_WAITING_FOR_ACK && this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n if (this._localHold === false)\n {\n return false;\n }\n\n if (!this.isReadyToReOffer())\n {\n return false;\n }\n\n this._localHold = false;\n this._onunhold('local');\n\n const eventHandlers = {\n succeeded : () =>\n {\n if (done) { done(); }\n },\n failed : () =>\n {\n this.terminate({\n cause : JsSIP_C.causes.WEBRTC_ERROR,\n status_code : 500,\n reason_phrase : 'Unhold Failed'\n });\n }\n };\n\n if (options.useUpdate)\n {\n this._sendUpdate({\n sdpOffer : true,\n eventHandlers,\n extraHeaders : options.extraHeaders\n });\n }\n else\n {\n this._sendReinvite({\n eventHandlers,\n extraHeaders : options.extraHeaders\n });\n }\n\n return true;\n }\n\n renegotiate(options = {}, done)\n {\n logger.debug('renegotiate()');\n\n const rtcOfferConstraints = options.rtcOfferConstraints || null;\n\n if (this._status !== C.STATUS_WAITING_FOR_ACK && this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n if (!this.isReadyToReOffer())\n {\n return false;\n }\n\n const eventHandlers = {\n succeeded : () =>\n {\n if (done) { done(); }\n },\n failed : () =>\n {\n this.terminate({\n cause : JsSIP_C.causes.WEBRTC_ERROR,\n status_code : 500,\n reason_phrase : 'Media Renegotiation Failed'\n });\n }\n };\n\n this._setLocalMediaStatus();\n\n if (options.useUpdate)\n {\n this._sendUpdate({\n sdpOffer : true,\n eventHandlers,\n rtcOfferConstraints,\n extraHeaders : options.extraHeaders\n });\n }\n else\n {\n this._sendReinvite({\n eventHandlers,\n rtcOfferConstraints,\n extraHeaders : options.extraHeaders\n });\n }\n\n return true;\n }\n\n /**\n * Refer\n */\n refer(target, options)\n {\n logger.debug('refer()');\n\n const originalTarget = target;\n\n if (this._status !== C.STATUS_WAITING_FOR_ACK && this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target)\n {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n\n const referSubscriber = new RTCSession_ReferSubscriber(this);\n\n referSubscriber.sendRefer(target, options);\n\n // Store in the map.\n const id = referSubscriber.id;\n\n this._referSubscribers[id] = referSubscriber;\n\n // Listen for ending events so we can remove it from the map.\n referSubscriber.on('requestFailed', () =>\n {\n delete this._referSubscribers[id];\n });\n referSubscriber.on('accepted', () =>\n {\n delete this._referSubscribers[id];\n });\n referSubscriber.on('failed', () =>\n {\n delete this._referSubscribers[id];\n });\n\n return referSubscriber;\n }\n\n /**\n * Send a generic in-dialog Request\n */\n sendRequest(method, options)\n {\n logger.debug('sendRequest()');\n\n if (this._dialog)\n {\n return this._dialog.sendRequest(method, options);\n }\n else\n {\n const dialogsArray = Object.values(this._earlyDialogs);\n\n if (dialogsArray.length > 0)\n {\n return dialogsArray[0].sendRequest(method, options);\n }\n\n logger.warn('sendRequest() | no valid early dialog found');\n\n return;\n }\n }\n\n /**\n * In dialog Request Reception\n */\n receiveRequest(request)\n {\n logger.debug('receiveRequest()');\n\n if (request.method === JsSIP_C.CANCEL)\n {\n /* RFC3261 15 States that a UAS may have accepted an invitation while a CANCEL\n * was in progress and that the UAC MAY continue with the session established by\n * any 2xx response, or MAY terminate with BYE. JsSIP does continue with the\n * established session. So the CANCEL is processed only if the session is not yet\n * established.\n */\n\n /*\n * Terminate the whole session in case the user didn't accept (or yet send the answer)\n * nor reject the request opening the session.\n */\n if (this._status === C.STATUS_WAITING_FOR_ANSWER ||\n this._status === C.STATUS_ANSWERED)\n {\n this._status = C.STATUS_CANCELED;\n this._request.reply(487);\n this._failed('remote', request, JsSIP_C.causes.CANCELED);\n }\n }\n else\n {\n // Requests arriving here are in-dialog requests.\n switch (request.method)\n {\n case JsSIP_C.ACK:\n if (this._status !== C.STATUS_WAITING_FOR_ACK)\n {\n return;\n }\n\n // Update signaling status.\n this._status = C.STATUS_CONFIRMED;\n\n clearTimeout(this._timers.ackTimer);\n clearTimeout(this._timers.invite2xxTimer);\n\n if (this._late_sdp)\n {\n if (!request.body)\n {\n this.terminate({\n cause : JsSIP_C.causes.MISSING_SDP,\n status_code : 400\n });\n break;\n }\n\n const e = { originator: 'remote', type: 'answer', sdp: request.body };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n const answer = new RTCSessionDescription({ type: 'answer', sdp: e.sdp });\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() =>\n {\n if (!this._is_confirmed)\n {\n this._confirmed('remote', request);\n }\n })\n .catch((error) =>\n {\n this.terminate({\n cause : JsSIP_C.causes.BAD_MEDIA_DESCRIPTION,\n status_code : 488\n });\n\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n }\n else if (!this._is_confirmed)\n {\n this._confirmed('remote', request);\n }\n\n break;\n case JsSIP_C.BYE:\n if (this._status === C.STATUS_CONFIRMED ||\n this._status === C.STATUS_WAITING_FOR_ACK)\n {\n request.reply(200);\n this._ended('remote', request, JsSIP_C.causes.BYE);\n }\n else if (this._status === C.STATUS_INVITE_RECEIVED ||\n this._status === C.STATUS_WAITING_FOR_ANSWER)\n {\n request.reply(200);\n this._request.reply(487, 'BYE Received');\n this._ended('remote', request, JsSIP_C.causes.BYE);\n }\n else\n {\n request.reply(403, 'Wrong Status');\n }\n break;\n case JsSIP_C.INVITE:\n if (this._status === C.STATUS_CONFIRMED)\n {\n if (request.hasHeader('replaces'))\n {\n this._receiveReplaces(request);\n }\n else\n {\n this._receiveReinvite(request);\n }\n }\n else\n {\n request.reply(403, 'Wrong Status');\n }\n break;\n case JsSIP_C.INFO:\n if (this._status === C.STATUS_1XX_RECEIVED ||\n this._status === C.STATUS_WAITING_FOR_ANSWER ||\n this._status === C.STATUS_ANSWERED ||\n this._status === C.STATUS_WAITING_FOR_ACK ||\n this._status === C.STATUS_CONFIRMED)\n {\n const contentType = request.hasHeader('Content-Type') ?\n request.getHeader('Content-Type').toLowerCase() : undefined;\n\n if (contentType && (contentType.match(/^application\\/dtmf-relay/i)))\n {\n new RTCSession_DTMF(this).init_incoming(request);\n }\n else if (contentType !== undefined)\n {\n new RTCSession_Info(this).init_incoming(request);\n }\n else\n {\n request.reply(415);\n }\n }\n else\n {\n request.reply(403, 'Wrong Status');\n }\n break;\n case JsSIP_C.UPDATE:\n if (this._status === C.STATUS_CONFIRMED)\n {\n this._receiveUpdate(request);\n }\n else\n {\n request.reply(403, 'Wrong Status');\n }\n break;\n case JsSIP_C.REFER:\n if (this._status === C.STATUS_CONFIRMED)\n {\n this._receiveRefer(request);\n }\n else\n {\n request.reply(403, 'Wrong Status');\n }\n break;\n case JsSIP_C.NOTIFY:\n if (this._status === C.STATUS_CONFIRMED)\n {\n this._receiveNotify(request);\n }\n else\n {\n request.reply(403, 'Wrong Status');\n }\n break;\n default:\n request.reply(501);\n }\n }\n }\n\n /**\n * Session Callbacks\n */\n\n onTransportError()\n {\n logger.warn('onTransportError()');\n\n if (this._status !== C.STATUS_TERMINATED)\n {\n this.terminate({\n status_code : 500,\n reason_phrase : JsSIP_C.causes.CONNECTION_ERROR,\n cause : JsSIP_C.causes.CONNECTION_ERROR\n });\n }\n }\n\n onRequestTimeout()\n {\n logger.warn('onRequestTimeout()');\n\n if (this._status !== C.STATUS_TERMINATED)\n {\n this.terminate({\n status_code : 408,\n reason_phrase : JsSIP_C.causes.REQUEST_TIMEOUT,\n cause : JsSIP_C.causes.REQUEST_TIMEOUT\n });\n }\n }\n\n onDialogError()\n {\n logger.warn('onDialogError()');\n\n if (this._status !== C.STATUS_TERMINATED)\n {\n this.terminate({\n status_code : 500,\n reason_phrase : JsSIP_C.causes.DIALOG_ERROR,\n cause : JsSIP_C.causes.DIALOG_ERROR\n });\n }\n }\n\n // Called from DTMF handler.\n newDTMF(data)\n {\n logger.debug('newDTMF()');\n\n this.emit('newDTMF', data);\n }\n\n // Called from Info handler.\n newInfo(data)\n {\n logger.debug('newInfo()');\n\n this.emit('newInfo', data);\n }\n\n /**\n * Check if RTCSession is ready for an outgoing re-INVITE or UPDATE with SDP.\n */\n isReadyToReOffer()\n {\n if (!this._rtcReady)\n {\n logger.debug('isReadyToReOffer() | internal WebRTC status not ready');\n\n return false;\n }\n\n // No established yet.\n if (!this._dialog)\n {\n logger.debug('isReadyToReOffer() | session not established yet');\n\n return false;\n }\n\n // Another INVITE transaction is in progress.\n if (this._dialog.uac_pending_reply === true ||\n this._dialog.uas_pending_reply === true)\n {\n logger.debug('isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress');\n\n return false;\n }\n\n return true;\n }\n\n _close()\n {\n logger.debug('close()');\n\n // Close local MediaStream if it was not given by the user.\n if (this._localMediaStream && this._localMediaStreamLocallyGenerated)\n {\n logger.debug('close() | closing local MediaStream');\n\n Utils.closeMediaStream(this._localMediaStream);\n }\n\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n this._status = C.STATUS_TERMINATED;\n\n // Terminate RTC.\n if (this._connection)\n {\n try\n {\n this._connection.close();\n }\n catch (error)\n {\n logger.warn('close() | error closing the RTCPeerConnection: %o', error);\n }\n }\n\n // Terminate signaling.\n\n // Clear SIP timers.\n for (const timer in this._timers)\n {\n if (Object.prototype.hasOwnProperty.call(this._timers, timer))\n {\n clearTimeout(this._timers[timer]);\n }\n }\n\n // Clear Session Timers.\n clearTimeout(this._sessionTimers.timer);\n\n // Terminate confirmed dialog.\n if (this._dialog)\n {\n this._dialog.terminate();\n delete this._dialog;\n }\n\n // Terminate early dialogs.\n for (const dialog in this._earlyDialogs)\n {\n if (Object.prototype.hasOwnProperty.call(this._earlyDialogs, dialog))\n {\n this._earlyDialogs[dialog].terminate();\n delete this._earlyDialogs[dialog];\n }\n }\n\n // Terminate REFER subscribers.\n for (const subscriber in this._referSubscribers)\n {\n if (Object.prototype.hasOwnProperty.call(this._referSubscribers, subscriber))\n {\n delete this._referSubscribers[subscriber];\n }\n }\n\n this._ua.destroyRTCSession(this);\n }\n\n /**\n * Private API.\n */\n\n /**\n * RFC3261 13.3.1.4\n * Response retransmissions cannot be accomplished by transaction layer\n * since it is destroyed when receiving the first 2xx answer\n */\n _setInvite2xxTimer(request, body)\n {\n let timeout = Timers.T1;\n\n function invite2xxRetransmission()\n {\n if (this._status !== C.STATUS_WAITING_FOR_ACK)\n {\n return;\n }\n\n request.reply(200, null, [ `Contact: ${this._contact}` ], body);\n\n if (timeout < Timers.T2)\n {\n timeout = timeout * 2;\n if (timeout > Timers.T2)\n {\n timeout = Timers.T2;\n }\n }\n\n this._timers.invite2xxTimer = setTimeout(\n invite2xxRetransmission.bind(this), timeout);\n }\n\n this._timers.invite2xxTimer = setTimeout(\n invite2xxRetransmission.bind(this), timeout);\n }\n\n\n /**\n * RFC3261 14.2\n * If a UAS generates a 2xx response and never receives an ACK,\n * it SHOULD generate a BYE to terminate the dialog.\n */\n _setACKTimer()\n {\n this._timers.ackTimer = setTimeout(() =>\n {\n if (this._status === C.STATUS_WAITING_FOR_ACK)\n {\n logger.debug('no ACK received, terminating the session');\n\n clearTimeout(this._timers.invite2xxTimer);\n this.sendRequest(JsSIP_C.BYE);\n this._ended('remote', null, JsSIP_C.causes.NO_ACK);\n }\n }, Timers.TIMER_H);\n }\n\n\n _createRTCConnection(pcConfig, rtcConstraints)\n {\n this._connection = new RTCPeerConnection(pcConfig, rtcConstraints);\n\n this._connection.addEventListener('iceconnectionstatechange', () =>\n {\n const state = this._connection.iceConnectionState;\n\n // TODO: Do more with different states.\n if (state === 'failed')\n {\n this.terminate({\n cause : JsSIP_C.causes.RTP_TIMEOUT,\n status_code : 408,\n reason_phrase : JsSIP_C.causes.RTP_TIMEOUT\n });\n }\n });\n\n logger.debug('emit \"peerconnection\"');\n\n this.emit('peerconnection', {\n peerconnection : this._connection\n });\n }\n\n _createLocalDescription(type, constraints)\n {\n logger.debug('createLocalDescription()');\n\n if (type !== 'offer' && type !== 'answer')\n throw new Error(`createLocalDescription() | invalid type \"${type}\"`);\n\n const connection = this._connection;\n\n this._rtcReady = false;\n\n return Promise.resolve()\n // Create Offer or Answer.\n .then(() =>\n {\n if (type === 'offer')\n {\n return connection.createOffer(constraints)\n .catch((error) =>\n {\n logger.warn('emit \"peerconnection:createofferfailed\" [error:%o]', error);\n\n this.emit('peerconnection:createofferfailed', error);\n\n return Promise.reject(error);\n });\n }\n else\n {\n return connection.createAnswer(constraints)\n .catch((error) =>\n {\n logger.warn('emit \"peerconnection:createanswerfailed\" [error:%o]', error);\n\n this.emit('peerconnection:createanswerfailed', error);\n\n return Promise.reject(error);\n });\n }\n })\n // Set local description.\n .then((desc) =>\n {\n return connection.setLocalDescription(desc)\n .catch((error) =>\n {\n this._rtcReady = true;\n\n logger.warn('emit \"peerconnection:setlocaldescriptionfailed\" [error:%o]', error);\n\n this.emit('peerconnection:setlocaldescriptionfailed', error);\n\n return Promise.reject(error);\n });\n })\n .then(() =>\n {\n // Resolve right away if 'pc.iceGatheringState' is 'complete'.\n /**\n * Resolve right away if:\n * - 'connection.iceGatheringState' is 'complete' and no 'iceRestart' constraint is set.\n * - 'connection.iceGatheringState' is 'gathering' and 'iceReady' is true.\n */\n const iceRestart = constraints && constraints.iceRestart;\n\n if ((connection.iceGatheringState === 'complete' && !iceRestart) ||\n (connection.iceGatheringState === 'gathering' && this._iceReady))\n {\n this._rtcReady = true;\n\n const e = { originator: 'local', type: type, sdp: connection.localDescription.sdp };\n\n logger.debug('emit \"sdp\"');\n\n this.emit('sdp', e);\n\n return Promise.resolve(e.sdp);\n }\n\n // Add 'pc.onicencandidate' event handler to resolve on last candidate.\n return new Promise((resolve) =>\n {\n let finished = false;\n let iceCandidateListener;\n let iceGatheringStateListener;\n\n this._iceReady = false;\n\n const ready = () =>\n {\n if (finished)\n {\n return;\n }\n\n connection.removeEventListener('icecandidate', iceCandidateListener);\n connection.removeEventListener('icegatheringstatechange', iceGatheringStateListener);\n\n finished = true;\n this._rtcReady = true;\n\n // connection.iceGatheringState will still indicate 'gathering' and thus be blocking.\n this._iceReady = true;\n\n const e = { originator: 'local', type: type, sdp: connection.localDescription.sdp };\n\n logger.debug('emit \"sdp\"');\n\n this.emit('sdp', e);\n\n resolve(e.sdp);\n };\n\n connection.addEventListener('icecandidate', iceCandidateListener = (event) =>\n {\n const candidate = event.candidate;\n\n if (candidate)\n {\n this.emit('icecandidate', {\n candidate,\n ready\n });\n }\n else\n {\n ready();\n }\n });\n\n connection.addEventListener('icegatheringstatechange', iceGatheringStateListener = () =>\n {\n if (connection.iceGatheringState === 'complete')\n {\n ready();\n }\n });\n });\n });\n }\n\n /**\n * Dialog Management\n */\n _createDialog(message, type, early)\n {\n const local_tag = (type === 'UAS') ? message.to_tag : message.from_tag;\n const remote_tag = (type === 'UAS') ? message.from_tag : message.to_tag;\n const id = message.call_id + local_tag + remote_tag;\n\n let early_dialog = this._earlyDialogs[id];\n\n // Early Dialog.\n if (early)\n {\n if (early_dialog)\n {\n return true;\n }\n else\n {\n early_dialog = new Dialog(this, message, type, Dialog.C.STATUS_EARLY);\n\n // Dialog has been successfully created.\n if (early_dialog.error)\n {\n logger.debug(early_dialog.error);\n this._failed('remote', message, JsSIP_C.causes.INTERNAL_ERROR);\n\n return false;\n }\n else\n {\n this._earlyDialogs[id] = early_dialog;\n\n return true;\n }\n }\n }\n\n // Confirmed Dialog.\n else\n {\n this._from_tag = message.from_tag;\n this._to_tag = message.to_tag;\n\n // In case the dialog is in _early_ state, update it.\n if (early_dialog)\n {\n early_dialog.update(message, type);\n this._dialog = early_dialog;\n delete this._earlyDialogs[id];\n\n return true;\n }\n\n // Otherwise, create a _confirmed_ dialog.\n const dialog = new Dialog(this, message, type);\n\n if (dialog.error)\n {\n logger.debug(dialog.error);\n this._failed('remote', message, JsSIP_C.causes.INTERNAL_ERROR);\n\n return false;\n }\n else\n {\n this._dialog = dialog;\n\n return true;\n }\n }\n }\n\n /**\n * In dialog INVITE Reception\n */\n\n _receiveReinvite(request)\n {\n logger.debug('receiveReinvite()');\n\n const contentType = request.hasHeader('Content-Type') ?\n request.getHeader('Content-Type').toLowerCase() : undefined;\n const data = {\n request,\n callback : undefined,\n reject : reject.bind(this)\n };\n\n let rejected = false;\n\n function reject(options = {})\n {\n rejected = true;\n\n const status_code = options.status_code || 403;\n const reason_phrase = options.reason_phrase || '';\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n\n if (this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n if (status_code < 300 || status_code >= 700)\n {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n\n request.reply(status_code, reason_phrase, extraHeaders);\n }\n\n // Emit 'reinvite'.\n this.emit('reinvite', data);\n\n if (rejected)\n {\n return;\n }\n\n this._late_sdp = false;\n\n // Request without SDP.\n if (!request.body)\n {\n this._late_sdp = true;\n if (this._remoteHold)\n {\n this._remoteHold = false;\n this._onunhold('remote');\n }\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._createLocalDescription('offer', this._rtcOfferConstraints))\n .then((sdp) =>\n {\n sendAnswer.call(this, sdp);\n })\n .catch(() =>\n {\n request.reply(500);\n });\n\n return;\n }\n\n // Request with SDP.\n if (contentType !== 'application/sdp')\n {\n logger.debug('invalid Content-Type');\n request.reply(415);\n\n return;\n }\n\n this._processInDialogSdpOffer(request)\n // Send answer.\n .then((desc) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n sendAnswer.call(this, desc);\n })\n .catch((error) =>\n {\n logger.warn(error);\n });\n\n function sendAnswer(desc)\n {\n const extraHeaders = [ `Contact: ${this._contact}` ];\n\n this._handleSessionTimersInIncomingRequest(request, extraHeaders);\n\n if (this._late_sdp)\n {\n desc = this._mangleOffer(desc);\n }\n\n request.reply(200, null, extraHeaders, desc,\n () =>\n {\n this._status = C.STATUS_WAITING_FOR_ACK;\n this._setInvite2xxTimer(request, desc);\n this._setACKTimer();\n }\n );\n\n // If callback is given execute it.\n if (typeof data.callback === 'function')\n {\n data.callback();\n }\n }\n }\n\n /**\n * In dialog UPDATE Reception\n */\n _receiveUpdate(request)\n {\n logger.debug('receiveUpdate()');\n\n const contentType = request.hasHeader('Content-Type') ?\n request.getHeader('Content-Type').toLowerCase() : undefined;\n const data = {\n request,\n callback : undefined,\n reject : reject.bind(this)\n };\n\n let rejected = false;\n\n function reject(options = {})\n {\n rejected = true;\n\n const status_code = options.status_code || 403;\n const reason_phrase = options.reason_phrase || '';\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n\n if (this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n if (status_code < 300 || status_code >= 700)\n {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n\n request.reply(status_code, reason_phrase, extraHeaders);\n }\n\n // Emit 'update'.\n this.emit('update', data);\n\n if (rejected)\n {\n return;\n }\n\n if (!request.body)\n {\n sendAnswer.call(this, null);\n\n return;\n }\n\n if (contentType !== 'application/sdp')\n {\n logger.debug('invalid Content-Type');\n\n request.reply(415);\n\n return;\n }\n\n this._processInDialogSdpOffer(request)\n // Send answer.\n .then((desc) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n sendAnswer.call(this, desc);\n })\n .catch((error) =>\n {\n logger.warn(error);\n });\n\n function sendAnswer(desc)\n {\n const extraHeaders = [ `Contact: ${this._contact}` ];\n\n this._handleSessionTimersInIncomingRequest(request, extraHeaders);\n\n request.reply(200, null, extraHeaders, desc);\n\n // If callback is given execute it.\n if (typeof data.callback === 'function')\n {\n data.callback();\n }\n }\n }\n\n _processInDialogSdpOffer(request)\n {\n logger.debug('_processInDialogSdpOffer()');\n\n const sdp = request.parseSDP();\n\n let hold = false;\n\n for (const m of sdp.media)\n {\n if (holdMediaTypes.indexOf(m.type) === -1)\n {\n continue;\n }\n\n const direction = m.direction || sdp.direction || 'sendrecv';\n\n if (direction === 'sendonly' || direction === 'inactive')\n {\n hold = true;\n }\n // If at least one of the streams is active don't emit 'hold'.\n else\n {\n hold = false;\n break;\n }\n }\n\n const e = { originator: 'remote', type: 'offer', sdp: request.body };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n const offer = new RTCSessionDescription({ type: 'offer', sdp: e.sdp });\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n // Set remote description.\n .then(() =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n return this._connection.setRemoteDescription(offer)\n .catch((error) =>\n {\n request.reply(488);\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n\n this.emit('peerconnection:setremotedescriptionfailed', error);\n\n throw error;\n });\n })\n .then(() =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n if (this._remoteHold === true && hold === false)\n {\n this._remoteHold = false;\n this._onunhold('remote');\n }\n else if (this._remoteHold === false && hold === true)\n {\n this._remoteHold = true;\n this._onhold('remote');\n }\n })\n // Create local description.\n .then(() =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n return this._createLocalDescription('answer', this._rtcAnswerConstraints)\n .catch((error) =>\n {\n request.reply(500);\n logger.warn('emit \"peerconnection:createtelocaldescriptionfailed\" [error:%o]', error);\n\n throw error;\n });\n })\n .catch((error) =>\n {\n logger.warn('_processInDialogSdpOffer() failed [error: %o]', error);\n });\n\n return this._connectionPromiseQueue;\n }\n\n /**\n * In dialog Refer Reception\n */\n _receiveRefer(request)\n {\n logger.debug('receiveRefer()');\n\n if (!request.refer_to)\n {\n logger.debug('no Refer-To header field present in REFER');\n request.reply(400);\n\n return;\n }\n\n if (request.refer_to.uri.scheme !== JsSIP_C.SIP)\n {\n logger.debug('Refer-To header field points to a non-SIP URI scheme');\n request.reply(416);\n\n return;\n }\n\n // Reply before the transaction timer expires.\n request.reply(202);\n\n const notifier = new RTCSession_ReferNotifier(this, request.cseq);\n\n logger.debug('emit \"refer\"');\n\n // Emit 'refer'.\n this.emit('refer', {\n request,\n accept : (initCallback, options) =>\n {\n accept.call(this, initCallback, options);\n },\n reject : () =>\n {\n reject.call(this);\n }\n });\n\n function accept(initCallback, options = {})\n {\n initCallback = (typeof initCallback === 'function')? initCallback : null;\n\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n const session = new RTCSession(this._ua);\n\n session.on('progress', ({ response }) =>\n {\n notifier.notify(response.status_code, response.reason_phrase);\n });\n\n session.on('accepted', ({ response }) =>\n {\n notifier.notify(response.status_code, response.reason_phrase);\n });\n\n session.on('_failed', ({ message, cause }) =>\n {\n if (message)\n {\n notifier.notify(message.status_code, message.reason_phrase);\n }\n else\n {\n notifier.notify(487, cause);\n }\n });\n\n // Consider the Replaces header present in the Refer-To URI.\n if (request.refer_to.uri.hasHeader('replaces'))\n {\n const replaces = decodeURIComponent(request.refer_to.uri.getHeader('replaces'));\n\n options.extraHeaders = Utils.cloneArray(options.extraHeaders);\n options.extraHeaders.push(`Replaces: ${replaces}`);\n }\n\n session.connect(request.refer_to.uri.toAor(), options, initCallback);\n }\n\n function reject()\n {\n notifier.notify(603);\n }\n }\n\n /**\n * In dialog Notify Reception\n */\n _receiveNotify(request)\n {\n logger.debug('receiveNotify()');\n\n if (!request.event)\n {\n request.reply(400);\n }\n\n switch (request.event.event)\n {\n case 'refer': {\n let id;\n let referSubscriber;\n\n if (request.event.params && request.event.params.id)\n {\n id = request.event.params.id;\n referSubscriber = this._referSubscribers[id];\n }\n else if (Object.keys(this._referSubscribers).length === 1)\n {\n referSubscriber = this._referSubscribers[\n Object.keys(this._referSubscribers)[0]];\n }\n else\n {\n request.reply(400, 'Missing event id parameter');\n\n return;\n }\n\n if (!referSubscriber)\n {\n request.reply(481, 'Subscription does not exist');\n\n return;\n }\n\n referSubscriber.receiveNotify(request);\n request.reply(200);\n\n break;\n }\n\n default: {\n request.reply(489);\n }\n }\n }\n\n /**\n * INVITE with Replaces Reception\n */\n _receiveReplaces(request)\n {\n logger.debug('receiveReplaces()');\n\n function accept(initCallback)\n {\n if (this._status !== C.STATUS_WAITING_FOR_ACK &&\n this._status !== C.STATUS_CONFIRMED)\n {\n return false;\n }\n\n const session = new RTCSession(this._ua);\n\n // Terminate the current session when the new one is confirmed.\n session.on('confirmed', () =>\n {\n this.terminate();\n });\n\n session.init_incoming(request, initCallback);\n }\n\n function reject()\n {\n logger.debug('Replaced INVITE rejected by the user');\n request.reply(486);\n }\n\n // Emit 'replace'.\n this.emit('replaces', {\n request,\n accept : (initCallback) => { accept.call(this, initCallback); },\n reject : () => { reject.call(this); }\n });\n }\n\n /**\n * Initial Request Sender\n */\n _sendInitialRequest(mediaConstraints, rtcOfferConstraints, mediaStream)\n {\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout : () =>\n {\n this.onRequestTimeout();\n },\n onTransportError : () =>\n {\n this.onTransportError();\n },\n // Update the request on authentication.\n onAuthenticated : (request) =>\n {\n this._request = request;\n },\n onReceiveResponse : (response) =>\n {\n this._receiveInviteResponse(response);\n }\n });\n\n // This Promise is resolved within the next iteration, so the app has now\n // a chance to set events such as 'peerconnection' and 'connecting'.\n Promise.resolve()\n // Get a stream if required.\n .then(() =>\n {\n // A stream is given, let the app set events such as 'peerconnection' and 'connecting'.\n if (mediaStream)\n {\n return mediaStream;\n }\n // Request for user media access.\n else if (mediaConstraints.audio || mediaConstraints.video)\n {\n this._localMediaStreamLocallyGenerated = true;\n\n return navigator.mediaDevices.getUserMedia(mediaConstraints)\n .catch((error) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n this._failed('local', null, JsSIP_C.causes.USER_DENIED_MEDIA_ACCESS);\n\n logger.warn('emit \"getusermediafailed\" [error:%o]', error);\n\n this.emit('getusermediafailed', error);\n\n throw error;\n });\n }\n })\n .then((stream) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n this._localMediaStream = stream;\n\n if (stream)\n {\n stream.getTracks().forEach((track) =>\n {\n this._connection.addTrack(track, stream);\n });\n }\n\n // TODO: should this be triggered here?\n this._connecting(this._request);\n\n return this._createLocalDescription('offer', rtcOfferConstraints)\n .catch((error) =>\n {\n this._failed('local', null, JsSIP_C.causes.WEBRTC_ERROR);\n\n throw error;\n });\n })\n .then((desc) =>\n {\n if (this._is_canceled || this._status === C.STATUS_TERMINATED)\n {\n throw new Error('terminated');\n }\n\n this._request.body = desc;\n this._status = C.STATUS_INVITE_SENT;\n\n logger.debug('emit \"sending\" [request:%o]', this._request);\n\n // Emit 'sending' so the app can mangle the body before the request is sent.\n this.emit('sending', {\n request : this._request\n });\n\n request_sender.send();\n })\n .catch((error) =>\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n logger.warn(error);\n });\n }\n\n /**\n * Get DTMF RTCRtpSender.\n */\n _getDTMFRTPSender()\n {\n const sender = this._connection.getSenders().find((rtpSender) =>\n {\n return rtpSender.track && rtpSender.track.kind === 'audio';\n });\n\n if (!(sender && sender.dtmf))\n {\n logger.warn('sendDTMF() | no local audio track to send DTMF with');\n\n return;\n }\n\n return sender.dtmf;\n }\n\n /**\n * Reception of Response for Initial INVITE\n */\n _receiveInviteResponse(response)\n {\n logger.debug('receiveInviteResponse()');\n\n // Handle 2XX retransmissions and responses from forked requests.\n if (this._dialog && (response.status_code >=200 && response.status_code <=299))\n {\n\n /*\n * If it is a retransmission from the endpoint that established\n * the dialog, send an ACK\n */\n if (this._dialog.id.call_id === response.call_id &&\n this._dialog.id.local_tag === response.from_tag &&\n this._dialog.id.remote_tag === response.to_tag)\n {\n this.sendRequest(JsSIP_C.ACK);\n\n return;\n }\n\n // If not, send an ACK and terminate.\n else\n {\n const dialog = new Dialog(this, response, 'UAC');\n\n if (dialog.error !== undefined)\n {\n logger.debug(dialog.error);\n\n return;\n }\n\n this.sendRequest(JsSIP_C.ACK);\n this.sendRequest(JsSIP_C.BYE);\n\n return;\n }\n\n }\n\n // Proceed to cancellation if the user requested.\n if (this._is_canceled)\n {\n if (response.status_code >= 100 && response.status_code < 200)\n {\n this._request.cancel(this._cancel_reason);\n }\n else if (response.status_code >= 200 && response.status_code < 299)\n {\n this._acceptAndTerminate(response);\n }\n\n return;\n }\n\n if (this._status !== C.STATUS_INVITE_SENT && this._status !== C.STATUS_1XX_RECEIVED)\n {\n return;\n }\n\n switch (true)\n {\n case /^100$/.test(response.status_code):\n this._status = C.STATUS_1XX_RECEIVED;\n break;\n\n case /^1[0-9]{2}$/.test(response.status_code):\n {\n // Do nothing with 1xx responses without To tag.\n if (!response.to_tag)\n {\n logger.debug('1xx response received without to tag');\n break;\n }\n\n // Create Early Dialog if 1XX comes with contact.\n if (response.hasHeader('contact'))\n {\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(response, 'UAC', true))\n {\n break;\n }\n }\n\n this._status = C.STATUS_1XX_RECEIVED;\n\n if (!response.body)\n {\n this._progress('remote', response);\n break;\n }\n\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n const answer = new RTCSessionDescription({ type: 'answer', sdp: e.sdp });\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() => this._progress('remote', response))\n .catch((error) =>\n {\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n break;\n }\n\n case /^2[0-9]{2}$/.test(response.status_code):\n {\n this._status = C.STATUS_CONFIRMED;\n\n if (!response.body)\n {\n this._acceptAndTerminate(response, 400, JsSIP_C.causes.MISSING_SDP);\n this._failed('remote', response, JsSIP_C.causes.BAD_MEDIA_DESCRIPTION);\n break;\n }\n\n // An error on dialog creation will fire 'failed' event.\n if (!this._createDialog(response, 'UAC'))\n {\n break;\n }\n\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n const answer = new RTCSessionDescription({ type: 'answer', sdp: e.sdp });\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() =>\n {\n // Be ready for 200 with SDP after a 180/183 with SDP.\n // We created a SDP 'answer' for it, so check the current signaling state.\n if (this._connection.signalingState === 'stable')\n {\n return this._connection.createOffer(this._rtcOfferConstraints)\n .then((offer) => this._connection.setLocalDescription(offer))\n .catch((error) =>\n {\n this._acceptAndTerminate(response, 500, error.toString());\n this._failed('local', response, JsSIP_C.causes.WEBRTC_ERROR);\n });\n }\n })\n .then(() =>\n {\n this._connection.setRemoteDescription(answer)\n .then(() =>\n {\n // Handle Session Timers.\n this._handleSessionTimersInIncomingResponse(response);\n\n this._accepted('remote', response);\n this.sendRequest(JsSIP_C.ACK);\n this._confirmed('local', null);\n })\n .catch((error) =>\n {\n this._acceptAndTerminate(response, 488, 'Not Acceptable Here');\n this._failed('remote', response, JsSIP_C.causes.BAD_MEDIA_DESCRIPTION);\n\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n });\n break;\n }\n\n default:\n {\n const cause = Utils.sipErrorCause(response.status_code);\n\n this._failed('remote', response, cause);\n }\n }\n }\n\n /**\n * Send Re-INVITE\n */\n _sendReinvite(options = {})\n {\n logger.debug('sendReinvite()');\n\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const rtcOfferConstraints = options.rtcOfferConstraints ||\n this._rtcOfferConstraints || null;\n\n let succeeded = false;\n\n extraHeaders.push(`Contact: ${this._contact}`);\n extraHeaders.push('Content-Type: application/sdp');\n\n // Session Timers.\n if (this._sessionTimers.running)\n {\n extraHeaders.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher ? 'uac' : 'uas'}`);\n }\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._createLocalDescription('offer', rtcOfferConstraints))\n .then((sdp) =>\n {\n sdp = this._mangleOffer(sdp);\n\n const e = { originator: 'local', type: 'offer', sdp };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n this.sendRequest(JsSIP_C.INVITE, {\n extraHeaders,\n body : sdp,\n eventHandlers : {\n onSuccessResponse : (response) =>\n {\n onSucceeded.call(this, response);\n succeeded = true;\n },\n onErrorResponse : (response) =>\n {\n onFailed.call(this, response);\n },\n onTransportError : () =>\n {\n this.onTransportError(); // Do nothing because session ends.\n },\n onRequestTimeout : () =>\n {\n this.onRequestTimeout(); // Do nothing because session ends.\n },\n onDialogError : () =>\n {\n this.onDialogError(); // Do nothing because session ends.\n }\n }\n });\n })\n .catch(() =>\n {\n onFailed();\n });\n\n function onSucceeded(response)\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n this.sendRequest(JsSIP_C.ACK);\n\n // If it is a 2XX retransmission exit now.\n if (succeeded) { return; }\n\n // Handle Session Timers.\n this._handleSessionTimersInIncomingResponse(response);\n\n // Must have SDP answer.\n if (!response.body)\n {\n onFailed.call(this);\n\n return;\n }\n else if (!response.hasHeader('Content-Type') || response.getHeader('Content-Type').toLowerCase() !== 'application/sdp')\n {\n onFailed.call(this);\n\n return;\n }\n\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n const answer = new RTCSessionDescription({ type: 'answer', sdp: e.sdp });\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() =>\n {\n if (eventHandlers.succeeded)\n {\n eventHandlers.succeeded(response);\n }\n })\n .catch((error) =>\n {\n onFailed.call(this);\n\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n }\n\n function onFailed(response)\n {\n if (eventHandlers.failed)\n {\n eventHandlers.failed(response);\n }\n }\n }\n\n /**\n * Send UPDATE\n */\n _sendUpdate(options = {})\n {\n logger.debug('sendUpdate()');\n\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const rtcOfferConstraints = options.rtcOfferConstraints ||\n this._rtcOfferConstraints || null;\n const sdpOffer = options.sdpOffer || false;\n\n let succeeded = false;\n\n extraHeaders.push(`Contact: ${this._contact}`);\n\n // Session Timers.\n if (this._sessionTimers.running)\n {\n extraHeaders.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${this._sessionTimers.refresher ? 'uac' : 'uas'}`);\n }\n\n if (sdpOffer)\n {\n extraHeaders.push('Content-Type: application/sdp');\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._createLocalDescription('offer', rtcOfferConstraints))\n .then((sdp) =>\n {\n sdp = this._mangleOffer(sdp);\n\n const e = { originator: 'local', type: 'offer', sdp };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n this.sendRequest(JsSIP_C.UPDATE, {\n extraHeaders,\n body : sdp,\n eventHandlers : {\n onSuccessResponse : (response) =>\n {\n onSucceeded.call(this, response);\n succeeded = true;\n },\n onErrorResponse : (response) =>\n {\n onFailed.call(this, response);\n },\n onTransportError : () =>\n {\n this.onTransportError(); // Do nothing because session ends.\n },\n onRequestTimeout : () =>\n {\n this.onRequestTimeout(); // Do nothing because session ends.\n },\n onDialogError : () =>\n {\n this.onDialogError(); // Do nothing because session ends.\n }\n }\n });\n })\n .catch(() =>\n {\n onFailed.call(this);\n });\n }\n\n // No SDP.\n else\n {\n this.sendRequest(JsSIP_C.UPDATE, {\n extraHeaders,\n eventHandlers : {\n onSuccessResponse : (response) =>\n {\n onSucceeded.call(this, response);\n },\n onErrorResponse : (response) =>\n {\n onFailed.call(this, response);\n },\n onTransportError : () =>\n {\n this.onTransportError(); // Do nothing because session ends.\n },\n onRequestTimeout : () =>\n {\n this.onRequestTimeout(); // Do nothing because session ends.\n },\n onDialogError : () =>\n {\n this.onDialogError(); // Do nothing because session ends.\n }\n }\n });\n }\n\n function onSucceeded(response)\n {\n if (this._status === C.STATUS_TERMINATED)\n {\n return;\n }\n\n // If it is a 2XX retransmission exit now.\n if (succeeded) { return; }\n\n // Handle Session Timers.\n this._handleSessionTimersInIncomingResponse(response);\n\n // Must have SDP answer.\n if (sdpOffer)\n {\n if (!response.body)\n {\n onFailed.call(this);\n\n return;\n }\n else if (!response.hasHeader('Content-Type') || response.getHeader('Content-Type').toLowerCase() !== 'application/sdp')\n {\n onFailed.call(this);\n\n return;\n }\n\n const e = { originator: 'remote', type: 'answer', sdp: response.body };\n\n logger.debug('emit \"sdp\"');\n this.emit('sdp', e);\n\n const answer = new RTCSessionDescription({ type: 'answer', sdp: e.sdp });\n\n this._connectionPromiseQueue = this._connectionPromiseQueue\n .then(() => this._connection.setRemoteDescription(answer))\n .then(() =>\n {\n if (eventHandlers.succeeded)\n {\n eventHandlers.succeeded(response);\n }\n })\n .catch((error) =>\n {\n onFailed.call(this);\n\n logger.warn('emit \"peerconnection:setremotedescriptionfailed\" [error:%o]', error);\n\n this.emit('peerconnection:setremotedescriptionfailed', error);\n });\n }\n // No SDP answer.\n else if (eventHandlers.succeeded)\n {\n eventHandlers.succeeded(response);\n }\n }\n\n function onFailed(response)\n {\n if (eventHandlers.failed) { eventHandlers.failed(response); }\n }\n }\n\n _acceptAndTerminate(response, status_code, reason_phrase)\n {\n logger.debug('acceptAndTerminate()');\n\n const extraHeaders = [];\n\n if (status_code)\n {\n reason_phrase = reason_phrase || JsSIP_C.REASON_PHRASE[status_code] || '';\n extraHeaders.push(`Reason: SIP ;cause=${status_code}; text=\"${reason_phrase}\"`);\n }\n\n // An error on dialog creation will fire 'failed' event.\n if (this._dialog || this._createDialog(response, 'UAC'))\n {\n this.sendRequest(JsSIP_C.ACK);\n this.sendRequest(JsSIP_C.BYE, {\n extraHeaders\n });\n }\n\n // Update session status.\n this._status = C.STATUS_TERMINATED;\n }\n\n /**\n * Correctly set the SDP direction attributes if the call is on local hold\n */\n _mangleOffer(sdp)\n {\n\n if (!this._localHold && !this._remoteHold)\n {\n return sdp;\n }\n\n sdp = sdp_transform.parse(sdp);\n\n // Local hold.\n if (this._localHold && !this._remoteHold)\n {\n logger.debug('mangleOffer() | me on hold, mangling offer');\n for (const m of sdp.media)\n {\n if (holdMediaTypes.indexOf(m.type) === -1)\n {\n continue;\n }\n if (!m.direction)\n {\n m.direction = 'sendonly';\n }\n else if (m.direction === 'sendrecv')\n {\n m.direction = 'sendonly';\n }\n else if (m.direction === 'recvonly')\n {\n m.direction = 'inactive';\n }\n }\n }\n // Local and remote hold.\n else if (this._localHold && this._remoteHold)\n {\n logger.debug('mangleOffer() | both on hold, mangling offer');\n for (const m of sdp.media)\n {\n if (holdMediaTypes.indexOf(m.type) === -1)\n {\n continue;\n }\n m.direction = 'inactive';\n }\n }\n // Remote hold.\n else if (this._remoteHold)\n {\n logger.debug('mangleOffer() | remote on hold, mangling offer');\n for (const m of sdp.media)\n {\n if (holdMediaTypes.indexOf(m.type) === -1)\n {\n continue;\n }\n if (!m.direction)\n {\n m.direction = 'recvonly';\n }\n else if (m.direction === 'sendrecv')\n {\n m.direction = 'recvonly';\n }\n else if (m.direction === 'recvonly')\n {\n m.direction = 'inactive';\n }\n }\n }\n\n return sdp_transform.write(sdp);\n }\n\n _setLocalMediaStatus()\n {\n let enableAudio = true, enableVideo = true;\n\n if (this._localHold || this._remoteHold)\n {\n enableAudio = false;\n enableVideo = false;\n }\n\n if (this._audioMuted)\n {\n enableAudio = false;\n }\n\n if (this._videoMuted)\n {\n enableVideo = false;\n }\n\n this._toggleMuteAudio(!enableAudio);\n this._toggleMuteVideo(!enableVideo);\n }\n\n /**\n * Handle SessionTimers for an incoming INVITE or UPDATE.\n * @param {IncomingRequest} request\n * @param {Array} responseExtraHeaders Extra headers for the 200 response.\n */\n _handleSessionTimersInIncomingRequest(request, responseExtraHeaders)\n {\n if (!this._sessionTimers.enabled) { return; }\n\n let session_expires_refresher;\n\n if (request.session_expires && request.session_expires >= JsSIP_C.MIN_SESSION_EXPIRES)\n {\n this._sessionTimers.currentExpires = request.session_expires;\n session_expires_refresher = request.session_expires_refresher || 'uas';\n }\n else\n {\n this._sessionTimers.currentExpires = this._sessionTimers.defaultExpires;\n session_expires_refresher = 'uas';\n }\n\n responseExtraHeaders.push(`Session-Expires: ${this._sessionTimers.currentExpires};refresher=${session_expires_refresher}`);\n\n this._sessionTimers.refresher = (session_expires_refresher === 'uas');\n this._runSessionTimer();\n }\n\n /**\n * Handle SessionTimers for an incoming response to INVITE or UPDATE.\n * @param {IncomingResponse} response\n */\n _handleSessionTimersInIncomingResponse(response)\n {\n if (!this._sessionTimers.enabled) { return; }\n\n let session_expires_refresher;\n\n if (response.session_expires &&\n response.session_expires >= JsSIP_C.MIN_SESSION_EXPIRES)\n {\n this._sessionTimers.currentExpires = response.session_expires;\n session_expires_refresher = response.session_expires_refresher || 'uac';\n }\n else\n {\n this._sessionTimers.currentExpires = this._sessionTimers.defaultExpires;\n session_expires_refresher = 'uac';\n }\n\n this._sessionTimers.refresher = (session_expires_refresher === 'uac');\n this._runSessionTimer();\n }\n\n _runSessionTimer()\n {\n const expires = this._sessionTimers.currentExpires;\n\n this._sessionTimers.running = true;\n\n clearTimeout(this._sessionTimers.timer);\n\n // I'm the refresher.\n if (this._sessionTimers.refresher)\n {\n this._sessionTimers.timer = setTimeout(() =>\n {\n if (this._status === C.STATUS_TERMINATED) { return; }\n\n if (!this.isReadyToReOffer()) { return; }\n\n logger.debug('runSessionTimer() | sending session refresh request');\n\n if (this._sessionTimers.refreshMethod === JsSIP_C.UPDATE)\n {\n this._sendUpdate();\n }\n else\n {\n this._sendReinvite();\n }\n }, expires * 500); // Half the given interval (as the RFC states).\n }\n\n // I'm not the refresher.\n else\n {\n this._sessionTimers.timer = setTimeout(() =>\n {\n if (this._status === C.STATUS_TERMINATED) { return; }\n\n logger.warn('runSessionTimer() | timer expired, terminating the session');\n\n this.terminate({\n cause : JsSIP_C.causes.REQUEST_TIMEOUT,\n status_code : 408,\n reason_phrase : 'Session Timer Expired'\n });\n }, expires * 1100);\n }\n }\n\n _toggleMuteAudio(mute)\n {\n const senders = this._connection.getSenders().filter((sender) =>\n {\n return sender.track && sender.track.kind === 'audio';\n });\n\n for (const sender of senders)\n {\n sender.track.enabled = !mute;\n }\n }\n\n _toggleMuteVideo(mute)\n {\n const senders = this._connection.getSenders().filter((sender) =>\n {\n return sender.track && sender.track.kind === 'video';\n });\n\n for (const sender of senders)\n {\n sender.track.enabled = !mute;\n }\n }\n\n _newRTCSession(originator, request)\n {\n logger.debug('newRTCSession()');\n\n this._ua.newRTCSession(this, {\n originator,\n session : this,\n request\n });\n }\n\n _connecting(request)\n {\n logger.debug('session connecting');\n\n logger.debug('emit \"connecting\"');\n\n this.emit('connecting', {\n request\n });\n }\n\n _progress(originator, response)\n {\n logger.debug('session progress');\n\n logger.debug('emit \"progress\"');\n\n this.emit('progress', {\n originator,\n response : response || null\n });\n }\n\n _accepted(originator, message)\n {\n logger.debug('session accepted');\n\n this._start_time = new Date();\n\n logger.debug('emit \"accepted\"');\n\n this.emit('accepted', {\n originator,\n response : message || null\n });\n }\n\n _confirmed(originator, ack)\n {\n logger.debug('session confirmed');\n\n this._is_confirmed = true;\n\n logger.debug('emit \"confirmed\"');\n\n this.emit('confirmed', {\n originator,\n ack : ack || null\n });\n }\n\n _ended(originator, message, cause)\n {\n logger.debug('session ended');\n\n this._end_time = new Date();\n\n this._close();\n\n logger.debug('emit \"ended\"');\n\n this.emit('ended', {\n originator,\n message : message || null,\n cause\n });\n }\n\n _failed(originator, message, cause)\n {\n logger.debug('session failed');\n\n // Emit private '_failed' event first.\n logger.debug('emit \"_failed\"');\n\n this.emit('_failed', {\n originator,\n message : message || null,\n cause\n });\n\n this._close();\n\n logger.debug('emit \"failed\"');\n\n this.emit('failed', {\n originator,\n message : message || null,\n cause\n });\n }\n\n _onhold(originator)\n {\n logger.debug('session onhold');\n\n this._setLocalMediaStatus();\n\n logger.debug('emit \"hold\"');\n\n this.emit('hold', {\n originator\n });\n }\n\n _onunhold(originator)\n {\n logger.debug('session onunhold');\n\n this._setLocalMediaStatus();\n\n logger.debug('emit \"unhold\"');\n\n this.emit('unhold', {\n originator\n });\n }\n\n _onmute({ audio, video })\n {\n logger.debug('session onmute');\n\n this._setLocalMediaStatus();\n\n logger.debug('emit \"muted\"');\n\n this.emit('muted', {\n audio,\n video\n });\n }\n\n _onunmute({ audio, video })\n {\n logger.debug('session onunmute');\n\n this._setLocalMediaStatus();\n\n logger.debug('emit \"unmuted\"');\n\n this.emit('unmuted', {\n audio,\n video\n });\n }\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Exceptions = require('./Exceptions');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst Grammar = require('./Grammar');\nconst SIPMessage = require('./SIPMessage');\nconst RequestSender = require('./RequestSender');\nconst Dialog = require('./Dialog');\n\nconst logger = new Logger('Subscriber');\n\n/**\n * Termination codes.\n */\nconst C = {\n // Termination codes.\n SUBSCRIBE_RESPONSE_TIMEOUT : 0,\n SUBSCRIBE_TRANSPORT_ERROR : 1,\n SUBSCRIBE_NON_OK_RESPONSE : 2,\n SUBSCRIBE_WRONG_OK_RESPONSE : 3,\n SUBSCRIBE_AUTHENTICATION_FAILED : 4,\n UNSUBSCRIBE_TIMEOUT : 5,\n FINAL_NOTIFY_RECEIVED : 6,\n WRONG_NOTIFY_RECEIVED : 7,\n\n // Subscriber states.\n STATE_PENDING : 0,\n STATE_ACTIVE : 1,\n STATE_TERMINATED : 2,\n STATE_INIT : 3,\n STATE_WAITING_NOTIFY : 4,\n\n // RFC 6665 3.1.1, default expires value.\n DEFAULT_EXPIRES_SEC : 900\n};\n\n/**\n * RFC 6665 Subscriber implementation.\n */\nmodule.exports = class Subscriber extends EventEmitter\n{\n /**\n * Expose C object.\n */\n static get C()\n {\n return C;\n }\n\n /**\n * @param {UA} ua - reference to JsSIP.UA\n * @param {string} target\n * @param {string} eventName - Event header value. May end with optional ;id=xxx\n * @param {string} accept - Accept header value.\n *\n * @param {SubscriberOption} options - optional parameters.\n * @param {number} expires - Expires header value. Default is 900.\n * @param {string} contentType - Content-Type header value. Used for SUBSCRIBE with body\n * @param {string} allowEvents - Allow-Events header value.\n * @param {RequestParams} params - Will have priority over ua.configuration.\n * If set please define: to_uri, to_display_name, from_uri, from_display_name\n * @param {Array<string>} extraHeaders - Additional SIP headers.\n */\n constructor(ua, target, eventName, accept, { expires, contentType,\n allowEvents, params, extraHeaders })\n {\n logger.debug('new');\n\n super();\n\n // Check that arguments are defined.\n if (!target)\n {\n throw new TypeError('Not enough arguments: Missing target');\n }\n\n if (!eventName)\n {\n throw new TypeError('Not enough arguments: Missing eventName');\n }\n\n if (!accept)\n {\n throw new TypeError('Not enough arguments: Missing accept');\n }\n\n const event_header = Grammar.parse(eventName, 'Event');\n\n if (event_header === -1)\n {\n throw new TypeError('Missing Event header field');\n }\n\n this._ua = ua;\n this._target = target;\n\n if (!Utils.isDecimal(expires) || expires <= 0)\n {\n expires = C.DEFAULT_EXPIRES_SEC;\n }\n\n this._expires = expires;\n\n // Used to subscribe with body.\n this._content_type = contentType;\n\n // Set initial subscribe parameters.\n this._params = Utils.cloneObject(params);\n\n if (!this._params.from_uri)\n {\n this._params.from_uri = this._ua.configuration.uri;\n }\n\n this._params.from_tag = Utils.newTag();\n this._params.to_tag = null;\n this._params.call_id = Utils.createRandomToken(20);\n\n // Create subscribe cseq if not defined custom cseq.\n if (this._params.cseq === undefined)\n {\n this._params.cseq = Math.floor((Math.random() * 10000) + 1);\n }\n\n // Subscriber state.\n this._state = C.STATE_INIT;\n\n // Dialog.\n this._dialog = null;\n\n // To refresh subscription.\n this._expires_timer = null;\n this._expires_timestamp = null;\n\n // To prevent duplicate terminated call.\n this._terminated = false;\n\n this._event_name = event_header.event;\n this._event_id = event_header.params && event_header.params.id;\n\n let eventValue = this._event_name;\n\n if (this._event_id)\n {\n eventValue += `;id=${this._event_id}`;\n }\n\n this._headers = Utils.cloneArray(extraHeaders);\n this._headers = this._headers.concat([\n `Event: ${eventValue}`,\n `Expires: ${this._expires}`,\n `Accept: ${accept}`\n ]);\n\n if (!this._headers.find((header) => header.startsWith('Contact')))\n {\n const contact = `Contact: ${this._ua._contact.toString()}`;\n\n this._headers.push(contact);\n }\n\n if (allowEvents)\n {\n this._headers.push(`Allow-Events: ${allowEvents}`);\n }\n\n // To enqueue SUBSCRIBE requests created before the reception of the initial subscribe OK response.\n this._queue = [];\n\n // Custom session empty object for high level use.\n this._data = {};\n }\n\n // Expose Subscriber constants as a property of the Subscriber instance.\n get C()\n {\n return C;\n }\n\n /**\n * Get dialog state.\n */\n get state()\n {\n return this._state;\n }\n\n /**\n * Get dialog id.\n */\n get id()\n {\n return this._dialog ? this._dialog.id : null;\n }\n\n get data()\n {\n return this._data;\n }\n\n set data(_data)\n {\n this._data = _data;\n }\n\n onRequestTimeout()\n {\n this._terminateDialog(C.SUBSCRIBE_RESPONSE_TIMEOUT);\n }\n\n onTransportError()\n {\n this._terminateDialog(C.SUBSCRIBE_TRANSPORT_ERROR);\n }\n\n /**\n * Dialog callback.\n */\n receiveRequest(request)\n {\n if (request.method !== JsSIP_C.NOTIFY)\n {\n logger.warn('received non-NOTIFY request');\n request.reply(405);\n\n return;\n }\n\n // RFC 6665 8.2.1. Check if event header matches.\n const event_header = request.parseHeader('Event');\n\n if (!event_header)\n {\n logger.warn('missing Event header');\n request.reply(400);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n\n return;\n }\n\n const event_name = event_header.event;\n const event_id = event_header.params && event_header.params.id;\n\n if (event_name !== this._event_name || event_id !== this._event_id)\n {\n logger.warn('Event header does not match the one in SUBSCRIBE request');\n request.reply(489);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n\n return;\n }\n\n // Process Subscription-State header.\n const subs_state = request.parseHeader('subscription-state');\n\n if (!subs_state)\n {\n logger.warn('missing Subscription-State header');\n request.reply(400);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n\n return;\n }\n\n const new_state = this._parseSubscriptionState(subs_state.state);\n\n if (new_state === undefined)\n {\n logger.warn(`Invalid Subscription-State header value: ${subs_state.state}`);\n request.reply(400);\n this._terminateDialog(C.WRONG_NOTIFY_RECEIVED);\n\n return;\n }\n request.reply(200);\n\n const prev_state = this._state;\n\n if (prev_state !== C.STATE_TERMINATED && new_state !== C.STATE_TERMINATED)\n {\n this._state = new_state;\n\n if (subs_state.expires !== undefined)\n {\n const expires = subs_state.expires;\n const expires_timestamp = new Date().getTime() + (expires * 1000);\n const max_time_deviation = 2000;\n\n // Expiration time is shorter and the difference is not too small.\n if (this._expires_timestamp - expires_timestamp > max_time_deviation)\n {\n logger.debug('update sending re-SUBSCRIBE time');\n\n this._scheduleSubscribe(expires);\n }\n }\n }\n\n if (prev_state !== C.STATE_PENDING && new_state === C.STATE_PENDING)\n {\n logger.debug('emit \"pending\"');\n\n this.emit('pending');\n }\n else if (prev_state !== C.STATE_ACTIVE && new_state === C.STATE_ACTIVE)\n {\n logger.debug('emit \"active\"');\n\n this.emit('active');\n }\n\n const body = request.body;\n\n // Check if the notify is final.\n const is_final = new_state === C.STATE_TERMINATED;\n\n // Notify event fired only for notify with body.\n if (body)\n {\n const content_type = request.getHeader('content-type');\n\n logger.debug('emit \"notify\"');\n\n this.emit('notify', is_final, request, body, content_type);\n }\n\n if (is_final)\n {\n const reason = subs_state.reason;\n let retry_after = undefined;\n\n if (subs_state.params && subs_state.params['retry-after'] !== undefined)\n {\n retry_after = parseInt(subs_state.params['retry-after']);\n }\n\n this._terminateDialog(C.FINAL_NOTIFY_RECEIVED, reason, retry_after);\n }\n }\n\n /**\n * User API\n */\n\n /**\n * Send the initial (non-fetch) and subsequent subscribe.\n * @param {string} body - subscribe request body.\n */\n subscribe(body = null)\n {\n logger.debug('subscribe()');\n\n if (this._state === C.STATE_INIT)\n {\n this._sendInitialSubscribe(body, this._headers);\n }\n else\n {\n this._sendSubsequentSubscribe(body, this._headers);\n }\n }\n\n /**\n * terminate.\n * Send un-subscribe or fetch-subscribe (with Expires: 0).\n * @param {string} body - un-subscribe request body\n */\n terminate(body = null)\n {\n logger.debug('terminate()');\n\n if (this._state === C.STATE_INIT)\n {\n throw new Exceptions.InvalidStateError(this._state);\n }\n\n // Prevent duplication un-subscribe sending.\n if (this._terminated)\n {\n return;\n }\n this._terminated = true;\n\n // Set header Expires: 0.\n const headers = this._headers.map((header) =>\n {\n return header.startsWith('Expires') ? 'Expires: 0' : header;\n });\n\n this._sendSubsequentSubscribe(body, headers);\n }\n\n /**\n * Private API.\n */\n _terminateDialog(terminationCode, reason = undefined, retryAfter = undefined)\n {\n // To prevent duplicate emit terminated event.\n if (this._state === C.STATE_TERMINATED)\n {\n return;\n }\n\n this._state = C.STATE_TERMINATED;\n\n // Clear timers.\n clearTimeout(this._expires_timer);\n\n if (this._dialog)\n {\n this._dialog.terminate();\n this._dialog = null;\n }\n\n logger.debug(`emit \"terminated\" code=${terminationCode}`);\n\n this.emit('terminated', terminationCode, reason, retryAfter);\n }\n\n _sendInitialSubscribe(body, headers)\n {\n if (body)\n {\n if (!this._content_type)\n {\n throw new TypeError('content_type is undefined');\n }\n\n headers = Utils.cloneArray(headers);\n headers.push(`Content-Type: ${this._content_type}`);\n }\n\n this._state = C.STATE_WAITING_NOTIFY;\n\n const request = new SIPMessage.OutgoingRequest(JsSIP_C.SUBSCRIBE,\n this._ua.normalizeTarget(this._target), this._ua, this._params, headers, body);\n\n const request_sender = new RequestSender(this._ua, request, {\n onRequestTimeout : () =>\n {\n this.onRequestTimeout();\n },\n onTransportError : () =>\n {\n this.onTransportError();\n },\n onReceiveResponse : (response) =>\n {\n this._receiveSubscribeResponse(response);\n }\n });\n\n request_sender.send();\n }\n\n _sendSubsequentSubscribe(body, headers)\n {\n if (this._state === C.STATE_TERMINATED)\n {\n return;\n }\n\n if (!this._dialog)\n {\n logger.debug('enqueue subscribe');\n\n this._queue.push({ body, headers: Utils.cloneArray(headers) });\n\n return;\n }\n\n if (body)\n {\n if (!this._content_type)\n {\n throw new TypeError('content_type is undefined');\n }\n\n headers = Utils.cloneArray(headers);\n headers.push(`Content-Type: ${this._content_type}`);\n }\n\n this._dialog.sendRequest(JsSIP_C.SUBSCRIBE, {\n body,\n extraHeaders : headers,\n eventHandlers : {\n onRequestTimeout : () =>\n {\n this.onRequestTimeout();\n },\n onTransportError : () =>\n {\n this.onTransportError();\n },\n onSuccessResponse : (response) =>\n {\n this._receiveSubscribeResponse(response);\n },\n onErrorResponse : (response) =>\n {\n this._receiveSubscribeResponse(response);\n },\n onDialogError : (response) =>\n {\n this._receiveSubscribeResponse(response);\n }\n }\n });\n }\n\n _receiveSubscribeResponse(response)\n {\n if (this._state === C.STATE_TERMINATED)\n {\n return;\n }\n\n if (response.status_code >= 200 && response.status_code < 300)\n {\n // Create dialog.\n if (this._dialog === null)\n {\n const dialog = new Dialog(this, response, 'UAC');\n\n if (dialog.error)\n {\n // OK response without Contact.\n logger.warn(dialog.error);\n this._terminateDialog(C.SUBSCRIBE_WRONG_OK_RESPONSE);\n\n return;\n }\n\n this._dialog = dialog;\n\n logger.debug('emit \"accepted\"');\n\n this.emit('accepted');\n\n // Subsequent subscribes saved in the queue until dialog created.\n for (const subscribe of this._queue)\n {\n logger.debug('dequeue subscribe');\n\n this._sendSubsequentSubscribe(subscribe.body, subscribe.headers);\n }\n }\n\n // Check expires value.\n const expires_value = response.getHeader('expires');\n\n let expires = parseInt(expires_value);\n\n if (!Utils.isDecimal(expires) || expires <= 0)\n {\n logger.warn(`response without Expires header, setting a default value of ${C.DEFAULT_EXPIRES_SEC}`);\n\n // RFC 6665 3.1.1 subscribe OK response must contain Expires header.\n // Use workaround expires value.\n expires = C.DEFAULT_EXPIRES_SEC;\n }\n\n if (expires > 0)\n {\n this._scheduleSubscribe(expires);\n }\n }\n else if (response.status_code === 401 || response.status_code === 407)\n {\n this._terminateDialog(C.SUBSCRIBE_AUTHENTICATION_FAILED);\n }\n else if (response.status_code >= 300)\n {\n this._terminateDialog(C.SUBSCRIBE_NON_OK_RESPONSE);\n }\n }\n\n _scheduleSubscribe(expires)\n {\n /*\n If the expires time is less than 140 seconds we do not support Chrome intensive timer throttling mode.\n In this case, the re-subcribe is sent 5 seconds before the subscription expiration.\n\n When Chrome is in intensive timer throttling mode, in the worst case,\n\t the timer will be 60 seconds late.\n We give the server 10 seconds to make sure it will execute the command even if it is heavily loaded.\n As a result, we order the time no later than 70 seconds before the subscription expiration.\n Resulting time calculated as half time interval + (half interval - 70) * random.\n\n E.g. expires is 140, re-subscribe will be ordered to send in 70 seconds.\n\t expires is 600, re-subscribe will be ordered to send in 300 + (0 .. 230) seconds.\n\t */\n\n const timeout = expires >= 140 ? (expires * 1000 / 2)\n + Math.floor(((expires / 2) - 70) * 1000 * Math.random()) : (expires * 1000) - 5000;\n\n this._expires_timestamp = new Date().getTime() + (expires * 1000);\n\n logger.debug(`next SUBSCRIBE will be sent in ${Math.floor(timeout / 1000)} sec`);\n\n clearTimeout(this._expires_timer);\n this._expires_timer = setTimeout(() =>\n {\n this._expires_timer = null;\n this._sendSubsequentSubscribe(null, this._headers);\n }, timeout);\n }\n\n _parseSubscriptionState(strState)\n {\n switch (strState)\n {\n case 'pending': return C.STATE_PENDING;\n case 'active': return C.STATE_ACTIVE;\n case 'terminated': return C.STATE_TERMINATED;\n case 'init': return C.STATE_INIT;\n case 'notify_wait': return C.STATE_WAITING_NOTIFY;\n default: return undefined;\n }\n }\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Exceptions = require('./Exceptions');\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Utils = require('./Utils');\nconst Dialog = require('./Dialog');\n\nconst logger = new Logger('Notifier');\n\n/**\n * Termination codes.\n */\nconst C = {\n // Termination codes.\n NOTIFY_RESPONSE_TIMEOUT : 0,\n NOTIFY_TRANSPORT_ERROR : 1,\n NOTIFY_NON_OK_RESPONSE : 2,\n NOTIFY_AUTHENTICATION_FAILED : 3,\n FINAL_NOTIFY_SENT : 4,\n UNSUBSCRIBE_RECEIVED : 5,\n SUBSCRIPTION_EXPIRED : 6,\n\n // Notifer states.\n STATE_PENDING : 0,\n STATE_ACTIVE : 1,\n STATE_TERMINATED : 2,\n\n // RFC 6665 3.1.1, default expires value.\n DEFAULT_EXPIRES_SEC : 900\n};\n\n/**\n * RFC 6665 Notifier implementation.\n */\nmodule.exports = class Notifier extends EventEmitter\n{\n /**\n * Expose C object.\n */\n static get C()\n {\n return C;\n }\n\n static init_incoming(request, callback)\n {\n try\n {\n Notifier.checkSubscribe(request);\n }\n catch (error)\n {\n logger.warn('Notifier.init_incoming: invalid request. Error: ', error.message);\n\n request.reply(405);\n\n return;\n }\n\n callback();\n }\n\n static checkSubscribe(subscribe)\n {\n if (!subscribe)\n {\n throw new TypeError('Not enough arguments. Missing subscribe request');\n }\n if (subscribe.method !== JsSIP_C.SUBSCRIBE)\n {\n throw new TypeError('Invalid method for Subscribe request');\n }\n if (!subscribe.hasHeader('contact'))\n {\n throw new TypeError('Missing Contact header in subscribe request');\n }\n if (!subscribe.hasHeader('event'))\n {\n throw new TypeError('Missing Event header in subscribe request');\n }\n const expires = subscribe.getHeader('expires');\n\n if (expires)\n {\n const parsed_expires = parseInt(expires);\n\n if (!Utils.isDecimal(parsed_expires) || parsed_expires < 0)\n {\n throw new TypeError('Invalid Expires header field in subscribe request');\n }\n }\n }\n\n /**\n * @param {UA} ua - JsSIP User Agent instance.\n * @param {IncomingRequest} subscribe - Subscribe request.\n * @param {string} contentType - Content-Type header value.\n * @param {NotifierOptions} options - Optional parameters.\n * @param {Array<string>} extraHeaders - Additional SIP headers.\n * @param {string} allowEvents - Allow-Events header value.\n * @param {boolean} pending - Set initial dialog state as \"pending\".\n * @param {number} defaultExpires - Default expires value (seconds).\n */\n constructor(ua, subscribe, contentType, {\n extraHeaders, allowEvents, pending, defaultExpires\n })\n {\n logger.debug('new');\n\n super();\n\n if (!contentType)\n {\n throw new TypeError('Not enough arguments. Missing contentType');\n }\n\n Notifier.checkSubscribe(subscribe);\n\n const eventName = subscribe.getHeader('event');\n\n this._ua = ua;\n this._initial_subscribe = subscribe;\n this._expires_timestamp = null;\n this._expires_timer = null;\n this._defaultExpires = defaultExpires || C.DEFAULT_EXPIRES_SEC;\n\n // Notifier state: pending, active, terminated.\n this._state = pending ? C.STATE_PENDING : C.STATE_ACTIVE;\n\n this._content_type = contentType;\n this._headers = Utils.cloneArray(extraHeaders);\n this._headers.push(`Event: ${eventName}`);\n\n // Use contact from extraHeaders or create it.\n this._contact = this._headers.find((header) => header.startsWith('Contact'));\n if (!this._contact)\n {\n this._contact = `Contact: ${this._ua._contact.toString()}`;\n\n this._headers.push(this._contact);\n }\n\n if (allowEvents)\n {\n this._headers.push(`Allow-Events: ${allowEvents}`);\n }\n\n this._target = subscribe.from.uri.user;\n subscribe.to_tag = Utils.newTag();\n\n // Custom session empty object for high level use.\n this._data = {};\n }\n\n // Expose Notifier constants as a property of the Notifier instance.\n get C()\n {\n return C;\n }\n\n /**\n * Get dialog state.\n */\n get state()\n {\n return this._state;\n }\n\n /**\n * Get dialog id.\n */\n get id()\n {\n return this._dialog ? this._dialog.id : null;\n }\n\n get data()\n {\n return this._data;\n }\n\n set data(_data)\n {\n this._data = _data;\n }\n\n /**\n * Dialog callback.\n * Called also for initial subscribe.\n * Supported RFC 6665 4.4.3: initial fetch subscribe (with expires: 0).\n */\n receiveRequest(request)\n {\n if (request.method !== JsSIP_C.SUBSCRIBE)\n {\n request.reply(405);\n\n return;\n }\n\n this._setExpires(request);\n\n // Create dialog for normal and fetch-subscribe.\n if (!this._dialog)\n {\n this._dialog = new Dialog(this, request, 'UAS');\n }\n\n request.reply(200, null, [ `Expires: ${this._expires}`, `${this._contact}` ]);\n\n const body = request.body;\n const content_type = request.getHeader('content-type');\n const is_unsubscribe = this._expires === 0;\n\n if (!is_unsubscribe)\n {\n this._setExpiresTimer();\n }\n\n logger.debug('emit \"subscribe\"');\n\n this.emit('subscribe', is_unsubscribe, request, body, content_type);\n\n if (is_unsubscribe)\n {\n this._terminateDialog(C.UNSUBSCRIBE_RECEIVED);\n }\n }\n\n /**\n * User API\n */\n\n /**\n * Call this method after creating the Notifier instance and setting the event handlers.\n */\n start()\n {\n logger.debug('start()');\n\n if (this._state === C.STATE_TERMINATED)\n {\n throw new Exceptions.InvalidStateError(this._state);\n }\n\n this.receiveRequest(this._initial_subscribe);\n }\n\n /**\n * Switch pending dialog state to active.\n */\n setActiveState()\n {\n logger.debug('setActiveState()');\n\n if (this._state === C.STATE_TERMINATED)\n {\n throw new Exceptions.InvalidStateError(this._state);\n }\n\n if (this._state === C.STATE_PENDING)\n {\n this._state = C.STATE_ACTIVE;\n }\n }\n\n /**\n * Send the initial and subsequent notify request.\n * @param {string} body - notify request body.\n */\n notify(body=null)\n {\n logger.debug('notify()');\n\n if (this._state === C.STATE_TERMINATED)\n {\n throw new Exceptions.InvalidStateError(this._state);\n }\n\n const expires = Math.floor((this._expires_timestamp - new Date().getTime()) / 1000);\n\n // expires_timer is about to trigger. Clean up the timer and terminate.\n if (expires <= 0)\n {\n if (!this._expires_timer)\n {\n logger.error('expires timer is not set');\n }\n\n clearTimeout(this._expires_timer);\n\n this.terminate(body, 'timeout');\n }\n else\n {\n this._sendNotify([ `;expires=${expires}` ], body);\n }\n }\n\n /**\n * Terminate. (Send the final NOTIFY request).\n *\n * @param {string} body - Notify message body.\n * @param {string} reason - Set Subscription-State reason parameter.\n * @param {number} retryAfter - Set Subscription-State retry-after parameter.\n */\n terminate(body = null, reason = null, retryAfter = null)\n {\n logger.debug('terminate()');\n\n if (this._state === C.STATE_TERMINATED)\n {\n return;\n }\n\n const subsStateParameters = [];\n\n if (reason)\n {\n subsStateParameters.push(`;reason=${reason}`);\n }\n\n if (retryAfter !== null)\n {\n subsStateParameters.push(`;retry-after=${retryAfter}`);\n }\n\n this._sendNotify(subsStateParameters, body, null, 'terminated');\n\n this._terminateDialog(reason === 'timeout' ? C.SUBSCRIPTION_EXPIRED : C.FINAL_NOTIFY_SENT);\n }\n\n /**\n * Private API\n */\n\n _terminateDialog(termination_code)\n {\n if (this._state === C.STATE_TERMINATED)\n {\n return;\n }\n this._state = C.STATE_TERMINATED;\n\n clearTimeout(this._expires_timer);\n if (this._dialog)\n {\n this._dialog.terminate();\n this._dialog = null;\n }\n logger.debug(`emit \"terminated\" code=${termination_code}`);\n\n this.emit('terminated', termination_code);\n }\n\n _setExpires(request)\n {\n if (request.hasHeader('expires'))\n {\n this._expires = parseInt(request.getHeader('expires'));\n }\n else\n {\n this._expires = this._defaultExpires;\n logger.debug(`missing Expires header field, default value set: ${this._expires}`);\n }\n }\n\n /**\n * @param {Array<string>} subsStateParams subscription state parameters.\n * @param {String} body Notify body\n * @param {Array<string>} extraHeaders\n */\n _sendNotify(subsStateParameters, body=null, extraHeaders=null, state=null)\n {\n // Prevent send notify after final notify.\n if (this._state === C.STATE_TERMINATED)\n {\n logger.warn('final notify already sent');\n\n return;\n }\n\n // Build Subscription-State header with parameters.\n let subsState = `Subscription-State: ${state || this._parseState()}`;\n\n for (const param of subsStateParameters)\n {\n subsState += param;\n }\n\n let headers = Utils.cloneArray(this._headers);\n\n headers.push(subsState);\n\n if (extraHeaders)\n {\n headers = headers.concat(extraHeaders);\n }\n\n if (body)\n {\n headers.push(`Content-Type: ${this._content_type}`);\n }\n\n this._dialog.sendRequest(JsSIP_C.NOTIFY, {\n body,\n extraHeaders : headers,\n eventHandlers : {\n onRequestTimeout : () =>\n {\n this._terminateDialog(C.NOTIFY_RESPONSE_TIMEOUT);\n },\n onTransportError : () =>\n {\n this._terminateDialog(C.NOTIFY_TRANSPORT_ERROR);\n },\n onErrorResponse : (response) =>\n {\n if (response.status_code === 401 || response.status_code === 407)\n {\n this._terminateDialog(C.NOTIFY_AUTHENTICATION_FAILED);\n }\n else\n {\n this._terminateDialog(C.NOTIFY_NON_OK_RESPONSE);\n }\n },\n onDialogError : () =>\n {\n this._terminateDialog(C.NOTIFY_NON_OK_RESPONSE);\n }\n }\n });\n }\n\n _setExpiresTimer()\n {\n this._expires_timestamp = new Date().getTime() + (this._expires * 1000);\n\n clearTimeout(this._expires_timer);\n this._expires_timer = setTimeout(() =>\n {\n if (this._state === C.STATE_TERMINATED)\n {\n return;\n }\n\n logger.debug('emit \"expired\"');\n\n // Client can hook into the 'expired' event and call terminate to send a custom notify.\n this.emit('expired');\n\n // This will be no-op if the client already called `terminate()`.\n this.terminate(null, 'timeout');\n }, this._expires * 1000);\n }\n\n _parseState()\n {\n switch (this._state)\n {\n case C.STATE_PENDING: return 'pending';\n case C.STATE_ACTIVE: return 'active';\n case C.STATE_TERMINATED: return 'terminated';\n default: throw new TypeError('wrong state value');\n }\n }\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Utils = require('./Utils');\nconst RequestSender = require('./RequestSender');\nconst Exceptions = require('./Exceptions');\nconst URI = require('./URI');\n\nconst logger = new Logger('Message');\n\nmodule.exports = class Message extends EventEmitter\n{\n constructor(ua)\n {\n super();\n\n this._ua = ua;\n this._request = null;\n this._closed = false;\n\n this._direction = null;\n this._local_identity = null;\n this._remote_identity = null;\n\n // Whether an incoming message has been replied.\n this._is_replied = false;\n\n // Custom message empty object for high level use.\n this._data = {};\n }\n\n get direction()\n {\n return this._direction;\n }\n\n get local_identity()\n {\n return this._local_identity;\n }\n\n get remote_identity()\n {\n return this._remote_identity;\n }\n\n send(target, body, options = {})\n {\n const originalTarget = target;\n\n if (target === undefined || body === undefined)\n {\n throw new TypeError('Not enough arguments');\n }\n\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target)\n {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n\n // Get call options.\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const contentType = options.contentType || 'text/plain';\n\n const requestParams = {};\n\n if (options.fromUserName)\n {\n requestParams.from_uri = new URI('sip', options.fromUserName, this._ua.configuration.uri.host);\n\n extraHeaders.push(`P-Preferred-Identity: ${this._ua.configuration.uri.toString()}`);\n }\n\n if (options.fromDisplayName)\n {\n requestParams.from_display_name = options.fromDisplayName;\n }\n\n // Set event handlers.\n for (const event in eventHandlers)\n {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event))\n {\n this.on(event, eventHandlers[event]);\n }\n }\n\n extraHeaders.push(`Content-Type: ${contentType}`);\n\n this._request = new SIPMessage.OutgoingRequest(\n JsSIP_C.MESSAGE, target, this._ua, requestParams, extraHeaders);\n\n if (body)\n {\n this._request.body = body;\n }\n\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout : () =>\n {\n this._onRequestTimeout();\n },\n onTransportError : () =>\n {\n this._onTransportError();\n },\n onReceiveResponse : (response) =>\n {\n this._receiveResponse(response);\n }\n });\n\n this._newMessage('local', this._request);\n\n request_sender.send();\n }\n\n init_incoming(request)\n {\n this._request = request;\n\n this._newMessage('remote', request);\n\n // Reply with a 200 OK if the user didn't reply.\n if (!this._is_replied)\n {\n this._is_replied = true;\n request.reply(200);\n }\n\n this._close();\n }\n\n /**\n * Accept the incoming Message\n * Only valid for incoming Messages\n */\n accept(options = {})\n {\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n\n if (this._direction !== 'incoming')\n {\n throw new Exceptions.NotSupportedError('\"accept\" not supported for outgoing Message');\n }\n\n if (this._is_replied)\n {\n throw new Error('incoming Message already replied');\n }\n\n this._is_replied = true;\n this._request.reply(200, null, extraHeaders, body);\n }\n\n /**\n * Reject the incoming Message\n * Only valid for incoming Messages\n */\n reject(options = {})\n {\n const status_code = options.status_code || 480;\n const reason_phrase = options.reason_phrase;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n\n if (this._direction !== 'incoming')\n {\n throw new Exceptions.NotSupportedError('\"reject\" not supported for outgoing Message');\n }\n\n if (this._is_replied)\n {\n throw new Error('incoming Message already replied');\n }\n\n if (status_code < 300 || status_code >= 700)\n {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n\n this._is_replied = true;\n this._request.reply(status_code, reason_phrase, extraHeaders, body);\n }\n\n _receiveResponse(response)\n {\n if (this._closed)\n {\n return;\n }\n switch (true)\n {\n case /^1[0-9]{2}$/.test(response.status_code):\n // Ignore provisional responses.\n break;\n\n case /^2[0-9]{2}$/.test(response.status_code):\n this._succeeded('remote', response);\n break;\n\n default:\n {\n const cause = Utils.sipErrorCause(response.status_code);\n\n this._failed('remote', response, cause);\n break;\n }\n }\n }\n\n _onRequestTimeout()\n {\n if (this._closed)\n {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.REQUEST_TIMEOUT);\n }\n\n _onTransportError()\n {\n if (this._closed)\n {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.CONNECTION_ERROR);\n }\n\n _close()\n {\n this._closed = true;\n this._ua.destroyMessage(this);\n }\n\n /**\n * Internal Callbacks\n */\n\n _newMessage(originator, request)\n {\n if (originator === 'remote')\n {\n this._direction = 'incoming';\n this._local_identity = request.to;\n this._remote_identity = request.from;\n }\n else if (originator === 'local')\n {\n this._direction = 'outgoing';\n this._local_identity = request.from;\n this._remote_identity = request.to;\n }\n\n this._ua.newMessage(this, {\n originator,\n message : this,\n request\n });\n }\n\n _failed(originator, response, cause)\n {\n logger.debug('MESSAGE failed');\n\n this._close();\n\n logger.debug('emit \"failed\"');\n\n this.emit('failed', {\n originator,\n response : response || null,\n cause\n });\n }\n\n _succeeded(originator, response)\n {\n logger.debug('MESSAGE succeeded');\n\n this._close();\n\n logger.debug('emit \"succeeded\"');\n\n this.emit('succeeded', {\n originator,\n response\n });\n }\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Utils = require('./Utils');\nconst RequestSender = require('./RequestSender');\nconst Exceptions = require('./Exceptions');\n\nconst logger = new Logger('Options');\n\nmodule.exports = class Options extends EventEmitter\n{\n constructor(ua)\n {\n super();\n\n this._ua = ua;\n this._request = null;\n this._closed = false;\n\n this._direction = null;\n this._local_identity = null;\n this._remote_identity = null;\n\n // Whether an incoming message has been replied.\n this._is_replied = false;\n\n // Custom message empty object for high level use.\n this._data = {};\n }\n\n get direction()\n {\n return this._direction;\n }\n\n get local_identity()\n {\n return this._local_identity;\n }\n\n get remote_identity()\n {\n return this._remote_identity;\n }\n\n send(target, body, options = {})\n {\n const originalTarget = target;\n\n if (target === undefined)\n {\n throw new TypeError('A target is required for OPTIONS');\n }\n\n // Check target validity.\n target = this._ua.normalizeTarget(target);\n if (!target)\n {\n throw new TypeError(`Invalid target: ${originalTarget}`);\n }\n\n // Get call options.\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const eventHandlers = Utils.cloneObject(options.eventHandlers);\n const contentType = options.contentType || 'application/sdp';\n\n // Set event handlers.\n for (const event in eventHandlers)\n {\n if (Object.prototype.hasOwnProperty.call(eventHandlers, event))\n {\n this.on(event, eventHandlers[event]);\n }\n }\n\n extraHeaders.push(`Content-Type: ${contentType}`);\n\n this._request = new SIPMessage.OutgoingRequest(\n JsSIP_C.OPTIONS, target, this._ua, null, extraHeaders);\n\n if (body)\n {\n this._request.body = body;\n }\n\n const request_sender = new RequestSender(this._ua, this._request, {\n onRequestTimeout : () =>\n {\n this._onRequestTimeout();\n },\n onTransportError : () =>\n {\n this._onTransportError();\n },\n onReceiveResponse : (response) =>\n {\n this._receiveResponse(response);\n }\n });\n\n this._newOptions('local', this._request);\n\n request_sender.send();\n }\n\n init_incoming(request)\n {\n this._request = request;\n\n this._newOptions('remote', request);\n\n // Reply with a 200 OK if the user didn't reply.\n if (!this._is_replied)\n {\n this._is_replied = true;\n request.reply(200);\n }\n\n this._close();\n }\n\n /**\n * Accept the incoming Options\n * Only valid for incoming Options\n */\n accept(options = {})\n {\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n\n if (this._direction !== 'incoming')\n {\n throw new Exceptions.NotSupportedError('\"accept\" not supported for outgoing Options');\n }\n\n if (this._is_replied)\n {\n throw new Error('incoming Options already replied');\n }\n\n this._is_replied = true;\n this._request.reply(200, null, extraHeaders, body);\n }\n\n /**\n * Reject the incoming Options\n * Only valid for incoming Options\n */\n reject(options = {})\n {\n const status_code = options.status_code || 480;\n const reason_phrase = options.reason_phrase;\n const extraHeaders = Utils.cloneArray(options.extraHeaders);\n const body = options.body;\n\n if (this._direction !== 'incoming')\n {\n throw new Exceptions.NotSupportedError('\"reject\" not supported for outgoing Options');\n }\n\n if (this._is_replied)\n {\n throw new Error('incoming Options already replied');\n }\n\n if (status_code < 300 || status_code >= 700)\n {\n throw new TypeError(`Invalid status_code: ${status_code}`);\n }\n\n this._is_replied = true;\n this._request.reply(status_code, reason_phrase, extraHeaders, body);\n }\n\n _receiveResponse(response)\n {\n if (this._closed)\n {\n return;\n }\n switch (true)\n {\n case /^1[0-9]{2}$/.test(response.status_code):\n // Ignore provisional responses.\n break;\n\n case /^2[0-9]{2}$/.test(response.status_code):\n this._succeeded('remote', response);\n break;\n\n default:\n {\n const cause = Utils.sipErrorCause(response.status_code);\n\n this._failed('remote', response, cause);\n break;\n }\n }\n }\n\n _onRequestTimeout()\n {\n if (this._closed)\n {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.REQUEST_TIMEOUT);\n }\n\n _onTransportError()\n {\n if (this._closed)\n {\n return;\n }\n this._failed('system', null, JsSIP_C.causes.CONNECTION_ERROR);\n }\n\n _close()\n {\n this._closed = true;\n this._ua.destroyMessage(this);\n }\n\n /**\n * Internal Callbacks\n */\n\n _newOptions(originator, request)\n {\n if (originator === 'remote')\n {\n this._direction = 'incoming';\n this._local_identity = request.to;\n this._remote_identity = request.from;\n }\n else if (originator === 'local')\n {\n this._direction = 'outgoing';\n this._local_identity = request.from;\n this._remote_identity = request.to;\n }\n\n this._ua.newOptions(this, {\n originator,\n message : this,\n request\n });\n }\n\n _failed(originator, response, cause)\n {\n logger.debug('OPTIONS failed');\n\n this._close();\n\n logger.debug('emit \"failed\"');\n\n this.emit('failed', {\n originator,\n response : response || null,\n cause\n });\n }\n\n _succeeded(originator, response)\n {\n logger.debug('OPTIONS succeeded');\n\n this._close();\n\n logger.debug('emit \"succeeded\"');\n\n this.emit('succeeded', {\n originator,\n response\n });\n }\n};\n","const Logger = require('./Logger');\nconst Utils = require('./Utils');\nconst Grammar = require('./Grammar');\n\nconst logger = new Logger('Socket');\n\n/**\n * Interface documentation: https://jssip.net/documentation/$last_version/api/socket/\n *\n * interface Socket {\n * attribute String via_transport\n * attribute String url\n * attribute String sip_uri\n *\n * method connect();\n * method disconnect();\n * method send(data);\n *\n * attribute EventHandler onconnect\n * attribute EventHandler ondisconnect\n * attribute EventHandler ondata\n * }\n *\n */\n\nexports.isSocket = (socket) =>\n{\n // Ignore if an array is given.\n if (Array.isArray(socket))\n {\n return false;\n }\n\n if (typeof socket === 'undefined')\n {\n logger.warn('undefined JsSIP.Socket instance');\n\n return false;\n }\n\n // Check Properties.\n try\n {\n if (!Utils.isString(socket.url))\n {\n logger.warn('missing or invalid JsSIP.Socket url property');\n throw new Error('Missing or invalid JsSIP.Socket url property');\n }\n\n if (!Utils.isString(socket.via_transport))\n {\n logger.warn('missing or invalid JsSIP.Socket via_transport property');\n throw new Error('Missing or invalid JsSIP.Socket via_transport property');\n }\n\n if (Grammar.parse(socket.sip_uri, 'SIP_URI') === -1)\n {\n logger.warn('missing or invalid JsSIP.Socket sip_uri property');\n throw new Error('missing or invalid JsSIP.Socket sip_uri property');\n }\n }\n // eslint-disable-next-line no-unused-vars\n catch (error)\n {\n return false;\n }\n\n // Check Methods.\n try\n {\n [ 'connect', 'disconnect', 'send' ].forEach((method) =>\n {\n if (!Utils.isFunction(socket[method]))\n {\n logger.warn(`missing or invalid JsSIP.Socket method: ${method}`);\n throw new Error(`Missing or invalid JsSIP.Socket method: ${method}`);\n }\n });\n }\n // eslint-disable-next-line no-unused-vars\n catch (error)\n {\n return false;\n }\n\n return true;\n};\n","const Logger = require('./Logger');\nconst Socket = require('./Socket');\nconst JsSIP_C = require('./Constants');\n\nconst logger = new Logger('Transport');\n\n/**\n * Constants\n */\nconst C = {\n // Transport status.\n STATUS_CONNECTED : 0,\n STATUS_CONNECTING : 1,\n STATUS_DISCONNECTED : 2,\n\n // Socket status.\n SOCKET_STATUS_READY : 0,\n SOCKET_STATUS_ERROR : 1,\n\n // Recovery options.\n recovery_options : {\n // minimum interval in seconds between recover attempts.\n min_interval : JsSIP_C.CONNECTION_RECOVERY_MIN_INTERVAL,\n // maximum interval in seconds between recover attempts.\n max_interval : JsSIP_C.CONNECTION_RECOVERY_MAX_INTERVAL\n }\n};\n\n/*\n * Manages one or multiple JsSIP.Socket instances.\n * Is reponsible for transport recovery logic among all socket instances.\n *\n * @socket JsSIP::Socket instance\n */\nmodule.exports = class Transport\n{\n constructor(sockets, recovery_options = C.recovery_options)\n {\n logger.debug('new()');\n\n this.status = C.STATUS_DISCONNECTED;\n\n // Current socket.\n this.socket = null;\n\n // Socket collection.\n this.sockets = [];\n\n this.recovery_options = recovery_options;\n this.recover_attempts = 0;\n this.recovery_timer = null;\n\n this.close_requested = false;\n\n // It seems that TextDecoder is not available in some versions of React-Native.\n // See https://github.com/versatica/JsSIP/issues/695\n try\n {\n this.textDecoder = new TextDecoder('utf8');\n }\n catch (error)\n {\n logger.warn(`cannot use TextDecoder: ${error}`);\n }\n\n if (typeof sockets === 'undefined')\n {\n throw new TypeError('Invalid argument.' +\n ' undefined \\'sockets\\' argument');\n }\n\n if (!(sockets instanceof Array))\n {\n sockets = [ sockets ];\n }\n\n sockets.forEach(function(socket)\n {\n if (!Socket.isSocket(socket.socket))\n {\n throw new TypeError('Invalid argument.' +\n ' invalid \\'JsSIP.Socket\\' instance');\n }\n\n if (socket.weight && !Number(socket.weight))\n {\n throw new TypeError('Invalid argument.' +\n ' \\'weight\\' attribute is not a number');\n }\n\n this.sockets.push({\n socket : socket.socket,\n weight : socket.weight || 0,\n status : C.SOCKET_STATUS_READY\n });\n }, this);\n\n // Get the socket with higher weight.\n this._getSocket();\n }\n\n /**\n * Instance Methods\n */\n\n get via_transport()\n {\n return this.socket.via_transport;\n }\n\n get url()\n {\n return this.socket.url;\n }\n\n get sip_uri()\n {\n return this.socket.sip_uri;\n }\n\n connect()\n {\n logger.debug('connect()');\n\n if (this.isConnected())\n {\n logger.debug('Transport is already connected');\n\n return;\n }\n else if (this.isConnecting())\n {\n logger.debug('Transport is connecting');\n\n return;\n }\n\n this.close_requested = false;\n this.status = C.STATUS_CONNECTING;\n this.onconnecting({ socket: this.socket, attempts: this.recover_attempts });\n\n if (!this.close_requested)\n {\n // Bind socket event callbacks.\n this.socket.onconnect = this._onConnect.bind(this);\n this.socket.ondisconnect = this._onDisconnect.bind(this);\n this.socket.ondata = this._onData.bind(this);\n\n this.socket.connect();\n }\n\n return;\n }\n\n disconnect()\n {\n logger.debug('close()');\n\n this.close_requested = true;\n this.recover_attempts = 0;\n this.status = C.STATUS_DISCONNECTED;\n\n // Clear recovery_timer.\n if (this.recovery_timer !== null)\n {\n clearTimeout(this.recovery_timer);\n this.recovery_timer = null;\n }\n\n // Unbind socket event callbacks.\n this.socket.onconnect = () => {};\n this.socket.ondisconnect = () => {};\n this.socket.ondata = () => {};\n\n this.socket.disconnect();\n this.ondisconnect({\n socket : this.socket,\n error : false\n });\n }\n\n send(data)\n {\n logger.debug('send()');\n\n if (!this.isConnected())\n {\n logger.warn('unable to send message, transport is not connected');\n\n return false;\n }\n\n const message = data.toString();\n\n logger.debug(`sending message:\\n\\n${message}\\n`);\n\n return this.socket.send(message);\n }\n\n isConnected()\n {\n return this.status === C.STATUS_CONNECTED;\n }\n\n isConnecting()\n {\n return this.status === C.STATUS_CONNECTING;\n }\n\n /**\n * Private API.\n */\n\n _reconnect()\n {\n this.recover_attempts+=1;\n\n let k = Math.floor((Math.random() * Math.pow(2, this.recover_attempts)) +1);\n\n if (k < this.recovery_options.min_interval)\n {\n k = this.recovery_options.min_interval;\n }\n\n else if (k > this.recovery_options.max_interval)\n {\n k = this.recovery_options.max_interval;\n }\n\n logger.debug(`reconnection attempt: ${this.recover_attempts}. next connection attempt in ${k} seconds`);\n\n this.recovery_timer = setTimeout(() =>\n {\n if (!this.close_requested && !(this.isConnected() || this.isConnecting()))\n {\n // Get the next available socket with higher weight.\n this._getSocket();\n\n // Connect the socket.\n this.connect();\n }\n }, k * 1000);\n }\n\n /**\n * get the next available socket with higher weight\n */\n _getSocket()\n {\n\n let candidates = [];\n\n this.sockets.forEach((socket) =>\n {\n if (socket.status === C.SOCKET_STATUS_ERROR)\n {\n return; // continue the array iteration\n }\n else if (candidates.length === 0)\n {\n candidates.push(socket);\n }\n else if (socket.weight > candidates[0].weight)\n {\n candidates = [ socket ];\n }\n else if (socket.weight === candidates[0].weight)\n {\n candidates.push(socket);\n }\n });\n\n if (candidates.length === 0)\n {\n // All sockets have failed. reset sockets status.\n this.sockets.forEach((socket) =>\n {\n socket.status = C.SOCKET_STATUS_READY;\n });\n\n // Get next available socket.\n this._getSocket();\n\n return;\n }\n\n const idx = Math.floor((Math.random()* candidates.length));\n\n this.socket = candidates[idx].socket;\n }\n\n /**\n * Socket Event Handlers\n */\n\n _onConnect()\n {\n this.recover_attempts = 0;\n this.status = C.STATUS_CONNECTED;\n\n // Clear recovery_timer.\n if (this.recovery_timer !== null)\n {\n clearTimeout(this.recovery_timer);\n this.recovery_timer = null;\n }\n\n this.onconnect({ socket: this });\n }\n\n _onDisconnect(error, code, reason)\n {\n this.status = C.STATUS_DISCONNECTED;\n this.ondisconnect({\n socket : this.socket,\n error,\n code,\n reason\n });\n\n if (this.close_requested)\n {\n return;\n }\n\n // Update socket status.\n else\n {\n this.sockets.forEach(function(socket)\n {\n if (this.socket === socket.socket)\n {\n socket.status = C.SOCKET_STATUS_ERROR;\n }\n }, this);\n }\n\n this._reconnect(error);\n }\n\n _onData(data)\n {\n // CRLF Keep Alive request from server, reply.\n if (data === '\\r\\n\\r\\n')\n {\n logger.debug('received message with double-CRLF Keep Alive request');\n\n try\n {\n // Reply with single CRLF.\n this.socket.send('\\r\\n');\n }\n catch (error)\n {\n logger.warn(`error sending Keep Alive response: ${error}`);\n }\n\n return;\n }\n\n // CRLF Keep Alive response from server, ignore it.\n if (data === '\\r\\n')\n {\n logger.debug('received message with CRLF Keep Alive response');\n\n return;\n }\n\n // Binary message.\n else if (typeof data !== 'string')\n {\n try\n {\n if (this.textDecoder)\n data = this.textDecoder.decode(data);\n else\n data = String.fromCharCode.apply(null, new Uint8Array(data));\n }\n catch (error)\n {\n logger.debug(`received binary message failed to be converted into string: ${error}`);\n\n return;\n }\n\n logger.debug(`received binary message:\\n\\n${data}\\n`);\n }\n\n // Text message.\n else\n {\n logger.debug(`received text message:\\n\\n${data}\\n`);\n }\n\n this.ondata({ transport: this, message: data });\n }\n};\n","const Logger = require('./Logger');\nconst Grammar = require('./Grammar');\nconst SIPMessage = require('./SIPMessage');\n\nconst logger = new Logger('Parser');\n\n/**\n * Parse SIP Message\n */\nexports.parseMessage = (data, ua) =>\n{\n let message;\n let bodyStart;\n let headerEnd = data.indexOf('\\r\\n');\n\n if (headerEnd === -1)\n {\n logger.warn('parseMessage() | no CRLF found, not a SIP message');\n\n return;\n }\n\n // Parse first line. Check if it is a Request or a Reply.\n const firstLine = data.substring(0, headerEnd);\n let parsed = Grammar.parse(firstLine, 'Request_Response');\n\n if (parsed === -1)\n {\n logger.warn(`parseMessage() | error parsing first line of SIP message: \"${firstLine}\"`);\n\n return;\n }\n else if (!parsed.status_code)\n {\n message = new SIPMessage.IncomingRequest(ua);\n message.method = parsed.method;\n message.ruri = parsed.uri;\n }\n else\n {\n message = new SIPMessage.IncomingResponse();\n message.status_code = parsed.status_code;\n message.reason_phrase = parsed.reason_phrase;\n }\n\n message.data = data;\n let headerStart = headerEnd + 2;\n\n /* Loop over every line in data. Detect the end of each header and parse\n * it or simply add to the headers collection.\n */\n while (true)\n {\n headerEnd = getHeader(data, headerStart);\n\n // The SIP message has normally finished.\n if (headerEnd === -2)\n {\n bodyStart = headerStart + 2;\n break;\n }\n // Data.indexOf returned -1 due to a malformed message.\n else if (headerEnd === -1)\n {\n logger.warn('parseMessage() | malformed message');\n\n return;\n }\n\n parsed = parseHeader(message, data, headerStart, headerEnd);\n\n if (parsed !== true)\n {\n logger.warn('parseMessage() |', parsed.error);\n\n return;\n }\n\n headerStart = headerEnd + 2;\n }\n\n /* RFC3261 18.3.\n * If there are additional bytes in the transport packet\n * beyond the end of the body, they MUST be discarded.\n */\n if (message.hasHeader('content-length'))\n {\n const contentLength = message.getHeader('content-length');\n\n message.body = data.substr(bodyStart, contentLength);\n }\n else\n {\n message.body = data.substring(bodyStart);\n }\n\n return message;\n};\n\n/**\n * Extract and parse every header of a SIP message.\n */\nfunction getHeader(data, headerStart)\n{\n // 'start' position of the header.\n let start = headerStart;\n // 'end' position of the header.\n let end = 0;\n // 'partial end' position of the header.\n let partialEnd = 0;\n\n // End of message.\n if (data.substring(start, start + 2).match(/(^\\r\\n)/))\n {\n return -2;\n }\n\n while (end === 0)\n {\n // Partial End of Header.\n partialEnd = data.indexOf('\\r\\n', start);\n\n // 'indexOf' returns -1 if the value to be found never occurs.\n if (partialEnd === -1)\n {\n return partialEnd;\n }\n\n if (!data.substring(partialEnd + 2, partialEnd + 4).match(/(^\\r\\n)/) && data.charAt(partialEnd + 2).match(/(^\\s+)/))\n {\n // Not the end of the message. Continue from the next position.\n start = partialEnd + 2;\n }\n else\n {\n end = partialEnd;\n }\n }\n\n return end;\n}\n\nfunction parseHeader(message, data, headerStart, headerEnd)\n{\n let parsed;\n const hcolonIndex = data.indexOf(':', headerStart);\n const headerName = data.substring(headerStart, hcolonIndex).trim();\n const headerValue = data.substring(hcolonIndex + 1, headerEnd).trim();\n\n // If header-field is well-known, parse it.\n switch (headerName.toLowerCase())\n {\n case 'via':\n case 'v':\n message.addHeader('via', headerValue);\n if (message.getHeaders('via').length === 1)\n {\n parsed = message.parseHeader('Via');\n if (parsed)\n {\n message.via = parsed;\n message.via_branch = parsed.branch;\n }\n }\n else\n {\n parsed = 0;\n }\n break;\n case 'from':\n case 'f':\n message.setHeader('from', headerValue);\n parsed = message.parseHeader('from');\n if (parsed)\n {\n message.from = parsed;\n message.from_tag = parsed.getParam('tag');\n }\n break;\n case 'to':\n case 't':\n message.setHeader('to', headerValue);\n parsed = message.parseHeader('to');\n if (parsed)\n {\n message.to = parsed;\n message.to_tag = parsed.getParam('tag');\n }\n break;\n case 'record-route':\n parsed = Grammar.parse(headerValue, 'Record_Route');\n\n if (parsed === -1)\n {\n parsed = undefined;\n }\n else\n {\n for (const header of parsed)\n {\n message.addHeader('record-route', headerValue.substring(header.possition, header.offset));\n message.headers['Record-Route'][message.getHeaders('record-route').length - 1].parsed = header.parsed;\n }\n }\n break;\n case 'call-id':\n case 'i':\n message.setHeader('call-id', headerValue);\n parsed = message.parseHeader('call-id');\n if (parsed)\n {\n message.call_id = headerValue;\n }\n break;\n case 'contact':\n case 'm':\n parsed = Grammar.parse(headerValue, 'Contact');\n\n if (parsed === -1)\n {\n parsed = undefined;\n }\n else\n {\n for (const header of parsed)\n {\n message.addHeader('contact', headerValue.substring(header.possition, header.offset));\n message.headers.Contact[message.getHeaders('contact').length - 1].parsed = header.parsed;\n }\n }\n break;\n case 'content-length':\n case 'l':\n message.setHeader('content-length', headerValue);\n parsed = message.parseHeader('content-length');\n break;\n case 'content-type':\n case 'c':\n message.setHeader('content-type', headerValue);\n parsed = message.parseHeader('content-type');\n break;\n case 'cseq':\n message.setHeader('cseq', headerValue);\n parsed = message.parseHeader('cseq');\n if (parsed)\n {\n message.cseq = parsed.value;\n }\n if (message instanceof SIPMessage.IncomingResponse)\n {\n message.method = parsed.method;\n }\n break;\n case 'max-forwards':\n message.setHeader('max-forwards', headerValue);\n parsed = message.parseHeader('max-forwards');\n break;\n case 'www-authenticate':\n message.setHeader('www-authenticate', headerValue);\n parsed = message.parseHeader('www-authenticate');\n break;\n case 'proxy-authenticate':\n message.setHeader('proxy-authenticate', headerValue);\n parsed = message.parseHeader('proxy-authenticate');\n break;\n case 'session-expires':\n case 'x':\n message.setHeader('session-expires', headerValue);\n parsed = message.parseHeader('session-expires');\n if (parsed)\n {\n message.session_expires = parsed.expires;\n message.session_expires_refresher = parsed.refresher;\n }\n break;\n case 'refer-to':\n case 'r':\n message.setHeader('refer-to', headerValue);\n parsed = message.parseHeader('refer-to');\n if (parsed)\n {\n message.refer_to = parsed;\n }\n break;\n case 'replaces':\n message.setHeader('replaces', headerValue);\n parsed = message.parseHeader('replaces');\n if (parsed)\n {\n message.replaces = parsed;\n }\n break;\n case 'event':\n case 'o':\n message.setHeader('event', headerValue);\n parsed = message.parseHeader('event');\n if (parsed)\n {\n message.event = parsed;\n }\n break;\n default:\n // Do not parse this header.\n message.addHeader(headerName, headerValue);\n parsed = 0;\n }\n\n if (parsed === undefined)\n {\n return {\n error : `error parsing header \"${headerName}\"`\n };\n }\n else\n {\n return true;\n }\n}\n","const Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst SIPMessage = require('./SIPMessage');\nconst Utils = require('./Utils');\n\nconst logger = new Logger('sanityCheck');\n\n// Checks for requests and responses.\nconst all = [ minimumHeaders ];\n\n// Checks for requests.\nconst requests = [\n rfc3261_8_2_2_1,\n rfc3261_16_3_4,\n rfc3261_18_3_request,\n rfc3261_8_2_2_2\n];\n\n// Checks for responses.\nconst responses = [\n rfc3261_8_1_3_3,\n rfc3261_18_3_response\n];\n\n// local variables.\nlet message;\nlet ua;\nlet transport;\n\nmodule.exports = (m, u, t) =>\n{\n message = m;\n ua = u;\n transport = t;\n\n for (const check of all)\n {\n if (check() === false)\n {\n return false;\n }\n }\n\n if (message instanceof SIPMessage.IncomingRequest)\n {\n for (const check of requests)\n {\n if (check() === false)\n {\n return false;\n }\n }\n }\n\n else if (message instanceof SIPMessage.IncomingResponse)\n {\n for (const check of responses)\n {\n if (check() === false)\n {\n return false;\n }\n }\n }\n\n // Everything is OK.\n return true;\n};\n\n\n/*\n * Sanity Check for incoming Messages\n *\n * Requests:\n * - _rfc3261_8_2_2_1_ Receive a Request with a non supported URI scheme\n * - _rfc3261_16_3_4_ Receive a Request already sent by us\n * Does not look at via sent-by but at jssip_id, which is inserted as\n * a prefix in all initial requests generated by the ua\n * - _rfc3261_18_3_request_ Body Content-Length\n * - _rfc3261_8_2_2_2_ Merged Requests\n *\n * Responses:\n * - _rfc3261_8_1_3_3_ Multiple Via headers\n * - _rfc3261_18_3_response_ Body Content-Length\n *\n * All:\n * - Minimum headers in a SIP message\n */\n\n// Sanity Check functions for requests.\nfunction rfc3261_8_2_2_1()\n{\n if (message.s('to').uri.scheme !== 'sip')\n {\n reply(416);\n\n return false;\n }\n}\n\nfunction rfc3261_16_3_4()\n{\n if (!message.to_tag)\n {\n if (message.call_id.substr(0, 5) === ua.configuration.jssip_id)\n {\n reply(482);\n\n return false;\n }\n }\n}\n\nfunction rfc3261_18_3_request()\n{\n const len = Utils.str_utf8_length(message.body);\n const contentLength = message.getHeader('content-length');\n\n if (len < contentLength)\n {\n reply(400);\n\n return false;\n }\n}\n\nfunction rfc3261_8_2_2_2()\n{\n const fromTag = message.from_tag;\n const call_id = message.call_id;\n const cseq = message.cseq;\n let tr;\n\n // Accept any in-dialog request.\n if (message.to_tag)\n {\n return;\n }\n\n // INVITE request.\n if (message.method === JsSIP_C.INVITE)\n {\n // If the branch matches the key of any IST then assume it is a retransmission\n // and ignore the INVITE.\n // TODO: we should reply the last response.\n if (ua._transactions.ist[message.via_branch])\n {\n return false;\n }\n // Otherwise check whether it is a merged request.\n else\n {\n for (const transaction in ua._transactions.ist)\n {\n if (Object.prototype.hasOwnProperty.call(ua._transactions.ist, transaction))\n {\n tr = ua._transactions.ist[transaction];\n if (tr.request.from_tag === fromTag &&\n tr.request.call_id === call_id &&\n tr.request.cseq === cseq)\n {\n reply(482);\n\n return false;\n }\n }\n }\n }\n }\n\n // Non INVITE request.\n\n // If the branch matches the key of any NIST then assume it is a retransmission\n // and ignore the request.\n // TODO: we should reply the last response.\n else if (ua._transactions.nist[message.via_branch])\n {\n return false;\n }\n\n // Otherwise check whether it is a merged request.\n else\n {\n for (const transaction in ua._transactions.nist)\n {\n if (Object.prototype.hasOwnProperty.call(ua._transactions.nist, transaction))\n {\n tr = ua._transactions.nist[transaction];\n if (tr.request.from_tag === fromTag &&\n tr.request.call_id === call_id &&\n tr.request.cseq === cseq)\n {\n reply(482);\n\n return false;\n }\n }\n }\n }\n}\n\n// Sanity Check functions for responses.\nfunction rfc3261_8_1_3_3()\n{\n if (message.getHeaders('via').length > 1)\n {\n logger.debug('more than one Via header field present in the response, dropping the response');\n\n return false;\n }\n}\n\nfunction rfc3261_18_3_response()\n{\n const len = Utils.str_utf8_length(message.body), contentLength = message.getHeader('content-length');\n\n if (len < contentLength)\n {\n logger.debug('message body length is lower than the value in Content-Length header field, dropping the response');\n\n return false;\n }\n}\n\n// Sanity Check functions for requests and responses.\nfunction minimumHeaders()\n{\n const mandatoryHeaders = [ 'from', 'to', 'call_id', 'cseq', 'via' ];\n\n for (const header of mandatoryHeaders)\n {\n if (!message.hasHeader(header))\n {\n logger.debug(`missing mandatory header field : ${header}, dropping the response`);\n\n return false;\n }\n }\n}\n\n// Reply.\nfunction reply(status_code)\n{\n const vias = message.getHeaders('via');\n\n let to;\n let response = `SIP/2.0 ${status_code} ${JsSIP_C.REASON_PHRASE[status_code]}\\r\\n`;\n\n for (const via of vias)\n {\n response += `Via: ${via}\\r\\n`;\n }\n\n to = message.getHeader('To');\n\n if (!message.to_tag)\n {\n to += `;tag=${Utils.newTag()}`;\n }\n\n response += `To: ${to}\\r\\n`;\n response += `From: ${message.getHeader('From')}\\r\\n`;\n response += `Call-ID: ${message.call_id}\\r\\n`;\n response += `CSeq: ${message.cseq} ${message.method}\\r\\n`;\n response += '\\r\\n';\n\n transport.send(response);\n}\n","const Utils = require('./Utils');\nconst JsSIP_C = require('./Constants');\nconst Grammar = require('./Grammar');\nconst URI = require('./URI');\nconst Socket = require('./Socket');\nconst Exceptions = require('./Exceptions');\n\n// Default settings.\nexports.settings = {\n // SIP authentication.\n authorization_user : null,\n password : null,\n realm : null,\n ha1 : null,\n authorization_jwt : null,\n\n // SIP account.\n display_name : null,\n uri : null,\n contact_uri : null,\n\n // SIP instance id (GRUU).\n instance_id : null,\n\n // Preloaded SIP Route header field.\n use_preloaded_route : false,\n\n // Session parameters.\n session_timers : true,\n session_timers_refresh_method : JsSIP_C.UPDATE,\n session_timers_force_refresher : false,\n no_answer_timeout : 60,\n\n // Registration parameters.\n register : true,\n register_expires : 600,\n register_from_tag_trail : '',\n registrar_server : null,\n\n // Connection options.\n sockets : null,\n connection_recovery_max_interval : JsSIP_C.CONNECTION_RECOVERY_MAX_INTERVAL,\n connection_recovery_min_interval : JsSIP_C.CONNECTION_RECOVERY_MIN_INTERVAL,\n\n // Global extra headers, to be added to every request and response\n extra_headers : null,\n\n /*\n * Host address.\n * Value to be set in Via sent_by and host part of Contact FQDN.\n */\n via_host : `${Utils.createRandomToken(12)}.invalid`\n};\n\n// Configuration checks.\nconst checks = {\n mandatory : {\n\n sockets(sockets)\n {\n /* Allow defining sockets parameter as:\n * Socket: socket\n * Array of Socket: [socket1, socket2]\n * Array of Objects: [{socket: socket1, weight:1}, {socket: Socket2, weight:0}]\n * Array of Objects and Socket: [{socket: socket1}, socket2]\n */\n const _sockets = [];\n\n if (Socket.isSocket(sockets))\n {\n _sockets.push({ socket: sockets });\n }\n else if (Array.isArray(sockets) && sockets.length)\n {\n for (const socket of sockets)\n {\n if (Object.prototype.hasOwnProperty.call(socket, 'socket') &&\n Socket.isSocket(socket.socket))\n {\n _sockets.push(socket);\n }\n else if (Socket.isSocket(socket))\n {\n _sockets.push({ socket: socket });\n }\n }\n }\n else\n {\n return;\n }\n\n return _sockets;\n },\n\n uri(uri)\n {\n if (!/^sip:/i.test(uri))\n {\n uri = `${JsSIP_C.SIP}:${uri}`;\n }\n const parsed = URI.parse(uri);\n\n if (!parsed)\n {\n return;\n }\n else if (!parsed.user)\n {\n return;\n }\n else\n {\n return parsed;\n }\n }\n },\n\n optional : {\n\n authorization_user(authorization_user)\n {\n if (Grammar.parse(`\"${authorization_user}\"`, 'quoted_string') === -1)\n {\n return;\n }\n else\n {\n return authorization_user;\n }\n },\n authorization_jwt(authorization_jwt)\n {\n if (typeof authorization_jwt === 'string')\n {\n return authorization_jwt;\n }\n },\n user_agent(user_agent)\n {\n if (typeof user_agent === 'string')\n {\n return user_agent;\n }\n },\n\n connection_recovery_max_interval(connection_recovery_max_interval)\n {\n if (Utils.isDecimal(connection_recovery_max_interval))\n {\n const value = Number(connection_recovery_max_interval);\n\n if (value > 0)\n {\n return value;\n }\n }\n },\n\n connection_recovery_min_interval(connection_recovery_min_interval)\n {\n if (Utils.isDecimal(connection_recovery_min_interval))\n {\n const value = Number(connection_recovery_min_interval);\n\n if (value > 0)\n {\n return value;\n }\n }\n },\n\n contact_uri(contact_uri)\n {\n if (typeof contact_uri === 'string')\n {\n const uri = Grammar.parse(contact_uri, 'SIP_URI');\n\n if (uri !== -1)\n {\n return uri;\n }\n }\n },\n\n display_name(display_name)\n {\n return display_name;\n },\n\n instance_id(instance_id)\n {\n if ((/^uuid:/i.test(instance_id)))\n {\n instance_id = instance_id.substr(5);\n }\n\n if (Grammar.parse(instance_id, 'uuid') === -1)\n {\n return;\n }\n else\n {\n return instance_id;\n }\n },\n\n no_answer_timeout(no_answer_timeout)\n {\n if (Utils.isDecimal(no_answer_timeout))\n {\n const value = Number(no_answer_timeout);\n\n if (value > 0)\n {\n return value;\n }\n }\n },\n\n session_timers(session_timers)\n {\n if (typeof session_timers === 'boolean')\n {\n return session_timers;\n }\n },\n\n session_timers_refresh_method(method)\n {\n if (typeof method === 'string')\n {\n method = method.toUpperCase();\n\n if (method === JsSIP_C.INVITE || method === JsSIP_C.UPDATE)\n {\n return method;\n }\n }\n },\n\n session_timers_force_refresher(session_timers_force_refresher)\n {\n if (typeof session_timers_force_refresher === 'boolean')\n {\n return session_timers_force_refresher;\n }\n },\n\n password(password)\n {\n return String(password);\n },\n\n realm(realm)\n {\n return String(realm);\n },\n\n ha1(ha1)\n {\n return String(ha1);\n },\n\n register(register)\n {\n if (typeof register === 'boolean')\n {\n return register;\n }\n },\n\n register_expires(register_expires)\n {\n if (Utils.isDecimal(register_expires))\n {\n const value = Number(register_expires);\n\n if (value >= 0)\n {\n return value;\n }\n }\n },\n\n register_from_tag_trail(register_from_tag_trail)\n {\n if (typeof register_from_tag_trail === 'function')\n {\n return register_from_tag_trail;\n }\n\n return String(register_from_tag_trail);\n },\n\n registrar_server(registrar_server)\n {\n if (!/^sip:/i.test(registrar_server))\n {\n registrar_server = `${JsSIP_C.SIP}:${registrar_server}`;\n }\n\n const parsed = URI.parse(registrar_server);\n\n if (!parsed)\n {\n return;\n }\n else if (parsed.user)\n {\n return;\n }\n else\n {\n return parsed;\n }\n },\n\n use_preloaded_route(use_preloaded_route)\n {\n if (typeof use_preloaded_route === 'boolean')\n {\n return use_preloaded_route;\n }\n },\n\n extra_headers(extra_headers)\n {\n const _extraHeaders = [];\n\n if (Array.isArray(extra_headers) && extra_headers.length)\n {\n for (const header of extra_headers)\n {\n if (typeof header === 'string')\n {\n _extraHeaders.push(header);\n }\n }\n }\n else\n {\n return;\n }\n\n return _extraHeaders;\n }\n }\n};\n\nexports.load = (dst, src) =>\n{\n // Check Mandatory parameters.\n for (const parameter in checks.mandatory)\n {\n if (!src.hasOwnProperty(parameter))\n {\n throw new Exceptions.ConfigurationError(parameter);\n }\n else\n {\n const value = src[parameter];\n const checked_value = checks.mandatory[parameter](value);\n\n if (checked_value !== undefined)\n {\n dst[parameter] = checked_value;\n }\n else\n {\n throw new Exceptions.ConfigurationError(parameter, value);\n }\n }\n }\n\n // Check Optional parameters.\n for (const parameter in checks.optional)\n {\n if (src.hasOwnProperty(parameter))\n {\n const value = src[parameter];\n\n /* If the parameter value is null, empty string, undefined, empty array\n * or it's a number with NaN value, then apply its default value.\n */\n if (Utils.isEmpty(value))\n {\n continue;\n }\n\n const checked_value = checks.optional[parameter](value);\n\n if (checked_value !== undefined)\n {\n dst[parameter] = checked_value;\n }\n else\n {\n throw new Exceptions.ConfigurationError(parameter, value);\n }\n }\n }\n};\n","const EventEmitter = require('events').EventEmitter;\nconst Logger = require('./Logger');\nconst JsSIP_C = require('./Constants');\nconst Registrator = require('./Registrator');\nconst RTCSession = require('./RTCSession');\nconst Subscriber = require('./Subscriber');\nconst Notifier = require('./Notifier');\nconst Message = require('./Message');\nconst Options = require('./Options');\nconst Transactions = require('./Transactions');\nconst Transport = require('./Transport');\nconst Utils = require('./Utils');\nconst Exceptions = require('./Exceptions');\nconst URI = require('./URI');\nconst Parser = require('./Parser');\nconst SIPMessage = require('./SIPMessage');\nconst sanityCheck = require('./sanityCheck');\nconst config = require('./Config');\n\nconst logger = new Logger('UA');\n\nconst C = {\n // UA status codes.\n STATUS_INIT : 0,\n STATUS_READY : 1,\n STATUS_USER_CLOSED : 2,\n STATUS_NOT_READY : 3,\n\n // UA error codes.\n CONFIGURATION_ERROR : 1,\n NETWORK_ERROR : 2\n};\n\n/**\n * The User-Agent class.\n * @class JsSIP.UA\n * @param {Object} configuration Configuration parameters.\n * @throws {JsSIP.Exceptions.ConfigurationError} If a configuration parameter is invalid.\n * @throws {TypeError} If no configuration is given.\n */\nmodule.exports = class UA extends EventEmitter\n{\n // Expose C object.\n static get C()\n {\n return C;\n }\n\n constructor(configuration)\n {\n // Check configuration argument.\n if (!configuration)\n {\n throw new TypeError('Not enough arguments');\n }\n\n // Hide sensitive information.\n const sensitiveKeys = [ 'password', 'ha1', 'authorization_jwt' ];\n\n logger.debug('new() [configuration:%o]',\n Object.entries(configuration).filter(([ key ]) => !sensitiveKeys.includes(key))\n );\n\n super();\n\n this._cache = {\n credentials : {}\n };\n\n this._configuration = Object.assign({}, config.settings);\n this._dynConfiguration = {};\n this._dialogs = {};\n\n // User actions outside any session/dialog (MESSAGE/OPTIONS).\n this._applicants = {};\n\n this._sessions = {};\n this._transport = null;\n this._contact = null;\n this._status = C.STATUS_INIT;\n this._error = null;\n this._transactions = {\n nist : {},\n nict : {},\n ist : {},\n ict : {}\n };\n\n // Custom UA empty object for high level use.\n this._data = {};\n\n this._closeTimer = null;\n\n // Load configuration.\n try\n {\n this._loadConfig(configuration);\n }\n catch (error)\n {\n this._status = C.STATUS_NOT_READY;\n this._error = C.CONFIGURATION_ERROR;\n throw error;\n }\n\n // Initialize registrator.\n this._registrator = new Registrator(this);\n }\n\n get C()\n {\n return C;\n }\n\n get status()\n {\n return this._status;\n }\n\n get contact()\n {\n return this._contact;\n }\n\n get configuration()\n {\n return this._configuration;\n }\n\n get transport()\n {\n return this._transport;\n }\n\n // =================\n // High Level API\n // =================\n\n /**\n * Connect to the server if status = STATUS_INIT.\n * Resume UA after being closed.\n */\n start()\n {\n logger.debug('start()');\n\n if (this._status === C.STATUS_INIT)\n {\n this._transport.connect();\n }\n else if (this._status === C.STATUS_USER_CLOSED)\n {\n logger.debug('restarting UA');\n\n // Disconnect.\n if (this._closeTimer !== null)\n {\n clearTimeout(this._closeTimer);\n this._closeTimer = null;\n this._transport.disconnect();\n }\n\n // Reconnect.\n this._status = C.STATUS_INIT;\n this._transport.connect();\n }\n else if (this._status === C.STATUS_READY)\n {\n logger.debug('UA is in READY status, not restarted');\n }\n else\n {\n logger.debug('ERROR: connection is down, Auto-Recovery system is trying to reconnect');\n }\n\n // Set dynamic configuration.\n this._dynConfiguration.register = this._configuration.register;\n }\n\n /**\n * Register.\n */\n register()\n {\n logger.debug('register()');\n\n this._dynConfiguration.register = true;\n this._registrator.register();\n }\n\n /**\n * Unregister.\n */\n unregister(options)\n {\n logger.debug('unregister()');\n\n this._dynConfiguration.register = false;\n this._registrator.unregister(options);\n }\n\n /**\n * Get the Registrator instance.\n */\n registrator()\n {\n return this._registrator;\n }\n\n /**\n * Registration state.\n */\n isRegistered()\n {\n return this._registrator.registered;\n }\n\n /**\n * Connection state.\n */\n isConnected()\n {\n return this._transport.isConnected();\n }\n\n /**\n * Make an outgoing call.\n *\n * -param {String} target\n * -param {Object} [options]\n *\n * -throws {TypeError}\n *\n */\n call(target, options)\n {\n logger.debug('call()');\n\n const session = new RTCSession(this);\n\n session.connect(target, options);\n\n return session;\n }\n\n /**\n * Send a message.\n *\n * -param {String} target\n * -param {String} body\n * -param {Object} [options]\n *\n * -throws {TypeError}\n *\n */\n sendMessage(target, body, options)\n {\n logger.debug('sendMessage()');\n\n const message = new Message(this);\n\n message.send(target, body, options);\n\n return message;\n }\n\n /**\n * Create subscriber instance\n */\n subscribe(target, eventName, accept, options)\n {\n logger.debug('subscribe()');\n\n return new Subscriber(this, target, eventName, accept, options);\n }\n\n /**\n * Create notifier instance\n */\n notify(subscribe, contentType, options)\n {\n logger.debug('notify()');\n\n return new Notifier(this, subscribe, contentType, options);\n }\n\n /**\n * Send a SIP OPTIONS.\n *\n * -param {String} target\n * -param {String} [body]\n * -param {Object} [options]\n *\n * -throws {TypeError}\n *\n */\n sendOptions(target, body, options)\n {\n logger.debug('sendOptions()');\n\n const message = new Options(this);\n\n message.send(target, body, options);\n\n return message;\n }\n\n /**\n * Terminate ongoing sessions.\n */\n terminateSessions(options)\n {\n logger.debug('terminateSessions()');\n\n for (const idx in this._sessions)\n {\n if (!this._sessions[idx].isEnded())\n {\n this._sessions[idx].terminate(options);\n }\n }\n }\n\n /**\n * Gracefully close.\n *\n */\n stop()\n {\n logger.debug('stop()');\n\n // Remove dynamic settings.\n this._dynConfiguration = {};\n\n if (this._status === C.STATUS_USER_CLOSED)\n {\n logger.debug('UA already closed');\n\n return;\n }\n\n // Close registrator.\n this._registrator.close();\n\n // If there are session wait a bit so CANCEL/BYE can be sent and their responses received.\n const num_sessions = Object.keys(this._sessions).length;\n\n // Run _terminate_ on every Session.\n for (const session in this._sessions)\n {\n if (Object.prototype.hasOwnProperty.call(this._sessions, session))\n {\n logger.debug(`closing session ${session}`);\n try { this._sessions[session].terminate(); }\n // eslint-disable-next-line no-unused-vars\n catch (error) {}\n }\n }\n\n // Run _close_ on every applicant.\n for (const applicant in this._applicants)\n {\n if (Object.prototype.hasOwnProperty.call(this._applicants, applicant))\n try { this._applicants[applicant].close(); }\n // eslint-disable-next-line no-unused-vars\n catch (error) {}\n }\n\n this._status = C.STATUS_USER_CLOSED;\n\n const num_transactions =\n Object.keys(this._transactions.nict).length +\n Object.keys(this._transactions.nist).length +\n Object.keys(this._transactions.ict).length +\n Object.keys(this._transactions.ist).length;\n\n if (num_transactions === 0 && num_sessions === 0)\n {\n this._transport.disconnect();\n }\n else\n {\n this._closeTimer = setTimeout(() =>\n {\n this._closeTimer = null;\n this._transport.disconnect();\n }, 2000);\n }\n }\n\n /**\n * Normalice a string into a valid SIP request URI\n * -param {String} target\n * -returns {JsSIP.URI|undefined}\n */\n normalizeTarget(target)\n {\n return Utils.normalizeTarget(target, this._configuration.hostport_params);\n }\n\n /**\n * Allow retrieving configuration and autogenerated fields in runtime.\n */\n get(parameter)\n {\n switch (parameter)\n {\n case 'authorization_user':\n return this._configuration.authorization_user;\n\n case 'realm':\n return this._configuration.realm;\n\n case 'ha1':\n return this._configuration.ha1;\n\n case 'authorization_jwt':\n return this._configuration.authorization_jwt;\n\n default:\n logger.warn('get() | cannot get \"%s\" parameter in runtime', parameter);\n\n return undefined;\n }\n }\n\n /**\n * Allow configuration changes in runtime.\n * Returns true if the parameter could be set.\n */\n set(parameter, value)\n {\n switch (parameter)\n {\n case 'authorization_user': {\n this._configuration.authorization_user = String(value);\n break;\n }\n\n case 'password': {\n this._configuration.password = String(value);\n break;\n }\n\n case 'realm': {\n this._configuration.realm = String(value);\n break;\n }\n\n case 'ha1': {\n this._configuration.ha1 = String(value);\n // Delete the plain SIP password.\n this._configuration.password = null;\n break;\n }\n\n case 'authorization_jwt': {\n this._configuration.authorization_jwt = String(value);\n break;\n }\n\n case 'display_name': {\n this._configuration.display_name = value;\n break;\n }\n\n case 'extra_headers': {\n this._configuration.extra_headers = value;\n break;\n }\n\n default:\n logger.warn('set() | cannot set \"%s\" parameter in runtime', parameter);\n\n return false;\n }\n\n return true;\n }\n\n // ==========================\n // Event Handlers.\n // ==========================\n\n /**\n * new Transaction\n */\n newTransaction(transaction)\n {\n this._transactions[transaction.type][transaction.id] = transaction;\n this.emit('newTransaction', {\n transaction\n });\n }\n\n /**\n * Transaction destroyed.\n */\n destroyTransaction(transaction)\n {\n delete this._transactions[transaction.type][transaction.id];\n this.emit('transactionDestroyed', {\n transaction\n });\n }\n\n /**\n * new Dialog\n */\n newDialog(dialog)\n {\n this._dialogs[dialog.id] = dialog;\n }\n\n /**\n * Dialog destroyed.\n */\n destroyDialog(dialog)\n {\n delete this._dialogs[dialog.id];\n }\n\n /**\n * new Message\n */\n newMessage(message, data)\n {\n this._applicants[message] = message;\n this.emit('newMessage', data);\n }\n\n /**\n * new Options\n */\n newOptions(message, data)\n {\n this._applicants[message] = message;\n this.emit('newOptions', data);\n }\n\n /**\n * Message destroyed.\n */\n destroyMessage(message)\n {\n delete this._applicants[message];\n }\n\n /**\n * new RTCSession\n */\n newRTCSession(session, data)\n {\n this._sessions[session.id] = session;\n this.emit('newRTCSession', data);\n }\n\n /**\n * RTCSession destroyed.\n */\n destroyRTCSession(session)\n {\n delete this._sessions[session.id];\n }\n\n /**\n * Registered\n */\n registered(data)\n {\n this.emit('registered', data);\n }\n\n /**\n * Unregistered\n */\n unregistered(data)\n {\n this.emit('unregistered', data);\n }\n\n /**\n * Registration Failed\n */\n registrationFailed(data)\n {\n this.emit('registrationFailed', data);\n }\n\n // =========================\n // ReceiveRequest.\n // =========================\n\n /**\n * Request reception\n */\n receiveRequest(request)\n {\n const method = request.method;\n\n // Check that request URI points to us.\n if (request.ruri.user !== this._configuration.uri.user &&\n request.ruri.user !== this._contact.uri.user)\n {\n logger.debug('Request-URI does not point to us');\n if (request.method !== JsSIP_C.ACK)\n {\n request.reply_sl(404);\n }\n\n return;\n }\n\n // Check request URI scheme.\n if (request.ruri.scheme === JsSIP_C.SIPS)\n {\n request.reply_sl(416);\n\n return;\n }\n\n // Check transaction.\n if (Transactions.checkTransaction(this, request))\n {\n return;\n }\n\n // Create the server transaction.\n if (method === JsSIP_C.INVITE)\n {\n /* eslint-disable no-new */\n new Transactions.InviteServerTransaction(this, this._transport, request);\n /* eslint-enable no-new */\n }\n else if (method !== JsSIP_C.ACK && method !== JsSIP_C.CANCEL)\n {\n /* eslint-disable no-new */\n new Transactions.NonInviteServerTransaction(this, this._transport, request);\n /* eslint-enable no-new */\n }\n\n /* RFC3261 12.2.2\n * Requests that do not change in any way the state of a dialog may be\n * received within a dialog (for example, an OPTIONS request).\n * They are processed as if they had been received outside the dialog.\n */\n if (method === JsSIP_C.OPTIONS)\n {\n if (this.listeners('newOptions').length === 0)\n {\n request.reply(200);\n\n return;\n }\n\n const message = new Options(this);\n\n message.init_incoming(request);\n }\n else if (method === JsSIP_C.MESSAGE)\n {\n if (this.listeners('newMessage').length === 0)\n {\n request.reply(405);\n\n return;\n }\n const message = new Message(this);\n\n message.init_incoming(request);\n }\n else if (method === JsSIP_C.SUBSCRIBE)\n {\n if (this.listeners('newSubscribe').length === 0)\n {\n request.reply(405);\n\n return;\n }\n }\n else if (method === JsSIP_C.INVITE)\n {\n // Initial INVITE.\n if (!request.to_tag && this.listeners('newRTCSession').length === 0)\n {\n request.reply(405);\n\n return;\n }\n }\n\n let dialog;\n let session;\n\n // Initial Request.\n if (!request.to_tag)\n {\n switch (method)\n {\n case JsSIP_C.INVITE:\n if (window.RTCPeerConnection)\n { // TODO\n if (request.hasHeader('replaces'))\n {\n const replaces = request.replaces;\n\n dialog = this._findDialog(\n replaces.call_id, replaces.from_tag, replaces.to_tag);\n if (dialog)\n {\n session = dialog.owner;\n if (!session.isEnded())\n {\n session.receiveRequest(request);\n }\n else\n {\n request.reply(603);\n }\n }\n else\n {\n request.reply(481);\n }\n }\n else\n {\n session = new RTCSession(this);\n session.init_incoming(request);\n }\n }\n else\n {\n logger.warn('INVITE received but WebRTC is not supported');\n request.reply(488);\n }\n break;\n case JsSIP_C.BYE:\n // Out of dialog BYE received.\n request.reply(481);\n break;\n case JsSIP_C.CANCEL:\n session = this._findSession(request);\n if (session)\n {\n session.receiveRequest(request);\n }\n else\n {\n logger.debug('received CANCEL request for a non existent session');\n }\n break;\n case JsSIP_C.ACK:\n /* Absorb it.\n * ACK request without a corresponding Invite Transaction\n * and without To tag.\n */\n break;\n case JsSIP_C.NOTIFY:\n // Receive new sip event.\n this.emit('sipEvent', {\n event : request.event,\n request\n });\n request.reply(200);\n break;\n case JsSIP_C.SUBSCRIBE:\n Notifier.init_incoming(request, () =>\n {\n this.emit('newSubscribe', {\n event : request.event,\n request\n });\n });\n break;\n default:\n request.reply(405);\n break;\n }\n }\n // In-dialog request.\n else\n {\n dialog = this._findDialog(request.call_id, request.from_tag, request.to_tag);\n\n if (dialog)\n {\n dialog.receiveRequest(request);\n }\n else if (method === JsSIP_C.NOTIFY)\n {\n session = this._findSession(request);\n if (session)\n {\n session.receiveRequest(request);\n }\n else\n {\n logger.debug('received NOTIFY request for a non existent subscription');\n request.reply(481, 'Subscription does not exist');\n }\n }\n\n /* RFC3261 12.2.2\n * Request with to tag, but no matching dialog found.\n * Exception: ACK for an Invite request for which a dialog has not\n * been created.\n */\n else if (method !== JsSIP_C.ACK)\n {\n request.reply(481);\n }\n }\n }\n\n // =================\n // Utils.\n // =================\n\n /**\n * Get the session to which the request belongs to, if any.\n */\n _findSession({ call_id, from_tag, to_tag })\n {\n const sessionIDa = call_id + from_tag;\n const sessionA = this._sessions[sessionIDa];\n const sessionIDb = call_id + to_tag;\n const sessionB = this._sessions[sessionIDb];\n\n if (sessionA)\n {\n return sessionA;\n }\n else if (sessionB)\n {\n return sessionB;\n }\n else\n {\n return null;\n }\n }\n\n /**\n * Get the dialog to which the request belongs to, if any.\n */\n _findDialog(call_id, from_tag, to_tag)\n {\n let id = call_id + from_tag + to_tag;\n let dialog = this._dialogs[id];\n\n if (dialog)\n {\n return dialog;\n }\n else\n {\n id = call_id + to_tag + from_tag;\n dialog = this._dialogs[id];\n if (dialog)\n {\n return dialog;\n }\n else\n {\n return null;\n }\n }\n }\n\n _loadConfig(configuration)\n {\n // Check and load the given configuration.\n // This can throw.\n config.load(this._configuration, configuration);\n\n // Post Configuration Process.\n\n // Allow passing 0 number as display_name.\n if (this._configuration.display_name === 0)\n {\n this._configuration.display_name = '0';\n }\n\n // Instance-id for GRUU.\n if (!this._configuration.instance_id)\n {\n this._configuration.instance_id = Utils.newUUID();\n }\n\n // Jssip_id instance parameter. Static random tag of length 5.\n this._configuration.jssip_id = Utils.createRandomToken(5);\n\n // String containing this._configuration.uri without scheme and user.\n const hostport_params = this._configuration.uri.clone();\n\n hostport_params.user = null;\n this._configuration.hostport_params = hostport_params.toString().replace(/^sip:/i, '');\n\n // Transport.\n try\n {\n this._transport = new Transport(this._configuration.sockets, {\n // Recovery options.\n max_interval : this._configuration.connection_recovery_max_interval,\n min_interval : this._configuration.connection_recovery_min_interval\n });\n\n // Transport event callbacks.\n this._transport.onconnecting = onTransportConnecting.bind(this);\n this._transport.onconnect = onTransportConnect.bind(this);\n this._transport.ondisconnect = onTransportDisconnect.bind(this);\n this._transport.ondata = onTransportData.bind(this);\n }\n catch (error)\n {\n logger.warn(error);\n throw new Exceptions.ConfigurationError('sockets', this._configuration.sockets);\n }\n\n // Remove sockets instance from configuration object.\n delete this._configuration.sockets;\n\n // Check whether authorization_user is explicitly defined.\n // Take 'this._configuration.uri.user' value if not.\n if (!this._configuration.authorization_user)\n {\n this._configuration.authorization_user = this._configuration.uri.user;\n }\n\n // If no 'registrar_server' is set use the 'uri' value without user portion and\n // without URI params/headers.\n if (!this._configuration.registrar_server)\n {\n const registrar_server = this._configuration.uri.clone();\n\n registrar_server.user = null;\n registrar_server.clearParams();\n registrar_server.clearHeaders();\n this._configuration.registrar_server = registrar_server;\n }\n\n // User no_answer_timeout.\n this._configuration.no_answer_timeout *= 1000;\n\n // Via Host.\n if (this._configuration.contact_uri)\n {\n this._configuration.via_host = this._configuration.contact_uri.host;\n }\n\n // Contact URI.\n else\n {\n this._configuration.contact_uri = new URI('sip', Utils.createRandomToken(8), this._configuration.via_host, null, { transport: 'ws' });\n }\n\n this._contact = {\n pub_gruu : null,\n temp_gruu : null,\n uri : this._configuration.contact_uri,\n toString(options = {})\n {\n const anonymous = options.anonymous || null;\n const outbound = options.outbound || null;\n let contact = '<';\n\n if (anonymous)\n {\n contact += this.temp_gruu || 'sip:anonymous@anonymous.invalid;transport=ws';\n }\n else\n {\n contact += this.pub_gruu || this.uri.toString();\n }\n\n if (outbound && (anonymous ? !this.temp_gruu : !this.pub_gruu))\n {\n contact += ';ob';\n }\n\n contact += '>';\n\n return contact;\n }\n };\n\n // Seal the configuration.\n const writable_parameters = [\n 'authorization_user', 'password', 'realm', 'ha1', 'authorization_jwt', 'display_name', 'register', 'extra_headers'\n ];\n\n for (const parameter in this._configuration)\n {\n if (Object.prototype.hasOwnProperty.call(this._configuration, parameter))\n {\n if (writable_parameters.indexOf(parameter) !== -1)\n {\n Object.defineProperty(this._configuration, parameter, {\n writable : true,\n configurable : false\n });\n }\n else\n {\n Object.defineProperty(this._configuration, parameter, {\n writable : false,\n configurable : false\n });\n }\n }\n }\n\n logger.debug('configuration parameters after validation:');\n for (const parameter in this._configuration)\n {\n // Only show the user user configurable parameters.\n if (Object.prototype.hasOwnProperty.call(config.settings, parameter))\n {\n switch (parameter)\n {\n case 'uri':\n case 'registrar_server':\n logger.debug(`- ${parameter}: ${this._configuration[parameter]}`);\n break;\n case 'password':\n case 'ha1':\n case 'authorization_jwt':\n logger.debug(`- ${parameter}: NOT SHOWN`);\n break;\n default:\n logger.debug(`- ${parameter}: ${JSON.stringify(this._configuration[parameter])}`);\n }\n }\n }\n\n return;\n }\n};\n\n/**\n * Transport event handlers\n */\n\n// Transport connecting event.\nfunction onTransportConnecting(data)\n{\n this.emit('connecting', data);\n}\n\n// Transport connected event.\nfunction onTransportConnect(data)\n{\n if (this._status === C.STATUS_USER_CLOSED)\n {\n return;\n }\n\n this._status = C.STATUS_READY;\n this._error = null;\n\n this.emit('connected', data);\n\n if (this._dynConfiguration.register)\n {\n this._registrator.register();\n }\n}\n\n// Transport disconnected event.\nfunction onTransportDisconnect(data)\n{\n // Run _onTransportError_ callback on every client transaction using _transport_.\n const client_transactions = [ 'nict', 'ict', 'nist', 'ist' ];\n\n for (const type of client_transactions)\n {\n for (const id in this._transactions[type])\n {\n if (Object.prototype.hasOwnProperty.call(this._transactions[type], id))\n {\n this._transactions[type][id].onTransportError();\n }\n }\n }\n\n this.emit('disconnected', data);\n\n // Call registrator _onTransportClosed_.\n this._registrator.onTransportClosed();\n\n if (this._status !== C.STATUS_USER_CLOSED)\n {\n this._status = C.STATUS_NOT_READY;\n this._error = C.NETWORK_ERROR;\n }\n}\n\n// Transport data event.\nfunction onTransportData(data)\n{\n const transport = data.transport;\n let message = data.message;\n\n message = Parser.parseMessage(message, this);\n\n if (!message)\n {\n return;\n }\n\n if (this._status === C.STATUS_USER_CLOSED &&\n message instanceof SIPMessage.IncomingRequest)\n {\n return;\n }\n\n // Do some sanity check.\n if (!sanityCheck(message, this, transport))\n {\n return;\n }\n\n if (message instanceof SIPMessage.IncomingRequest)\n {\n message.transport = transport;\n this.receiveRequest(message);\n }\n else if (message instanceof SIPMessage.IncomingResponse)\n {\n /* Unike stated in 18.1.2, if a response does not match\n * any transaction, it is discarded here and no passed to the core\n * in order to be discarded there.\n */\n\n let transaction;\n\n switch (message.method)\n {\n case JsSIP_C.INVITE:\n transaction = this._transactions.ict[message.via_branch];\n if (transaction)\n {\n transaction.receiveResponse(message);\n }\n break;\n case JsSIP_C.ACK:\n // Just in case ;-).\n break;\n default:\n transaction = this._transactions.nict[message.via_branch];\n if (transaction)\n {\n transaction.receiveResponse(message);\n }\n break;\n }\n }\n}\n","const Logger = require('./Logger');\nconst Grammar = require('./Grammar');\n\nconst logger = new Logger('WebSocketInterface');\n\nmodule.exports = class WebSocketInterface\n{\n constructor(url)\n {\n logger.debug('new() [url:\"%s\"]', url);\n\n this._url = url;\n this._sip_uri = null;\n this._via_transport = null;\n this._ws = null;\n\n const parsed_url = Grammar.parse(url, 'absoluteURI');\n\n if (parsed_url === -1)\n {\n logger.warn(`invalid WebSocket URI: ${url}`);\n throw new TypeError(`Invalid argument: ${url}`);\n }\n else if (parsed_url.scheme !== 'wss' && parsed_url.scheme !== 'ws')\n {\n logger.warn(`invalid WebSocket URI scheme: ${parsed_url.scheme}`);\n throw new TypeError(`Invalid argument: ${url}`);\n }\n else\n {\n this._sip_uri = `sip:${parsed_url.host}${parsed_url.port ? `:${parsed_url.port}` : ''};transport=ws`;\n this._via_transport = parsed_url.scheme.toUpperCase();\n }\n }\n\n get via_transport()\n {\n return this._via_transport;\n }\n\n set via_transport(value)\n {\n this._via_transport = value.toUpperCase();\n }\n\n get sip_uri()\n {\n return this._sip_uri;\n }\n\n get url()\n {\n return this._url;\n }\n\n connect()\n {\n logger.debug('connect()');\n\n if (this.isConnected())\n {\n logger.debug(`WebSocket ${this._url} is already connected`);\n\n return;\n }\n else if (this.isConnecting())\n {\n logger.debug(`WebSocket ${this._url} is connecting`);\n\n return;\n }\n\n if (this._ws)\n {\n this.disconnect();\n }\n\n logger.debug(`connecting to WebSocket ${this._url}`);\n\n try\n {\n this._ws = new WebSocket(this._url, 'sip');\n\n this._ws.binaryType = 'arraybuffer';\n\n this._ws.onopen = this._onOpen.bind(this);\n this._ws.onclose = this._onClose.bind(this);\n this._ws.onmessage = this._onMessage.bind(this);\n this._ws.onerror = this._onError.bind(this);\n }\n catch (error)\n {\n this._onError(error);\n }\n }\n\n disconnect()\n {\n logger.debug('disconnect()');\n\n if (this._ws)\n {\n // Unbind websocket event callbacks.\n this._ws.onopen = () => {};\n this._ws.onclose = () => {};\n this._ws.onmessage = () => {};\n this._ws.onerror = () => {};\n\n this._ws.close();\n this._ws = null;\n }\n }\n\n send(message)\n {\n logger.debug('send()');\n\n if (this.isConnected())\n {\n this._ws.send(message);\n\n return true;\n }\n else\n {\n logger.warn('unable to send message, WebSocket is not open');\n\n return false;\n }\n }\n\n isConnected()\n {\n return this._ws && this._ws.readyState === this._ws.OPEN;\n }\n\n isConnecting()\n {\n return this._ws && this._ws.readyState === this._ws.CONNECTING;\n }\n\n\n /**\n * WebSocket Event Handlers\n */\n\n _onOpen()\n {\n logger.debug(`WebSocket ${this._url} connected`);\n\n this.onconnect();\n }\n\n _onClose({ wasClean, code, reason })\n {\n logger.debug(`WebSocket ${this._url} closed`);\n\n if (wasClean === false)\n {\n logger.debug('WebSocket abrupt disconnection');\n }\n\n this.ondisconnect(!wasClean, code, reason);\n }\n\n _onMessage({ data })\n {\n logger.debug('received WebSocket message');\n\n this.ondata(data);\n }\n\n _onError(e)\n {\n logger.warn(`WebSocket ${this._url} error: `, e);\n }\n};\n","const pkg = require('../package.json');\nconst C = require('./Constants');\nconst Exceptions = require('./Exceptions');\nconst Utils = require('./Utils');\nconst UA = require('./UA');\nconst URI = require('./URI');\nconst NameAddrHeader = require('./NameAddrHeader');\nconst Grammar = require('./Grammar');\nconst WebSocketInterface = require('./WebSocketInterface');\nconst debug = require('debug')('JsSIP');\nconst RTCSession = require('./RTCSession');\n\ndebug('version %s', pkg.version);\n\n/**\n * Expose the JsSIP module.\n */\nmodule.exports = {\n C,\n Exceptions,\n Utils,\n UA,\n URI,\n NameAddrHeader,\n WebSocketInterface,\n Grammar,\n RTCSession,\n // Expose the debug module.\n debug : require('debug'),\n get name() { return pkg.title; },\n get version() { return pkg.version; }\n};\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * Dora Cell SDK - Main entry point\n * Framework-agnostic VoIP calling SDK using JsSIP\n */\n\nimport JsSIP from 'jssip';\nimport EventEmitter from 'eventemitter3';\nimport type {\n DoraCellConfig,\n DoraCellEventMap,\n DoraCellEvent,\n ConnectionStatus,\n ConnectionState,\n Call,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { ConnectionError, CallError } from '../types';\nimport { createAuthProvider, AuthProvider } from './AuthProvider';\nimport { CallManager } from './CallManager';\n\nexport class DoraCell {\n private config: DoraCellConfig;\n private events: EventEmitter;\n private authProvider: AuthProvider;\n private credentials: SipCredentials | null = null;\n private ua: any | null = null; // JsSIP User Agent\n private callManager: CallManager | null = null;\n private connectionStatus: ConnectionStatus = 'disconnected';\n private retryCount: number = 0;\n private maxRetries: number = 3;\n\n constructor(config: DoraCellConfig) {\n this.config = {\n autoSelectExtension: true,\n debug: false,\n ...config,\n };\n\n this.events = new EventEmitter();\n this.authProvider = createAuthProvider(config.auth);\n\n // Enable JsSIP debugging if requested\n if (this.config.debug) {\n JsSIP.debug.enable('JsSIP:*');\n }\n }\n\n /**\n * Initialize the SDK - authenticate and connect to SIP server\n */\n async initialize(): Promise<void> {\n try {\n // Step 1: Authenticate and get SIP credentials\n this.credentials = await this.authProvider.authenticate(this.config.auth);\n\n // Step 2: Initialize JsSIP User Agent\n await this.initializeUserAgent();\n\n // Step 3: Initialize Call Manager\n this.initializeCallManager();\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : 'Unknown error';\n this.emitError(new ConnectionError(`Initialization failed: ${errorMessage}`));\n throw error;\n }\n }\n\n private async initializeUserAgent(): Promise<void> {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available');\n }\n\n try {\n // Create WebSocket connection\n const socket = new JsSIP.WebSocketInterface(this.credentials.wsUrl);\n\n // Build TURN/STUN configuration\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n // Create User Agent configuration\n const uaConfig: any = {\n uri: this.credentials.sipUri,\n password: this.credentials.password,\n sockets: [socket],\n register: true,\n display_name: this.getDisplayName(),\n session_timers: false,\n use_preloaded_route: false,\n pcConfig: pcConfig,\n instance_id: this.generateInstanceId(),\n };\n\n // Create User Agent\n this.ua = new JsSIP.UA(uaConfig);\n\n // Set up UA event handlers\n this.setupUserAgentHandlers();\n\n // Start the UA\n this.ua.start();\n\n } catch (error) {\n throw new ConnectionError(\n `Failed to initialize User Agent: ${error instanceof Error ? error.message : 'Unknown error'}`\n );\n }\n }\n\n private setupUserAgentHandlers(): void {\n if (!this.ua) return;\n\n this.ua.on('connected', () => {\n this.connectionStatus = 'connected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('disconnected', () => {\n this.connectionStatus = 'disconnected';\n this.emitConnectionStatus();\n });\n\n this.ua.on('registered', () => {\n this.connectionStatus = 'registered';\n this.retryCount = 0;\n this.emitConnectionStatus();\n });\n\n this.ua.on('registrationFailed', (e: any) => {\n this.connectionStatus = 'registrationFailed';\n this.emitConnectionStatus(e.cause);\n\n // Retry logic\n if (this.retryCount < this.maxRetries) {\n this.retryCount++;\n setTimeout(() => {\n this.ua?.register();\n }, 3000);\n }\n });\n\n this.ua.on('newRTCSession', (e: any) => {\n const session = e.session;\n\n if (session.direction === 'incoming') {\n // Handle incoming call\n this.callManager?.handleIncomingCall(session);\n }\n });\n }\n\n private initializeCallManager(): void {\n if (!this.credentials) {\n throw new ConnectionError('No credentials available for call manager');\n }\n\n const pcConfig: RTCConfiguration = {\n iceServers: this.config.turnServers || this.getDefaultTurnServers(),\n };\n\n this.callManager = new CallManager(\n this.credentials,\n this.events,\n { pcConfig }\n );\n\n this.callManager.setUserAgent(this.ua);\n }\n\n /**\n * Make an outbound call\n */\n async call(phoneNumber: string, options?: CallOptions): Promise<Call> {\n if (!this.callManager) {\n throw new CallError('SDK not initialized. Call initialize() first.');\n }\n\n if (this.connectionStatus !== 'registered') {\n throw new CallError('Not registered to SIP server');\n }\n\n return this.callManager.initiateCall(phoneNumber, options);\n }\n\n /**\n * Answer an incoming call\n */\n answerCall(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No incoming call to answer');\n }\n\n if (currentCall.direction !== 'inbound') {\n throw new CallError('Current call is not an incoming call');\n }\n\n // The CallSession will handle answering via its internal session\n // This is already set up in CallManager.handleIncomingCall\n }\n\n /**\n * Hangup the current call\n */\n hangup(): void {\n const currentCall = this.callManager?.getCurrentCall();\n\n if (!currentCall) {\n throw new CallError('No active call to hang up');\n }\n\n currentCall.hangup();\n }\n\n /**\n * Get current call\n */\n getCurrentCall(): Call | null {\n return this.callManager?.getCurrentCall() || null;\n }\n\n /**\n * Get connection status\n */\n getStatus(): ConnectionStatus {\n return this.connectionStatus;\n }\n\n /**\n * Get available extensions\n */\n getExtensions(): string[] {\n if (!this.credentials?.extensions) {\n return [];\n }\n return this.credentials.extensions.map(ext => ext.extension);\n }\n\n /**\n * Event listener management\n */\n on<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.on(event, handler as any);\n }\n\n off<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.off(event, handler as any);\n }\n\n once<K extends DoraCellEvent>(event: K, handler: DoraCellEventMap[K]): void {\n this.events.once(event, handler as any);\n }\n\n /**\n * Cleanup and destroy the SDK instance\n */\n destroy(): void {\n if (this.ua) {\n this.ua.stop();\n this.ua = null;\n }\n\n if (this.callManager) {\n this.callManager.destroy();\n this.callManager = null;\n }\n\n this.events.removeAllListeners();\n this.connectionStatus = 'disconnected';\n this.credentials = null;\n }\n\n // Helper methods\n private emitConnectionStatus(error?: string): void {\n const state: ConnectionState = {\n status: this.connectionStatus,\n extension: this.credentials?.extensions?.[0]?.extension,\n error,\n };\n this.events.emit('connection:status', state);\n }\n\n private emitError(error: Error): void {\n this.events.emit('error', error);\n }\n\n private getDefaultTurnServers(): RTCIceServer[] {\n let turnUri = 'turn:64.227.10.164:3478';\n let turnUser = '02018890089';\n let turnPass = 'dora12345';\n\n if (typeof process !== 'undefined' && process.env) {\n turnUri = process.env.NEXT_PUBLIC_TURN_URI || turnUri;\n turnUser = process.env.NEXT_PUBLIC_TURN_USER || turnUser;\n turnPass = process.env.NEXT_PUBLIC_TURN_PASS || turnPass;\n }\n\n return [\n {\n urls: turnUri,\n username: turnUser,\n credential: turnPass,\n },\n ];\n }\n\n private getDisplayName(): string {\n if (this.credentials?.extensions?.[0]?.displayName) {\n return this.credentials.extensions[0].displayName;\n }\n if (this.credentials?.extensions?.[0]?.extension) {\n return `Ext ${this.credentials.extensions[0].extension}`;\n }\n return 'Dora Cell User';\n }\n\n private generateInstanceId(): string {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {\n const r = (Math.random() * 16) | 0;\n const v = c === 'x' ? r : (r & 0x3) | 0x8;\n return v.toString(16);\n });\n }\n}\n\nexport default DoraCell;\n","import EventEmitter from './index.js'\n\nexport { EventEmitter }\nexport default EventEmitter\n","/**\n * Core TypeScript type definitions for Dora Cell SDK\n */\n\n// ============================================\n// Configuration Types\n// ============================================\n\nexport interface ApiTokenAuth {\n type: 'api-token';\n apiToken: string;\n apiBaseUrl?: string;\n}\n\nexport interface DirectCredentialsAuth {\n type: 'direct';\n sipUri: string;\n password: string;\n wsUrl: string;\n}\n\nexport interface ExtensionAuth {\n type: 'extension';\n extension: string;\n // Optional overrides for advanced cases\n password?: string;\n sipDomain?: string;\n}\n\nexport type AuthConfig = ApiTokenAuth | DirectCredentialsAuth | ExtensionAuth;\n\nexport interface DoraCellConfig {\n auth: AuthConfig;\n sipServer?: string;\n turnServers?: RTCIceServer[];\n debug?: boolean;\n autoSelectExtension?: boolean; // Auto-select first available extension\n}\n\n// ============================================\n// SIP Credentials\n// ============================================\n\nexport interface SipCredentials {\n wsUrl: string;\n sipUri: string;\n password: string;\n sipDomain?: string;\n extensions?: Extension[];\n expiresIn?: number;\n}\n\nexport interface Extension {\n extension: string;\n displayName?: string;\n isPrimary?: boolean;\n}\n\n// ============================================\n// Call Types\n// ============================================\n\nexport type CallStatus = 'idle' | 'connecting' | 'ringing' | 'ongoing' | 'ended';\n\nexport type CallDirection = 'inbound' | 'outbound';\n\nexport interface CallOptions {\n extension?: string; // Specific extension to use for this call\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport interface Call {\n id: string;\n status: CallStatus;\n direction: CallDirection;\n remoteNumber: string;\n localExtension: string;\n duration: number;\n startTime?: number;\n endTime?: number;\n\n // Methods\n mute(): void;\n unmute(): void;\n hangup(): void;\n isMuted(): boolean;\n}\n\n// ============================================\n// Connection Status\n// ============================================\n\nexport type ConnectionStatus =\n | 'disconnected'\n | 'connecting'\n | 'connected'\n | 'registered'\n | 'registrationFailed';\n\nexport interface ConnectionState {\n status: ConnectionStatus;\n extension?: string;\n error?: string;\n}\n\n// ============================================\n// Events\n// ============================================\n\nexport type DoraCellEventMap = {\n 'connection:status': (state: ConnectionState) => void;\n 'call:incoming': (call: Call) => void;\n 'call:outgoing': (call: Call) => void;\n 'call:ringing': (call: Call) => void;\n 'call:connected': (call: Call) => void;\n 'call:ended': (call: Call, reason?: string) => void;\n 'call:failed': (call: Call, error: string) => void;\n 'error': (error: Error) => void;\n};\n\nexport type DoraCellEvent = keyof DoraCellEventMap;\n\n// ============================================\n// API Response Types\n// ============================================\n\nexport interface ApiTokenResponse {\n ws_url?: string;\n wsUrl?: string;\n sip_uri?: string;\n sipUri?: string;\n password?: string;\n sip_domain?: string;\n sipDomain?: string;\n extensions?: Extension[];\n expires_in?: number;\n expiresIn?: number;\n}\n\n// ============================================\n// Error Types\n// ============================================\n\nexport class DoraCellError extends Error {\n constructor(\n message: string,\n public code?: string,\n public details?: any\n ) {\n super(message);\n this.name = 'DoraCellError';\n }\n}\n\nexport class AuthenticationError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'AUTH_ERROR', details);\n this.name = 'AuthenticationError';\n }\n}\n\nexport class CallError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CALL_ERROR', details);\n this.name = 'CallError';\n }\n}\n\nexport class ConnectionError extends DoraCellError {\n constructor(message: string, details?: any) {\n super(message, 'CONNECTION_ERROR', details);\n this.name = 'ConnectionError';\n }\n}\n","/**\n * Authentication provider for API token-based authentication\n */\n\nimport type {\n AuthConfig,\n SipCredentials,\n ApiTokenResponse,\n Extension,\n} from '../types';\nimport { AuthenticationError } from '../types';\n\nexport interface AuthProvider {\n authenticate(config: AuthConfig): Promise<SipCredentials>;\n refreshCredentials?(): Promise<SipCredentials>;\n isAuthenticated(): boolean;\n}\n\n/**\n * API Token Authentication Provider\n * Exchanges API token for SIP credentials via backend API\n */\nexport class ApiTokenAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n private apiToken: string;\n private apiBaseUrl: string;\n\n constructor(apiToken: string, apiBaseUrl?: string) {\n this.apiToken = apiToken;\n let defaultBaseUrl = '';\n if (typeof process !== 'undefined' && process.env) {\n defaultBaseUrl = process.env.NEXT_PUBLIC_BASE_API_URL || '';\n }\n this.apiBaseUrl = apiBaseUrl || defaultBaseUrl;\n }\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'api-token') {\n throw new AuthenticationError('Invalid auth config type for ApiTokenAuthProvider');\n }\n\n try {\n const response = await fetch(`${this.apiBaseUrl}/api/sip-credentials`, {\n method: 'GET',\n headers: {\n 'Authorization': `Bearer ${this.apiToken}`,\n 'Content-Type': 'application/json',\n 'Accept': 'application/json',\n },\n credentials: 'include',\n });\n\n if (!response.ok) {\n if (response.status === 401 || response.status === 403) {\n throw new AuthenticationError(\n 'Invalid API token or insufficient permissions',\n { status: response.status }\n );\n }\n throw new AuthenticationError(\n `Failed to fetch SIP credentials: ${response.status}`,\n { status: response.status }\n );\n }\n\n const data: ApiTokenResponse = await response.json();\n this.credentials = this.parseCredentials(data);\n return this.credentials;\n } catch (error) {\n if (error instanceof AuthenticationError) {\n throw error;\n }\n throw new AuthenticationError(\n `Authentication failed: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n async refreshCredentials(): Promise<SipCredentials> {\n // Re-authenticate to get fresh credentials\n return this.authenticate({ type: 'api-token', apiToken: this.apiToken });\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n\n private parseCredentials(data: ApiTokenResponse): SipCredentials {\n const wsUrl = data.ws_url || data.wsUrl;\n const sipUri = data.sip_uri || data.sipUri;\n const password = data.password;\n const sipDomain = data.sip_domain || data.sipDomain;\n const extensions = data.extensions;\n const expiresIn = data.expires_in || data.expiresIn;\n\n if (!wsUrl || !sipUri) {\n throw new AuthenticationError(\n 'Invalid credentials response: missing ws_url or sip_uri'\n );\n }\n\n return {\n wsUrl,\n sipUri,\n password: password || '',\n sipDomain,\n extensions,\n expiresIn,\n };\n }\n}\n\n/**\n * Direct Credentials Authentication Provider\n * Uses credentials provided directly in configuration\n */\nexport class DirectCredentialsAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'direct') {\n throw new AuthenticationError('Invalid auth config type for DirectCredentialsAuthProvider');\n }\n\n this.credentials = {\n wsUrl: config.wsUrl,\n sipUri: config.sipUri,\n password: config.password,\n };\n\n return this.credentials;\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n}\n\n/**\n * Extension Authentication Provider\n * Simplified plug-and-play authentication using just an extension number.\n * Uses default Dora Cell infrastructure configuration.\n */\nconst DEFAULT_WSS_URL = 'wss://cell.usedora.com:8089';\nconst DEFAULT_SIP_IP = '64.227.10.164';\nconst DEFAULT_PASSWORD = '1234';\n\nexport class ExtensionAuthProvider implements AuthProvider {\n private credentials: SipCredentials | null = null;\n\n async authenticate(config: AuthConfig): Promise<SipCredentials> {\n if (config.type !== 'extension') {\n throw new AuthenticationError('Invalid auth config type for ExtensionAuthProvider');\n }\n\n const extension = config.extension;\n const password = config.password || DEFAULT_PASSWORD;\n const wsUrl = DEFAULT_WSS_URL;\n const sipDomain = config.sipDomain || DEFAULT_SIP_IP;\n\n const sipUri = `sip:${extension}@${sipDomain}`;\n\n this.credentials = {\n wsUrl,\n sipUri,\n password,\n sipDomain,\n extensions: [{ extension, displayName: `Ext ${extension}`, isPrimary: true }]\n };\n\n return this.credentials;\n }\n\n isAuthenticated(): boolean {\n return this.credentials !== null;\n }\n}\n\n/**\n * Factory function to create appropriate auth provider\n */\nexport function createAuthProvider(config: AuthConfig): AuthProvider {\n switch (config.type) {\n case 'api-token':\n return new ApiTokenAuthProvider(config.apiToken, config.apiBaseUrl);\n case 'direct':\n return new DirectCredentialsAuthProvider();\n case 'extension':\n return new ExtensionAuthProvider();\n default:\n throw new AuthenticationError('Unknown authentication type');\n }\n}\n","/**\n * Phone number formatting utilities\n * Extracted from JsSIPProvider.tsx\n */\n\n/**\n * Format a phone number to SIP URI format\n * Handles Nigerian numbers, international format, and local extensions\n */\nexport function formatPhoneToSIP(phone: string, sipDomain: string): string {\n // Strip all non-numeric characters\n let cleaned = phone.replace(/\\D/g, '');\n\n // Case 1: Short local extension (like \"101\", \"102\", etc.)\n if (cleaned.length <= 4) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 2: Nigerian number starting with 0 (like \"08012345678\")\n if (cleaned.startsWith('0')) {\n cleaned = '234' + cleaned.substring(1);\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 3: Already in international format (starts with 234)\n if (cleaned.startsWith('234')) {\n return `sip:${cleaned}@${sipDomain}`;\n }\n\n // Case 4: Any other number - assume it needs 234 prefix\n cleaned = '234' + cleaned;\n return `sip:${cleaned}@${sipDomain}`;\n}\n\n/**\n * Normalize a phone number to E.164 format\n */\nexport function normalizePhoneNumber(\n phone: string,\n countryCode: string = '234'\n): string {\n let cleaned = phone.replace(/\\D/g, '');\n\n // If it's a short extension, return as-is\n if (cleaned.length <= 4) {\n return cleaned;\n }\n\n // Remove leading 0 and add country code\n if (cleaned.startsWith('0')) {\n return countryCode + cleaned.substring(1);\n }\n\n // If already has country code, return as-is\n if (cleaned.startsWith(countryCode)) {\n return cleaned;\n }\n\n // Otherwise add country code\n return countryCode + cleaned;\n}\n\n/**\n * Extract extension/number from SIP URI\n */\nexport function extractNumberFromSipUri(sipUri: string): string {\n const match = sipUri.match(/sip:([^@]+)@/);\n return match ? match[1] : sipUri;\n}\n\n/**\n * Validate phone number format\n */\nexport function isValidPhoneNumber(phone: string, minLength: number = 3): boolean {\n const cleaned = phone.replace(/\\D/g, '');\n return cleaned.length >= minLength;\n}\n","/**\n * Call Manager - Handles individual call sessions\n * Extracted and refactored from JsSIPProvider.tsx\n */\n\nimport type {\n Call,\n CallStatus,\n CallDirection,\n CallOptions,\n SipCredentials,\n} from '../types';\nimport { CallError } from '../types';\nimport { formatPhoneToSIP } from '../utils/phoneFormatter';\nimport EventEmitter from 'eventemitter3';\n\nexport interface CallConfig {\n pcConfig: RTCConfiguration;\n mediaConstraints?: MediaStreamConstraints;\n}\n\nexport class CallSession implements Call {\n public id: string;\n public status: CallStatus = 'idle';\n public direction: CallDirection;\n public remoteNumber: string;\n public localExtension: string;\n public duration: number = 0;\n public startTime?: number;\n public endTime?: number;\n\n private session: any; // JsSIP RTCSession\n private _isMuted: boolean = false;\n private remoteStreamValue: MediaStream | null = null;\n private durationInterval?: number;\n private events: EventEmitter;\n\n constructor(\n session: any,\n direction: CallDirection,\n remoteNumber: string,\n localExtension: string,\n events: EventEmitter\n ) {\n this.id = this.generateCallId();\n this.session = session;\n this.direction = direction;\n this.remoteNumber = remoteNumber;\n this.localExtension = localExtension;\n this.events = events;\n\n this.setupSessionHandlers();\n }\n\n private generateCallId(): string {\n return `call_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;\n }\n\n private setupSessionHandlers(): void {\n // Progress event (ringing)\n this.session.on('progress', (evt: any) => {\n const code = evt.response?.status_code;\n if (code === 180 || code === 183) {\n this.status = 'ringing';\n this.events.emit('call:ringing', this);\n }\n });\n\n // Call confirmed (connected)\n this.session.on('confirmed', () => {\n this.status = 'ongoing';\n this.startTime = Date.now();\n this.startDurationTimer();\n this.events.emit('call:connected', this);\n });\n\n // Peer connection setup\n this.session.on('peerconnection', (evt: any) => {\n evt.peerconnection.ontrack = (event: any) => {\n if (event.streams && event.streams[0]) {\n this.remoteStreamValue = event.streams[0];\n }\n };\n });\n\n // Call ended\n this.session.on('ended', (evt: any) => {\n this.handleCallEnd(evt?.cause);\n });\n\n // Call failed\n this.session.on('failed', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call failed');\n });\n\n // Call rejected\n this.session.on('rejected', (evt: any) => {\n this.handleCallEnd(evt?.cause || 'Call rejected');\n });\n }\n\n private handleCallEnd(reason?: string): void {\n this.status = 'ended';\n this.endTime = Date.now();\n this.stopDurationTimer();\n this.remoteStreamValue = null;\n this._isMuted = false;\n this.events.emit('call:ended', this, reason);\n }\n\n private startDurationTimer(): void {\n this.durationInterval = window.setInterval(() => {\n if (this.startTime) {\n this.duration = Math.floor((Date.now() - this.startTime) / 1000);\n }\n }, 1000);\n }\n\n private stopDurationTimer(): void {\n if (this.durationInterval) {\n clearInterval(this.durationInterval);\n this.durationInterval = undefined;\n }\n }\n\n // Public methods\n mute(): void {\n if (this.session && !this._isMuted) {\n this.session.mute({ audio: true });\n this._isMuted = true;\n }\n }\n\n unmute(): void {\n if (this.session && this._isMuted) {\n this.session.unmute({ audio: true });\n this._isMuted = false;\n }\n }\n\n hangup(): void {\n if (this.session) {\n this.session.terminate();\n }\n }\n\n isMuted(): boolean {\n return this._isMuted;\n }\n\n getRemoteStream(): MediaStream | null {\n return this.remoteStreamValue;\n }\n\n getFormattedDuration(): string {\n const mm = String(Math.floor(this.duration / 60)).padStart(2, '0');\n const ss = String(this.duration % 60).padStart(2, '0');\n return `${mm}:${ss}`;\n }\n\n destroy(): void {\n this.stopDurationTimer();\n this.session = null;\n this.remoteStreamValue = null;\n }\n}\n\n/**\n * Call Manager - Manages call sessions and JsSIP integration\n */\nexport class CallManager {\n private ua: any | null = null; // JsSIP User Agent\n private currentCall: CallSession | null = null;\n private credentials: SipCredentials;\n private events: EventEmitter;\n private callConfig: CallConfig;\n\n constructor(\n credentials: SipCredentials,\n events: EventEmitter,\n callConfig: CallConfig\n ) {\n this.credentials = credentials;\n this.events = events;\n this.callConfig = callConfig;\n }\n\n setUserAgent(ua: any): void {\n this.ua = ua;\n }\n\n /**\n * Initiate an outbound call\n */\n async initiateCall(\n targetNumber: string,\n options?: CallOptions\n ): Promise<CallSession> {\n if (!this.ua) {\n throw new CallError('User Agent not initialized');\n }\n\n if (this.currentCall && this.currentCall.status !== 'ended') {\n throw new CallError('A call is already in progress');\n }\n\n try {\n // Request microphone permission\n await navigator.mediaDevices.getUserMedia({ audio: true });\n\n // Determine which extension to use\n const extension = options?.extension || this.getDefaultExtension();\n\n // Format the target number to SIP URI\n const sipDomain = this.extractDomain(this.credentials.sipUri);\n const sipTarget = formatPhoneToSIP(targetNumber, sipDomain);\n\n // Initiate the call\n const session = this.ua.call(sipTarget, {\n mediaConstraints: options?.mediaConstraints || { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n\n // Create call session\n const call = new CallSession(\n session,\n 'outbound',\n targetNumber,\n extension,\n this.events\n );\n\n call.status = 'connecting';\n this.currentCall = call;\n this.events.emit('call:outgoing', call);\n\n return call;\n } catch (error) {\n throw new CallError(\n `Failed to initiate call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Answer an incoming call\n */\n answerCall(session: any): CallSession {\n if (!session) {\n throw new CallError('No session provided');\n }\n\n try {\n const remoteUri = session.remote_identity?.uri?.toString() || 'Unknown';\n const extension = this.getDefaultExtension();\n\n session.answer({\n mediaConstraints: { audio: true },\n pcConfig: this.callConfig.pcConfig,\n });\n\n const call = new CallSession(\n session,\n 'inbound',\n remoteUri,\n extension,\n this.events\n );\n\n this.currentCall = call;\n return call;\n } catch (error) {\n throw new CallError(\n `Failed to answer call: ${error instanceof Error ? error.message : 'Unknown error'}`,\n { originalError: error }\n );\n }\n }\n\n /**\n * Handle incoming call from JsSIP\n */\n handleIncomingCall(session: any): CallSession {\n const remoteUri = session.remote_identity?.uri?.toString() || 'Unknown';\n const extension = this.getDefaultExtension();\n\n const call = new CallSession(\n session,\n 'inbound',\n remoteUri,\n extension,\n this.events\n );\n\n call.status = 'ringing';\n this.currentCall = call;\n this.events.emit('call:incoming', call);\n\n return call;\n }\n\n getCurrentCall(): CallSession | null {\n return this.currentCall;\n }\n\n clearCurrentCall(): void {\n if (this.currentCall) {\n this.currentCall.destroy();\n this.currentCall = null;\n }\n }\n\n private getDefaultExtension(): string {\n // Auto-select first extension if available\n if (this.credentials.extensions && this.credentials.extensions.length > 0) {\n return this.credentials.extensions[0].extension;\n }\n // Fallback to extracting from sipUri\n return this.extractExtension(this.credentials.sipUri);\n }\n\n private extractExtension(sipUri: string): string {\n const match = sipUri.match(/sip:([^@]+)@/);\n return match ? match[1] : 'unknown';\n }\n\n private extractDomain(sipUri: string): string {\n const match = sipUri.match(/@(.+)$/);\n return match ? match[1] : '';\n }\n\n destroy(): void {\n this.clearCurrentCall();\n this.ua = null;\n }\n}\n"]}