{"version":3,"file":"henkkelder-ng2-signalr.mjs","sources":["../../../projects/ng2-signalr/src/lib/services/eventing/broadcast.event.listener.ts","../../../projects/ng2-signalr/src/lib/services/testing/signalr.connection.mock.ts","../../../projects/ng2-signalr/src/lib/services/testing/signalr.connection.mock.manager.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.status.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.statuses.ts","../../../projects/ng2-signalr/src/lib/services/connection/signalr.connection.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.transport.ts","../../../projects/ng2-signalr/src/lib/services/connection/connection.transports.ts","../../../projects/ng2-signalr/src/lib/services/signalr.configuration.ts","../../../projects/ng2-signalr/src/lib/services/signalr.module.ts","../../../projects/ng2-signalr/src/lib/services/signalr.ts","../../../projects/ng2-signalr/src/lib/modules/signalr-module.ts","../../../projects/ng2-signalr/src/public-api.ts","../../../projects/ng2-signalr/src/henkkelder-ng2-signalr.ts"],"sourcesContent":["import { Subject } from 'rxjs';\r\n\r\nexport class BroadcastEventListener<T> extends Subject<T> {\r\n\r\n    constructor(public event: string) {\r\n        super();\r\n        if (event == null || event === '') {\r\n            throw new Error('Failed to create BroadcastEventListener. Argument \\'event\\' can not be empty');\r\n        }\r\n    }\r\n}\r\n","import { Observable, AsyncSubject, ReplaySubject, Subject } from 'rxjs';\r\nimport { SignalRConfiguration } from '../signalr.configuration';\r\nimport { BroadcastEventListener } from '../eventing/broadcast.event.listener';\r\nimport { ConnectionStatus } from '../connection/connection.status';\r\nimport { ISignalRConnection } from '../connection/i.signalr.connection';\r\n\r\nexport interface IListenerCollection {\r\n    [name: string]: BroadcastEventListener<any>;\r\n}\r\n\r\nexport class SignalRConnectionMock implements ISignalRConnection {\r\n    constructor(\r\n        private _mockErrors$: Subject<any>,\r\n        private _mockStatus$: Subject<ConnectionStatus>,\r\n        private _listeners: IListenerCollection) {\r\n    }\r\n\r\n    get errors(): Observable<any> {\r\n        return this._mockErrors$;\r\n    }\r\n\r\n    get status(): Observable<ConnectionStatus> {\r\n        return this._mockStatus$.asObservable();\r\n    }\r\n\r\n    get id(): string {\r\n        return 'xxxxxxxx-xxxx-xxxx-xxxxxxxxx';\r\n    }\r\n\r\n    public stop(): void {\r\n        //\r\n    }\r\n\r\n    public start(): Promise<any> {\r\n        return Promise.resolve(null); // TODO: implement\r\n    }\r\n\r\n    public invoke(method: string, ...parameters: any[]): Promise<any> {\r\n        return Promise.resolve(null);\r\n    }\r\n\r\n    public listen<T>(listener: BroadcastEventListener<T>): void {\r\n        this._listeners[listener.event] = listener;\r\n    }\r\n\r\n    public listenFor<T>(event: string): BroadcastEventListener<T> {\r\n        const listener = new BroadcastEventListener<T>(event);\r\n        this.listen(listener);\r\n        return listener;\r\n    }\r\n\r\n    public listenForRaw(event: string): BroadcastEventListener<any[]> {\r\n        const listener = new BroadcastEventListener<any[]>(event);\r\n        this._listeners[listener.event] = listener;\r\n        return listener;\r\n    }\r\n\r\n    stopListening<T>(listener: BroadcastEventListener<T>): void {\r\n        delete this._listeners[listener.event];\r\n    }\r\n}\r\n","import { Subject, ReplaySubject } from 'rxjs';\r\nimport { SignalRConnectionMock, IListenerCollection } from './signalr.connection.mock';\r\nimport { ConnectionStatus } from '../connection/connection.status';\r\n\r\nexport class SignalRConnectionMockManager {\r\n\r\n    private _listeners: IListenerCollection;\r\n    private _status$: Subject<ConnectionStatus>;\r\n    private _errors$: Subject<any>;\r\n    private _object: SignalRConnectionMock;\r\n\r\n    constructor() {\r\n        this._errors$ = new Subject<any>();\r\n        this._status$ = new Subject<ConnectionStatus>();\r\n        this._listeners = {};\r\n        this._object = new SignalRConnectionMock(this._errors$, this._status$, this._listeners);\r\n    }\r\n\r\n    get mock(): SignalRConnectionMock {\r\n        return this._object;\r\n    }\r\n\r\n    get errors$(): Subject<any> {\r\n        return this._errors$;\r\n    }\r\n\r\n    get status$(): Subject<ConnectionStatus> {\r\n        return this._status$;\r\n    }\r\n\r\n    get listeners(): IListenerCollection {\r\n        return this._listeners;\r\n    }\r\n}\r\n","export class ConnectionStatus {\r\n\r\n    private static names: string[] = ['connecting', 'connected', 'reconnecting', '', 'disconnected'];\r\n\r\n    private _value: number;\r\n\r\n    get value(): number {\r\n        return this._value;\r\n    }\r\n\r\n     get name(): string {\r\n        return ConnectionStatus.names[Number(this._value.toString())];\r\n    }\r\n\r\n    constructor(value: number) {\r\n        if (value == null || value < 0) {\r\n            throw new Error('Failed to create ConnectionStatus. Argument \\'name\\' can not be null or empty.');\r\n        }\r\n        this._value = value;\r\n    }\r\n\r\n    public toString(): string {\r\n        return this.name;\r\n    }\r\n\r\n    public equals(other: ConnectionStatus): boolean {\r\n        if (other == null) {\r\n            return false;\r\n        }\r\n        return this._value === other.value;\r\n    }\r\n}\r\n","import { ConnectionStatus } from './connection.status';\r\n\r\n// @dynamic\r\nexport class ConnectionStatuses {\r\n\r\n    private static statuses: ConnectionStatus[] =\r\n        [\r\n            new ConnectionStatus(0),\r\n            new ConnectionStatus(1),\r\n            new ConnectionStatus(2),\r\n            new ConnectionStatus(4)\r\n        ];\r\n\r\n    public static get connecting(): ConnectionStatus {\r\n        return ConnectionStatuses.statuses[0];\r\n    }\r\n\r\n    public static get connected(): ConnectionStatus {\r\n        return ConnectionStatuses.statuses[1];\r\n    }\r\n\r\n    public static get reconnecting(): ConnectionStatus {\r\n        return ConnectionStatuses.statuses[2];\r\n    }\r\n\r\n    public static get disconnected(): ConnectionStatus {\r\n        return ConnectionStatuses.statuses[3];\r\n    }\r\n}\r\n","import { NgZone } from '@angular/core';\r\nimport { ISignalRConnection } from './i.signalr.connection';\r\nimport { Observable, Subject } from 'rxjs';\r\nimport { BroadcastEventListener } from '../eventing/broadcast.event.listener';\r\nimport { ConnectionStatus } from './connection.status';\r\nimport { SignalRConfiguration } from '../signalr.configuration';\r\nimport { ConnectionTransport } from './connection.transport';\r\n\r\nexport declare type CallbackFn = (...args: any[]) => void;\r\n\r\nexport class SignalRConnection implements ISignalRConnection {\r\n    private _status: Observable<ConnectionStatus>;\r\n    private _errors: Observable<any>;\r\n    private _jConnection: any;\r\n    private _jProxy: any;\r\n    private _zone: NgZone;\r\n    private _configuration: SignalRConfiguration;\r\n    private _listeners: { [eventName: string]: CallbackFn[] };\r\n\r\n    private _enabledLogging = true;\r\n\r\n    constructor(jConnection: any, jProxy: any, zone: NgZone, configuration: SignalRConfiguration) {\r\n        this._jProxy = jProxy;\r\n        this._jConnection = jConnection;\r\n        this._zone = zone;\r\n        this._errors = this.wireUpErrorsAsObservable();\r\n        this._status = this.wireUpStatusEventsAsObservable();\r\n        this._configuration = configuration;\r\n        this._enabledLogging = configuration.logging;\r\n        this._listeners = {};\r\n    }\r\n\r\n    public get errors(): Observable<any> {\r\n        return this._errors;\r\n    }\r\n\r\n    public get status(): Observable<ConnectionStatus> {\r\n        return this._status;\r\n    }\r\n\r\n    public get enabledLogging() {\r\n      return this._enabledLogging;\r\n    }\r\n\r\n    public set enabledLogging(val: boolean) {\r\n      this._enabledLogging = val;\r\n    }\r\n\r\n    public start(): Promise<ISignalRConnection> {\r\n\r\n        const jTransports = this.convertTransports(this._configuration.transport);\r\n\r\n        const $promise = new Promise<ISignalRConnection>((resolve, reject) => {\r\n            this._jConnection\r\n                .start({\r\n                    jsonp: this._configuration.jsonp,\r\n                    pingInterval: this._configuration.pingInterval,\r\n                    transport: jTransports,\r\n                    withCredentials: this._configuration.withCredentials,\r\n                })\r\n                .done(() => {\r\n                    this.log('Connection established, ID: ' + this._jConnection.id);\r\n                    this.log('Connection established, Transport: ' + this._jConnection.transport.name);\r\n                    resolve(this);\r\n                })\r\n                .fail((error: any) => {\r\n                    this.log('Could not connect');\r\n                    reject('Failed to connect. Error: ' + error.message); // ex: Error during negotiation request.\r\n                });\r\n        });\r\n        return $promise;\r\n    }\r\n\r\n    public stop(): void {\r\n        this._jConnection.stop();\r\n    }\r\n\r\n    public get id(): string {\r\n        return this._jConnection.id;\r\n    }\r\n\r\n    public invoke(method: string, ...parameters: any[]): Promise<any> {\r\n        if (method == null) {\r\n            throw new Error('SignalRConnection: Failed to invoke. Argument \\'method\\' can not be null');\r\n        }\r\n        this.log(`SignalRConnection. Start invoking \\'${method}\\'...`);\r\n\r\n        const $promise = new Promise<any>((resolve, reject) => {\r\n            this._jProxy.invoke(method, ...parameters)\r\n                .done((result: any) => {\r\n                    this.log(`\\'${method}\\' invoked succesfully. Resolving promise...`);\r\n                    resolve(result);\r\n                    this.log(`Promise resolved.`);\r\n                })\r\n                .fail((err: any) => {\r\n                    this.log(`Invoking \\'${method}\\' failed. Rejecting promise...`);\r\n                    reject(err);\r\n                    this.log(`Promise rejected.`);\r\n                });\r\n        });\r\n        return $promise;\r\n    }\r\n\r\n    public listen<T>(listener: BroadcastEventListener<T>): void {\r\n        if (listener == null) {\r\n            throw new Error('Failed to listen. Argument \\'listener\\' can not be null');\r\n        }\r\n\r\n        const callback: CallbackFn = (...args: any[]) => {\r\n            this.run(() => {\r\n                let casted: T = null;\r\n                if (args.length > 0) {\r\n                    casted = args[0] as T;\r\n                }\r\n                this.log('SignalRConnection.proxy.on invoked. Calling listener next() ...');\r\n                listener.next(casted);\r\n                this.log('listener next() called.');\r\n            }, this._configuration.executeEventsInZone);\r\n        };\r\n\r\n        this.setListener(callback, listener);\r\n    }\r\n\r\n    public stopListening<T>(listener: BroadcastEventListener<T>): void {\r\n        if (listener == null) {\r\n            throw new Error('Failed to listen. Argument \\'listener\\' can not be null');\r\n        }\r\n\r\n        this.log(`SignalRConnection: Stopping listening to server event with name ${listener.event}`);\r\n        if (!this._listeners[listener.event]) {\r\n            this._listeners[listener.event] = [];\r\n        }\r\n\r\n        for (const callback of this._listeners[listener.event]) {\r\n            this._jProxy.off(listener.event, callback);\r\n        }\r\n\r\n        this._listeners[listener.event] = [];\r\n    }\r\n\r\n    public listenFor<T>(event: string): BroadcastEventListener<T> {\r\n        if (event == null || event === '') {\r\n            throw new Error('Failed to listen. Argument \\'event\\' can not be empty');\r\n        }\r\n\r\n        const listener = new BroadcastEventListener<T>(event);\r\n\r\n        this.listen(listener);\r\n\r\n        return listener;\r\n    }\r\n\r\n    public listenForRaw(event: string): BroadcastEventListener<any[]> {\r\n        if (event == null || event === '') {\r\n            throw new Error('Failed to listen. Argument \\'event\\' can not be empty');\r\n        }\r\n\r\n        const listener = new BroadcastEventListener<any[]>(event);\r\n\r\n        const callback: CallbackFn = (...args: any[]) => {\r\n            this.run(() => {\r\n                let casted: any[] = [];\r\n                if (args.length > 0) {\r\n                    casted = args;\r\n                }\r\n                this.log('SignalRConnection.proxy.on invoked. Calling listener next() ...');\r\n                listener.next(args);\r\n                this.log('listener next() called.');\r\n            }, this._configuration.executeEventsInZone);\r\n        };\r\n\r\n        this.setListener(callback, listener);\r\n        return listener;\r\n    }\r\n\r\n    private setListener<T>(callback: CallbackFn, listener: BroadcastEventListener<T>) {\r\n        this.log(`SignalRConnection: Starting to listen to server event with name ${listener.event}`);\r\n        this._jProxy.on(listener.event, callback);\r\n\r\n        if (this._listeners[listener.event] == null) {\r\n            this._listeners[listener.event] = [];\r\n        }\r\n\r\n        this._listeners[listener.event].push(callback);\r\n    }\r\n\r\n    private convertTransports(transports: ConnectionTransport | ConnectionTransport[]): any {\r\n        if (transports instanceof Array) {\r\n            return transports.map((t: ConnectionTransport) => t.name);\r\n        }\r\n        return transports.name;\r\n    }\r\n\r\n    private wireUpErrorsAsObservable(): Observable<any> {\r\n        const sError = new Subject<any>();\r\n\r\n        this._jConnection.error((error: any) => {\r\n            this.run(() => sError.next(error), this._configuration.executeErrorsInZone);\r\n        });\r\n        return sError;\r\n    }\r\n\r\n    private wireUpStatusEventsAsObservable(): Observable<ConnectionStatus> {\r\n        const sStatus = new Subject<ConnectionStatus>();\r\n        // aggregate all signalr connection status handlers into 1 observable.\r\n        // handler wire up, for signalr connection status callback.\r\n        this._jConnection.stateChanged((change: any) => {\r\n            this.run(() => sStatus.next(new ConnectionStatus(change.newState)),\r\n                this._configuration.executeStatusChangeInZone);\r\n        });\r\n        return sStatus.asObservable();\r\n    }\r\n\r\n    private onBroadcastEventReceived<T>(listener: BroadcastEventListener<T>, ...args: any[]) {\r\n        this.log('SignalRConnection.proxy.on invoked. Calling listener next() ...');\r\n\r\n        let casted: T = null;\r\n        if (args.length > 0) {\r\n            casted = args[0] as T;\r\n        }\r\n\r\n        this.run(() => {\r\n            listener.next(casted);\r\n        }, this._configuration.executeEventsInZone);\r\n\r\n        this.log('listener next() called.');\r\n    }\r\n\r\n    private log(...args: any[]) {\r\n        if (this.enabledLogging === false) {\r\n            return;\r\n        }\r\n        // tslint:disable-next-line: no-console\r\n        console.log(args.join(', '));\r\n    }\r\n\r\n    private run(func: () => void, inZone: boolean) {\r\n        if (inZone) {\r\n            this._zone.run(() => func());\r\n        } else {\r\n            this._zone.runOutsideAngular(() => func());\r\n        }\r\n    }\r\n}\r\n","export class ConnectionTransport {\r\n\r\n    private _name: string;\r\n\r\n    get name(): string {\r\n        return this._name;\r\n    }\r\n\r\n    constructor(name: string) {\r\n        if (name == null || name === '') {\r\n            throw new Error('Failed to create ConnectionTransport. Argument \\'name\\' can not be null or empty.');\r\n        }\r\n        this._name = name;\r\n    }\r\n\r\n    public toString(): string {\r\n        return this._name;\r\n    }\r\n\r\n    public equals(other: ConnectionTransport): boolean {\r\n        if (other == null) {\r\n            return false;\r\n        }\r\n\r\n        return this._name === other.name;\r\n    }\r\n}\r\n","import { ConnectionTransport } from './connection.transport';\r\n\r\n// @dynamic\r\nexport class ConnectionTransports {\r\n\r\n    private static transports: ConnectionTransport[] =\r\n        [\r\n            new ConnectionTransport('foreverFrame'),\r\n            new ConnectionTransport('longPolling'),\r\n            new ConnectionTransport('serverSentEvents'),\r\n            new ConnectionTransport('webSockets'),\r\n            new ConnectionTransport('auto'),\r\n        ];\r\n\r\n    public static get foreverFrame(): ConnectionTransport {\r\n        return ConnectionTransports.transports[0];\r\n    }\r\n\r\n    public static get longPolling(): ConnectionTransport {\r\n        return ConnectionTransports.transports[1];\r\n    }\r\n\r\n    public static get serverSentEvents(): ConnectionTransport {\r\n        return ConnectionTransports.transports[2];\r\n    }\r\n\r\n    public static get webSockets(): ConnectionTransport {\r\n        return ConnectionTransports.transports[3];\r\n    }\r\n\r\n    public static get auto(): ConnectionTransport {\r\n        return ConnectionTransports.transports[4];\r\n    }\r\n}\r\n","\r\nimport { ConnectionTransports } from './connection/connection.transports';\r\nimport { ConnectionTransport } from './connection/connection.transport';\r\nimport { IConnectionOptions } from './connection/connection.options';\r\n\r\nexport class SignalRConfiguration implements IConnectionOptions {\r\n\r\n    /** connection url to the SignalR service */\r\n    public url: string;\r\n\r\n    /** Allows you to specify query string parameters object when the client connects */\r\n    public qs?: any;\r\n\r\n    /** name of the SignalR service hub to connect to */\r\n    public hubName: string;\r\n\r\n    /** disable/enables client side logging. Defaults to false */\r\n    public logging: boolean;\r\n\r\n    /** Allows jsonp. This flag can be used to suppport CORS on older browsers */\r\n    public jsonp: boolean;\r\n\r\n     /** Allows withCredentials. This flag can be used to suppport CORS */\r\n    public withCredentials: boolean;\r\n\r\n    /** Allows pingInterval */\r\n    public pingInterval?: number;\r\n\r\n    /** Allows you to specify transport. You can specify a fallback order if you wan't to try specific transports in order. By default selects best avaliable transport. */\r\n    public transport: ConnectionTransport | ConnectionTransport[];\r\n\r\n    /** Allows you to run the event callback outside ngZone */\r\n    public executeEventsInZone?: boolean;\r\n\r\n    /** Allows you to run the errors callback outside ngZone */\r\n    public executeErrorsInZone?: boolean;\r\n\r\n    /** Allows you to run the status change in callback outside ngZone */\r\n    public executeStatusChangeInZone?: boolean;\r\n\r\n    constructor() {\r\n       this.hubName = null;\r\n       this.logging = false;\r\n       this.qs  = null;\r\n       this.url = null;\r\n       this.jsonp = false;\r\n       this.withCredentials = false;\r\n       this.transport = ConnectionTransports.auto;\r\n       this.executeEventsInZone = true;\r\n       this.executeErrorsInZone = false;\r\n       this.executeStatusChangeInZone = true;\r\n       this.pingInterval = 300000;\r\n    }\r\n}\r\n","import { InjectionToken } from '@angular/core';\r\n\r\nexport const SIGNALR_JCONNECTION_TOKEN = new InjectionToken<any>('SIGNALR_JCONNECTION_TOKEN');\r\n","import { NgZone, Injectable, Inject } from '@angular/core';\r\nimport { ISignalRConnection } from './connection/i.signalr.connection';\r\nimport { SignalRConfiguration } from './signalr.configuration';\r\nimport { SignalRConnection } from './connection/signalr.connection';\r\nimport { IConnectionOptions } from './connection/connection.options';\r\nimport { SIGNALR_JCONNECTION_TOKEN } from './signalr.module';\r\n\r\ndeclare var jQuery: any;\r\n\r\n@Injectable()\r\nexport class SignalR {\r\n    private _configuration: SignalRConfiguration;\r\n    private _zone: NgZone;\r\n    private _jHubConnectionFn: any;\r\n\r\n    public constructor(\r\n        configuration: SignalRConfiguration,\r\n        zone: NgZone,\r\n        @Inject(SIGNALR_JCONNECTION_TOKEN) jHubConnectionFn: any /* use type 'any'; Suggested workaround from angular repository: https://github.com/angular/angular/issues/12631 */\r\n    ) {\r\n        this._configuration = configuration;\r\n        this._zone = zone;\r\n        this._jHubConnectionFn = jHubConnectionFn;\r\n    }\r\n\r\n    public createConnection(options?: IConnectionOptions): SignalRConnection {\r\n        const configuration = this.merge(options ? options : {});\r\n\r\n        this.logConfiguration(configuration);\r\n\r\n        // create connection object\r\n        const jConnection = this._jHubConnectionFn(configuration.url);\r\n        jConnection.logging = configuration.logging;\r\n        jConnection.qs = configuration.qs;\r\n\r\n        // create a proxy\r\n        const jProxy = jConnection.createHubProxy(configuration.hubName);\r\n        // !!! important. We need to register at least one function otherwise server callbacks will not work.\r\n        jProxy.on('noOp', () => { /* */ });\r\n\r\n        const hubConnection = new SignalRConnection(jConnection, jProxy, this._zone, configuration);\r\n\r\n        return hubConnection;\r\n    }\r\n\r\n    public connect(options?: IConnectionOptions): Promise<ISignalRConnection> {\r\n        return this.createConnection(options).start();\r\n    }\r\n\r\n    private logConfiguration(configuration: SignalRConfiguration) {\r\n        try {\r\n            const serializedQs = JSON.stringify(configuration.qs);\r\n            const serializedTransport = JSON.stringify(configuration.transport);\r\n            if (configuration.logging) {\r\n                this.log(`Creating connecting with...`);\r\n                this.log(`configuration:[url: '${configuration.url}'] ...`);\r\n                this.log(`configuration:[hubName: '${configuration.hubName}'] ...`);\r\n                this.log(`configuration:[qs: '${serializedQs}'] ...`);\r\n                this.log(`configuration:[transport: '${serializedTransport}'] ...`);\r\n            }\r\n        } catch (err) { /* */ }\r\n    }\r\n\r\n    private log(str: string) {\r\n      // tslint:disable-next-line: no-console\r\n      console.log(str);\r\n    }\r\n\r\n    private merge(overrides: IConnectionOptions): SignalRConfiguration {\r\n        const merged: SignalRConfiguration = new SignalRConfiguration();\r\n        merged.hubName = overrides.hubName || this._configuration.hubName;\r\n        merged.url = overrides.url || this._configuration.url;\r\n        merged.qs = overrides.qs || this._configuration.qs;\r\n        merged.logging = this._configuration.logging;\r\n        merged.jsonp = overrides.jsonp || this._configuration.jsonp;\r\n        merged.withCredentials = overrides.withCredentials || this._configuration.withCredentials;\r\n        merged.transport = overrides.transport || this._configuration.transport;\r\n        merged.executeEventsInZone = overrides.executeEventsInZone || this._configuration.executeEventsInZone;\r\n        merged.executeErrorsInZone = overrides.executeErrorsInZone || this._configuration.executeErrorsInZone;\r\n        merged.executeStatusChangeInZone = overrides.executeStatusChangeInZone || this._configuration.executeStatusChangeInZone;\r\n        merged.pingInterval = overrides.pingInterval || this._configuration.pingInterval;\r\n        return merged;\r\n    }\r\n\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule, ModuleWithProviders, NgZone, InjectionToken } from '@angular/core';\r\nimport { SignalR } from '../services/signalr';\r\nimport { SignalRConfiguration } from '../services/signalr.configuration';\r\n\r\nconst SIGNALR_CONFIGURATION = new InjectionToken<SignalRConfiguration>('SIGNALR_CONFIGURATION');\r\n\r\nexport function createSignalr(configuration: SignalRConfiguration, zone: NgZone) {\r\n\r\n  const jConnectionFn = getJConnectionFn();\r\n\r\n  return new SignalR(configuration, zone, jConnectionFn);\r\n}\r\n\r\nfunction getJConnectionFn(): any {\r\n  const jQuery = getJquery();\r\n  const hubConnectionFn = jQuery.hubConnection;\r\n  if (hubConnectionFn == null) {\r\n    throw new Error('Signalr failed to initialize. Script \\'jquery.signalR.js\\' is missing. Please make sure to include \\'jquery.signalR.js\\' script.');\r\n  }\r\n  return hubConnectionFn;\r\n}\r\n\r\nfunction getJquery(): any {\r\n  const jQuery = (window as any).jQuery;\r\n  if (jQuery == null) {\r\n    throw new Error('Signalr failed to initialize. Script \\'jquery.js\\' is missing. Please make sure to include jquery script.');\r\n  }\r\n  return jQuery;\r\n}\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule\r\n  ],\r\n  providers: [{\r\n    provide: SignalR,\r\n    useValue: SignalR\r\n  }]\r\n})\r\nexport class SignalRModule {\r\n  public static forRoot(getSignalRConfiguration: () => void): ModuleWithProviders<SignalRModule> {\r\n    return {\r\n      ngModule: SignalRModule,\r\n      providers: [\r\n        {\r\n          provide: SIGNALR_CONFIGURATION,\r\n          useFactory: getSignalRConfiguration\r\n        },\r\n        {\r\n          deps: [SIGNALR_CONFIGURATION, NgZone],\r\n          provide: SignalR,\r\n          useFactory: (createSignalr)\r\n        }\r\n      ],\r\n    };\r\n  }\r\n  public static forChild(): ModuleWithProviders<SignalRModule> {\r\n    throw new Error('forChild method not implemented');\r\n  }\r\n}\r\n","/*\r\n * Public API Surface of ng2-signalr\r\n */\r\n\r\nexport { ISignalRConnection } from './lib/services/connection/i.signalr.connection';\r\nexport { SignalRConnectionMock } from './lib/services/testing/signalr.connection.mock';\r\nexport { SignalRConnectionMockManager } from './lib/services/testing/signalr.connection.mock.manager';\r\nexport { ConnectionStatus } from './lib/services/connection/connection.status';\r\nexport { ConnectionStatuses } from './lib/services/connection/connection.statuses';\r\nexport { BroadcastEventListener } from './lib/services/eventing/broadcast.event.listener';\r\nexport { SignalRConnection } from './lib/services/connection/signalr.connection';\r\nexport { IConnectionOptions } from './lib/services/connection/connection.options';\r\nexport { ConnectionTransport } from './lib/services/connection/connection.transport';\r\nexport { ConnectionTransports } from './lib/services/connection/connection.transports';\r\nexport { SignalR } from './lib/services/signalr';\r\nexport { SignalRConfiguration } from './lib/services/signalr.configuration';\r\nexport { SignalRModule } from './lib/modules/signalr-module';\r\n\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;AAEM,MAAO,sBAA0B,SAAQ,OAAU,CAAA;AAErD,IAAA,WAAA,CAAmB,KAAa,EAAA;AAC5B,QAAA,KAAK,EAAE,CAAC;QADO,IAAK,CAAA,KAAA,GAAL,KAAK,CAAQ;QAE5B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;SACnG;KACJ;AACJ;;MCAY,qBAAqB,CAAA;AAC9B,IAAA,WAAA,CACY,YAA0B,EAC1B,YAAuC,EACvC,UAA+B,EAAA;QAF/B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAAc;QAC1B,IAAY,CAAA,YAAA,GAAZ,YAAY,CAA2B;QACvC,IAAU,CAAA,UAAA,GAAV,UAAU,CAAqB;KAC1C;AAED,IAAA,IAAI,MAAM,GAAA;QACN,OAAO,IAAI,CAAC,YAAY,CAAC;KAC5B;AAED,IAAA,IAAI,MAAM,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC;KAC3C;AAED,IAAA,IAAI,EAAE,GAAA;AACF,QAAA,OAAO,8BAA8B,CAAC;KACzC;IAEM,IAAI,GAAA;;KAEV;IAEM,KAAK,GAAA;QACR,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAChC;AAEM,IAAA,MAAM,CAAC,MAAc,EAAE,GAAG,UAAiB,EAAA;AAC9C,QAAA,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;KAChC;AAEM,IAAA,MAAM,CAAI,QAAmC,EAAA;QAChD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;KAC9C;AAEM,IAAA,SAAS,CAAI,KAAa,EAAA;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAI,KAAK,CAAC,CAAC;AACtD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AACtB,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEM,IAAA,YAAY,CAAC,KAAa,EAAA;AAC7B,QAAA,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAQ,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;AAC3C,QAAA,OAAO,QAAQ,CAAC;KACnB;AAED,IAAA,aAAa,CAAI,QAAmC,EAAA;QAChD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;KAC1C;AACJ;;MCxDY,4BAA4B,CAAA;AAOrC,IAAA,WAAA,GAAA;AACI,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAO,CAAC;AACnC,QAAA,IAAI,CAAC,QAAQ,GAAG,IAAI,OAAO,EAAoB,CAAC;AAChD,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;AACrB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;KAC3F;AAED,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAI,OAAO,GAAA;QACP,OAAO,IAAI,CAAC,QAAQ,CAAC;KACxB;AAED,IAAA,IAAI,SAAS,GAAA;QACT,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;AACJ;;MCjCY,gBAAgB,CAAA;AAEV,IAAA,SAAA,IAAA,CAAA,KAAK,GAAa,CAAC,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,EAAE,cAAc,CAAC,CAAC,EAAA;AAIjG,IAAA,IAAI,KAAK,GAAA;QACL,OAAO,IAAI,CAAC,MAAM,CAAC;KACtB;AAEA,IAAA,IAAI,IAAI,GAAA;AACL,QAAA,OAAO,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;KACjE;AAED,IAAA,WAAA,CAAY,KAAa,EAAA;QACrB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,GAAG,CAAC,EAAE;AAC5B,YAAA,MAAM,IAAI,KAAK,CAAC,gFAAgF,CAAC,CAAC;SACrG;AACD,QAAA,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;KACvB;IAEM,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,IAAI,CAAC;KACpB;AAEM,IAAA,MAAM,CAAC,KAAuB,EAAA;AACjC,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,YAAA,OAAO,KAAK,CAAC;SAChB;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,KAAK,KAAK,CAAC,KAAK,CAAC;KACtC;;;AC5BL;MACa,kBAAkB,CAAA;AAEZ,IAAA,SAAA,IAAA,CAAA,QAAQ,GACnB;QACI,IAAI,gBAAgB,CAAC,CAAC,CAAC;QACvB,IAAI,gBAAgB,CAAC,CAAC,CAAC;QACvB,IAAI,gBAAgB,CAAC,CAAC,CAAC;QACvB,IAAI,gBAAgB,CAAC,CAAC,CAAC;KAC1B,CAAC,EAAA;AAEC,IAAA,WAAW,UAAU,GAAA;AACxB,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzC;AAEM,IAAA,WAAW,SAAS,GAAA;AACvB,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzC;AAEM,IAAA,WAAW,YAAY,GAAA;AAC1B,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzC;AAEM,IAAA,WAAW,YAAY,GAAA;AAC1B,QAAA,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzC;;;MCjBQ,iBAAiB,CAAA;AAW1B,IAAA,WAAA,CAAY,WAAgB,EAAE,MAAW,EAAE,IAAY,EAAE,aAAmC,EAAA;QAFpF,IAAe,CAAA,eAAA,GAAG,IAAI,CAAC;AAG3B,QAAA,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;AACtB,QAAA,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;AAChC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;AAC/C,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,8BAA8B,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,aAAa,CAAC,OAAO,CAAC;AAC7C,QAAA,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;KACxB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,MAAM,GAAA;QACb,OAAO,IAAI,CAAC,OAAO,CAAC;KACvB;AAED,IAAA,IAAW,cAAc,GAAA;QACvB,OAAO,IAAI,CAAC,eAAe,CAAC;KAC7B;IAED,IAAW,cAAc,CAAC,GAAY,EAAA;AACpC,QAAA,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;KAC5B;IAEM,KAAK,GAAA;AAER,QAAA,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QAE1E,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,MAAM,KAAI;AACjE,YAAA,IAAI,CAAC,YAAY;AACZ,iBAAA,KAAK,CAAC;AACH,gBAAA,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK;AAChC,gBAAA,YAAY,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY;AAC9C,gBAAA,SAAS,EAAE,WAAW;AACtB,gBAAA,eAAe,EAAE,IAAI,CAAC,cAAc,CAAC,eAAe;aACvD,CAAC;iBACD,IAAI,CAAC,MAAK;gBACP,IAAI,CAAC,GAAG,CAAC,8BAA8B,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;AAChE,gBAAA,IAAI,CAAC,GAAG,CAAC,qCAAqC,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACnF,OAAO,CAAC,IAAI,CAAC,CAAC;AAClB,aAAC,CAAC;AACD,iBAAA,IAAI,CAAC,CAAC,KAAU,KAAI;AACjB,gBAAA,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAC9B,MAAM,CAAC,4BAA4B,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AACzD,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,QAAQ,CAAC;KACnB;IAEM,IAAI,GAAA;AACP,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;KAC5B;AAED,IAAA,IAAW,EAAE,GAAA;AACT,QAAA,OAAO,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;KAC/B;AAEM,IAAA,MAAM,CAAC,MAAc,EAAE,GAAG,UAAiB,EAAA;AAC9C,QAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAChB,YAAA,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;SAC/F;AACD,QAAA,IAAI,CAAC,GAAG,CAAC,uCAAuC,MAAM,CAAA,KAAA,CAAO,CAAC,CAAC;QAE/D,MAAM,QAAQ,GAAG,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,MAAM,KAAI;YAClD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,UAAU,CAAC;AACrC,iBAAA,IAAI,CAAC,CAAC,MAAW,KAAI;AAClB,gBAAA,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,CAAA,4CAAA,CAA8C,CAAC,CAAC;gBACpE,OAAO,CAAC,MAAM,CAAC,CAAC;AAChB,gBAAA,IAAI,CAAC,GAAG,CAAC,CAAA,iBAAA,CAAmB,CAAC,CAAC;AAClC,aAAC,CAAC;AACD,iBAAA,IAAI,CAAC,CAAC,GAAQ,KAAI;AACf,gBAAA,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,CAAA,+BAAA,CAAiC,CAAC,CAAC;gBAChE,MAAM,CAAC,GAAG,CAAC,CAAC;AACZ,gBAAA,IAAI,CAAC,GAAG,CAAC,CAAA,iBAAA,CAAmB,CAAC,CAAC;AAClC,aAAC,CAAC,CAAC;AACX,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEM,IAAA,MAAM,CAAI,QAAmC,EAAA;AAChD,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;SAC9E;AAED,QAAA,MAAM,QAAQ,GAAe,CAAC,GAAG,IAAW,KAAI;AAC5C,YAAA,IAAI,CAAC,GAAG,CAAC,MAAK;gBACV,IAAI,MAAM,GAAM,IAAI,CAAC;AACrB,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,oBAAA,MAAM,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;iBACzB;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;AAC5E,gBAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACtB,gBAAA,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACxC,aAAC,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAChD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;KACxC;AAEM,IAAA,aAAa,CAAI,QAAmC,EAAA;AACvD,QAAA,IAAI,QAAQ,IAAI,IAAI,EAAE;AAClB,YAAA,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC;SAC9E;QAED,IAAI,CAAC,GAAG,CAAC,CAAA,gEAAA,EAAmE,QAAQ,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;QAC9F,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YAClC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACxC;AAED,QAAA,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;YACpD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;SAC9C;QAED,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;KACxC;AAEM,IAAA,SAAS,CAAI,KAAa,EAAA;QAC7B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC5E;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAI,KAAK,CAAC,CAAC;AAEtD,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAEtB,QAAA,OAAO,QAAQ,CAAC;KACnB;AAEM,IAAA,YAAY,CAAC,KAAa,EAAA;QAC7B,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,EAAE,EAAE;AAC/B,YAAA,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC5E;AAED,QAAA,MAAM,QAAQ,GAAG,IAAI,sBAAsB,CAAQ,KAAK,CAAC,CAAC;AAE1D,QAAA,MAAM,QAAQ,GAAe,CAAC,GAAG,IAAW,KAAI;AAC5C,YAAA,IAAI,CAAC,GAAG,CAAC,MAAK;gBACV,IAAI,MAAM,GAAU,EAAE,CAAC;AACvB,gBAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjB,MAAM,GAAG,IAAI,CAAC;iBACjB;AACD,gBAAA,IAAI,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;AAC5E,gBAAA,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACpB,gBAAA,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;AACxC,aAAC,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAChD,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACrC,QAAA,OAAO,QAAQ,CAAC;KACnB;IAEO,WAAW,CAAI,QAAoB,EAAE,QAAmC,EAAA;QAC5E,IAAI,CAAC,GAAG,CAAC,CAAA,gEAAA,EAAmE,QAAQ,CAAC,KAAK,CAAE,CAAA,CAAC,CAAC;QAC9F,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAE1C,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE;YACzC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;SACxC;AAED,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAClD;AAEO,IAAA,iBAAiB,CAAC,UAAuD,EAAA;AAC7E,QAAA,IAAI,UAAU,YAAY,KAAK,EAAE;AAC7B,YAAA,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,CAAsB,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;SAC7D;QACD,OAAO,UAAU,CAAC,IAAI,CAAC;KAC1B;IAEO,wBAAwB,GAAA;AAC5B,QAAA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAO,CAAC;QAElC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,KAAU,KAAI;AACnC,YAAA,IAAI,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAChF,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,MAAM,CAAC;KACjB;IAEO,8BAA8B,GAAA;AAClC,QAAA,MAAM,OAAO,GAAG,IAAI,OAAO,EAAoB,CAAC;;;QAGhD,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,MAAW,KAAI;YAC3C,IAAI,CAAC,GAAG,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAC9D,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;AACvD,SAAC,CAAC,CAAC;AACH,QAAA,OAAO,OAAO,CAAC,YAAY,EAAE,CAAC;KACjC;AAEO,IAAA,wBAAwB,CAAI,QAAmC,EAAE,GAAG,IAAW,EAAA;AACnF,QAAA,IAAI,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;QAE5E,IAAI,MAAM,GAAM,IAAI,CAAC;AACrB,QAAA,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;AACjB,YAAA,MAAM,GAAG,IAAI,CAAC,CAAC,CAAM,CAAC;SACzB;AAED,QAAA,IAAI,CAAC,GAAG,CAAC,MAAK;AACV,YAAA,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC1B,SAAC,EAAE,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,CAAC;AAE5C,QAAA,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;KACvC;IAEO,GAAG,CAAC,GAAG,IAAW,EAAA;AACtB,QAAA,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE;YAC/B,OAAO;SACV;;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;KAChC;IAEO,GAAG,CAAC,IAAgB,EAAE,MAAe,EAAA;QACzC,IAAI,MAAM,EAAE;YACR,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;SAChC;aAAM;YACH,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;SAC9C;KACJ;AACJ;;MCnPY,mBAAmB,CAAA;AAI5B,IAAA,IAAI,IAAI,GAAA;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAED,IAAA,WAAA,CAAY,IAAY,EAAA;QACpB,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,EAAE,EAAE;AAC7B,YAAA,MAAM,IAAI,KAAK,CAAC,mFAAmF,CAAC,CAAC;SACxG;AACD,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;KACrB;IAEM,QAAQ,GAAA;QACX,OAAO,IAAI,CAAC,KAAK,CAAC;KACrB;AAEM,IAAA,MAAM,CAAC,KAA0B,EAAA;AACpC,QAAA,IAAI,KAAK,IAAI,IAAI,EAAE;AACf,YAAA,OAAO,KAAK,CAAC;SAChB;AAED,QAAA,OAAO,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC;KACpC;AACJ;;ACxBD;MACa,oBAAoB,CAAA;AAEd,IAAA,SAAA,IAAA,CAAA,UAAU,GACrB;QACI,IAAI,mBAAmB,CAAC,cAAc,CAAC;QACvC,IAAI,mBAAmB,CAAC,aAAa,CAAC;QACtC,IAAI,mBAAmB,CAAC,kBAAkB,CAAC;QAC3C,IAAI,mBAAmB,CAAC,YAAY,CAAC;QACrC,IAAI,mBAAmB,CAAC,MAAM,CAAC;KAClC,CAAC,EAAA;AAEC,IAAA,WAAW,YAAY,GAAA;AAC1B,QAAA,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC7C;AAEM,IAAA,WAAW,WAAW,GAAA;AACzB,QAAA,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC7C;AAEM,IAAA,WAAW,gBAAgB,GAAA;AAC9B,QAAA,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC7C;AAEM,IAAA,WAAW,UAAU,GAAA;AACxB,QAAA,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC7C;AAEM,IAAA,WAAW,IAAI,GAAA;AAClB,QAAA,OAAO,oBAAoB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;KAC7C;;;MC3BQ,oBAAoB,CAAA;AAmC7B,IAAA,WAAA,GAAA;AACG,QAAA,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;AACpB,QAAA,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;AACrB,QAAA,IAAI,CAAC,EAAE,GAAI,IAAI,CAAC;AAChB,QAAA,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;AAChB,QAAA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;AACnB,QAAA,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;AAC7B,QAAA,IAAI,CAAC,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC;AAC3C,QAAA,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;AAChC,QAAA,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;AACjC,QAAA,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;AACtC,QAAA,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;KAC7B;AACJ;;ACnDM,MAAM,yBAAyB,GAAG,IAAI,cAAc,CAAM,2BAA2B,CAAC;;MCQhF,OAAO,CAAA;AAKhB,IAAA,WAAA,CACI,aAAmC,EACnC,IAAY,EACuB,gBAAqB,sHAAoH;AAE5K,QAAA,IAAI,CAAC,cAAc,GAAG,aAAa,CAAC;AACpC,QAAA,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;AAClB,QAAA,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;KAC7C;AAEM,IAAA,gBAAgB,CAAC,OAA4B,EAAA;AAChD,QAAA,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,GAAG,EAAE,CAAC,CAAC;AAEzD,QAAA,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;;QAGrC,MAAM,WAAW,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;AAC9D,QAAA,WAAW,CAAC,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC;AAC5C,QAAA,WAAW,CAAC,EAAE,GAAG,aAAa,CAAC,EAAE,CAAC;;QAGlC,MAAM,MAAM,GAAG,WAAW,CAAC,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;;QAEjE,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAK,GAAU,CAAC,CAAC;AAEnC,QAAA,MAAM,aAAa,GAAG,IAAI,iBAAiB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;AAE5F,QAAA,OAAO,aAAa,CAAC;KACxB;AAEM,IAAA,OAAO,CAAC,OAA4B,EAAA;QACvC,OAAO,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;KACjD;AAEO,IAAA,gBAAgB,CAAC,aAAmC,EAAA;AACxD,QAAA,IAAI;YACA,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YACtD,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;AACpE,YAAA,IAAI,aAAa,CAAC,OAAO,EAAE;AACvB,gBAAA,IAAI,CAAC,GAAG,CAAC,CAAA,2BAAA,CAA6B,CAAC,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,CAAA,qBAAA,EAAwB,aAAa,CAAC,GAAG,CAAQ,MAAA,CAAA,CAAC,CAAC;gBAC5D,IAAI,CAAC,GAAG,CAAC,CAAA,yBAAA,EAA4B,aAAa,CAAC,OAAO,CAAQ,MAAA,CAAA,CAAC,CAAC;AACpE,gBAAA,IAAI,CAAC,GAAG,CAAC,uBAAuB,YAAY,CAAA,MAAA,CAAQ,CAAC,CAAC;AACtD,gBAAA,IAAI,CAAC,GAAG,CAAC,8BAA8B,mBAAmB,CAAA,MAAA,CAAQ,CAAC,CAAC;aACvE;SACJ;AAAC,QAAA,OAAO,GAAG,EAAE,SAAS;KAC1B;AAEO,IAAA,GAAG,CAAC,GAAW,EAAA;;AAErB,QAAA,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;KAClB;AAEO,IAAA,KAAK,CAAC,SAA6B,EAAA;AACvC,QAAA,MAAM,MAAM,GAAyB,IAAI,oBAAoB,EAAE,CAAC;AAChE,QAAA,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAClE,QAAA,MAAM,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;AACtD,QAAA,MAAM,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;AAC7C,QAAA,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAC5D,QAAA,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC,eAAe,IAAI,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;AAC1F,QAAA,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC;AACxE,QAAA,MAAM,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC;AACtG,QAAA,MAAM,CAAC,mBAAmB,GAAG,SAAS,CAAC,mBAAmB,IAAI,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC;AACtG,QAAA,MAAM,CAAC,yBAAyB,GAAG,SAAS,CAAC,yBAAyB,IAAI,IAAI,CAAC,cAAc,CAAC,yBAAyB,CAAC;AACxH,QAAA,MAAM,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;AACjF,QAAA,OAAO,MAAM,CAAC;KACjB;AAxEQ,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,OAAO,yEAQJ,yBAAyB,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,UAAA,EAAA,CAAA,CAAA,EAAA;kHAR5B,OAAO,EAAA,CAAA,CAAA,EAAA;;2FAAP,OAAO,EAAA,UAAA,EAAA,CAAA;kBADnB,UAAU;;0BASF,MAAM;2BAAC,yBAAyB,CAAA;;;ACbzC,MAAM,qBAAqB,GAAG,IAAI,cAAc,CAAuB,uBAAuB,CAAC,CAAC;AAEhF,SAAA,aAAa,CAAC,aAAmC,EAAE,IAAY,EAAA;AAE7E,IAAA,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,OAAO,IAAI,OAAO,CAAC,aAAa,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,GAAA;AACvB,IAAA,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;AAC3B,IAAA,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa,CAAC;AAC7C,IAAA,IAAI,eAAe,IAAI,IAAI,EAAE;AAC3B,QAAA,MAAM,IAAI,KAAK,CAAC,kIAAkI,CAAC,CAAC;KACrJ;AACD,IAAA,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAS,SAAS,GAAA;AAChB,IAAA,MAAM,MAAM,GAAI,MAAc,CAAC,MAAM,CAAC;AACtC,IAAA,IAAI,MAAM,IAAI,IAAI,EAAE;AAClB,QAAA,MAAM,IAAI,KAAK,CAAC,2GAA2G,CAAC,CAAC;KAC9H;AACD,IAAA,OAAO,MAAM,CAAC;AAChB,CAAC;MAWY,aAAa,CAAA;IACjB,OAAO,OAAO,CAAC,uBAAmC,EAAA;QACvD,OAAO;AACL,YAAA,QAAQ,EAAE,aAAa;AACvB,YAAA,SAAS,EAAE;AACT,gBAAA;AACE,oBAAA,OAAO,EAAE,qBAAqB;AAC9B,oBAAA,UAAU,EAAE,uBAAuB;AACpC,iBAAA;AACD,gBAAA;AACE,oBAAA,IAAI,EAAE,CAAC,qBAAqB,EAAE,MAAM,CAAC;AACrC,oBAAA,OAAO,EAAE,OAAO;oBAChB,UAAU,GAAG,aAAa,CAAC;AAC5B,iBAAA;AACF,aAAA;SACF,CAAC;KACH;AACM,IAAA,OAAO,QAAQ,GAAA;AACpB,QAAA,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;KACpD;8GAnBU,aAAa,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA,EAAA;AAAb,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,YAPtB,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;AAOH,IAAA,SAAA,IAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,aAAa,aALb,CAAC;AACV,gBAAA,OAAO,EAAE,OAAO;AAChB,gBAAA,QAAQ,EAAE,OAAO;AAClB,aAAA,CAAC,YALA,YAAY,CAAA,EAAA,CAAA,CAAA,EAAA;;2FAOH,aAAa,EAAA,UAAA,EAAA,CAAA;kBATzB,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;AACR,oBAAA,OAAO,EAAE;wBACP,YAAY;AACb,qBAAA;AACD,oBAAA,SAAS,EAAE,CAAC;AACV,4BAAA,OAAO,EAAE,OAAO;AAChB,4BAAA,QAAQ,EAAE,OAAO;yBAClB,CAAC;AACH,iBAAA,CAAA;;;ACvCD;;AAEG;;ACFH;;AAEG;;;;"}