@webex/calling 3.12.0-next.52 → 3.12.0-next.53
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/CallingClient/CallingClient.js +25 -78
- package/dist/CallingClient/CallingClient.js.map +1 -1
- package/dist/CallingClient/CallingClient.test.js +322 -122
- package/dist/CallingClient/CallingClient.test.js.map +1 -1
- package/dist/CallingClient/calling/callManager.js +29 -2
- package/dist/CallingClient/calling/callManager.js.map +1 -1
- package/dist/CallingClient/calling/callManager.test.js +88 -0
- package/dist/CallingClient/calling/callManager.test.js.map +1 -1
- package/dist/CallingClient/constants.js +1 -0
- package/dist/CallingClient/constants.js.map +1 -1
- package/dist/CallingClient/registration/register.js +10 -0
- package/dist/CallingClient/registration/register.js.map +1 -1
- package/dist/CallingClient/registration/register.test.js +69 -0
- package/dist/CallingClient/registration/register.test.js.map +1 -1
- package/dist/CallingClient/utils/request.js +20 -0
- package/dist/CallingClient/utils/request.js.map +1 -1
- package/dist/CallingClient/utils/request.test.js +31 -0
- package/dist/CallingClient/utils/request.test.js.map +1 -1
- package/dist/module/CallingClient/CallingClient.js +17 -39
- package/dist/module/CallingClient/calling/callManager.js +13 -1
- package/dist/module/CallingClient/constants.js +1 -0
- package/dist/module/CallingClient/registration/register.js +3 -0
- package/dist/module/CallingClient/utils/request.js +7 -0
- package/dist/types/CallingClient/CallingClient.d.ts.map +1 -1
- package/dist/types/CallingClient/calling/callManager.d.ts +1 -0
- package/dist/types/CallingClient/calling/callManager.d.ts.map +1 -1
- package/dist/types/CallingClient/constants.d.ts +1 -0
- package/dist/types/CallingClient/constants.d.ts.map +1 -1
- package/dist/types/CallingClient/registration/register.d.ts.map +1 -1
- package/dist/types/CallingClient/utils/request.d.ts +1 -0
- package/dist/types/CallingClient/utils/request.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","_registerFixtures","_constants2","_types4","_windowsChromiumIceWarmupUtils","_request","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t4","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","jest","mock","getMobiusSocketInstance","fn","mockReturnValue","sendWssRequest","connect","isConnected","on","off","global","crypto","randomUUID","spyOn","mockResolvedValue","undefined","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","getMobiusClusters","mockUSServiceHosts","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","infoSpy","log","logSpy","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","beforeEach","APIRequest","resetInstance","getInstance","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","callingClient","wrap","_context","prev","next","_hostCatalog","_serviceUrls","mobius","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledTimes","toStrictEqual","stop","_callee2","_context2","mockCatalogEU","mockEUServiceHosts","toBe","afterEach","_callee4","_context4","_callee3","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_context6","indicator","domain","_callee5","_context5","serviceData","_callee7","_t","_context7","message","toEqual","assertions","_callee8","_t2","_context8","_callee0","_context0","_callee9","_context9","_callee1","_context1","CONTACT_CENTER","toHaveBeenCalled","_callee10","_context10","toHaveBeenCalledWith","_callee11","createLineSpy","_context11","CallingClient","prototype","rejects","mockRestore","_callee12","_context12","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee13","_context13","request","mockResolvedValueOnce","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","uri","concat","DISCOVERY_URL","addAuthHeader","headers","SPARK_USER_AGENT","getMockRequestTemplate","URL_ENDPOINT","regionBody","clientRegion","countryCode","_callee14","failurePayload","_context14","statusCode","mockRejectedValueOnce","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","objectContaining","_callee15","_context15","mockReset","discovery","region","country","METHOD_START_MESSAGE","toBeCalledOnceWith","mobiusCluster","checkCluster","_ref16","_callee16","mockServiceHosts","mockCatalog","_context16","_x","_x2","each","_ref17","_callee17","clusterName","_t3","_context17","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","_callee18","_context18","_values","lineDict","_keys","getLines","reg","windowEventSpy","deRegSpy","restoreSpy","restartRegisterSpy","registerSpy","metricSpy","_callee19","_context19","useFakeTimers","registrationPayload","window","registration","register","callCollection","_callee20","g","clearKeepaliveSpy","offlineCb","_context20","fetch","calls","stringContaining","_callee21","_context21","any","_callee22","onlineCb","_context22","String","_callee23","mercuryOfflineCb","_context23","mercury","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","_callee24","handleConnectionRestoreSpy","mercuryOnlineCb","_context24","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","REGISTRATION_FILE","getActiveMobiusUrl","NETWORK_FLAP","_callee25","_context25","setStatus","RegistrationStatus","IDLE","_callee26","callKeepaliveSpy","deleteSpy","_context26","createCall","getActiveCalls","state","value","_callee27","_context27","MERCURY_UP","mutex","Mutex","userId","device","clientDeviceUri","url","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","primary","backupMobiusUris","backup","beforeAll","_callee28","_context28","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockDeviceId","lineId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","_callee29","_context29","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT","asyncEventCallback","mobiusSocketMock","_callee30","asyncEventOnCall","_context30","features","developer","requireMock","mockClear","find","_callee31","callEventSpy","_context31","mockImplementation","eventType","callId","callUrl","deviceId","correlationId","getSocketHandlerFor","eventName","onCall","_callee32","_context32","listener","MOBIUS_SOCKET_CONNECTED","MOBIUS_SOCKET_DISCONNECT_REASON","PERMANENT","TRANSIENT","REPLACED","reason","MOBIUS_SOCKET_DISCONNECTED","connected","isMobiusSocketConnected","primaryMobius","backupMobius","_callee33","_context33","_callee34","devices","responsePayload","response","_context34","status","lastSeen","addresses","body","getDevices","HTTP_METHODS","GET","service","ALLOWED_SERVICES","MOBIUS","CISCO_DEVICE_URL","CALLING_USER_AGENT","_callee35","requestCalls","_context35","origRTCPeerConnection","_Class","RTCPeerConnection","_classCallCheck2","constructor","instances","_createClass2","key","createDataChannel","addTransceiver","createOffer","sdp","setLocalDescription","desc","localDescription","setRemoteDescription","remoteDescription","createAnswer","addIceCandidate","close","addEventListener","removeEventListener","_callee36","_context36","windowsChromiumIceWarmup","resolves"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {\n CallType,\n RegistrationStatus,\n ServiceIndicator,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n} from '../common/types';\n/* eslint-disable dot-notation */\nimport {\n CALLING_CLIENT_EVENT_KEYS,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n MOBIUS_SOCKET_DISCONNECT_REASON,\n} from '../Events/types';\nimport log from '../Logger';\nimport {CallingClient, createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport {filterMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {METRIC_EVENT, CONNECTION_ACTION, METRIC_TYPE} from '../Metrics/types';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\nimport {APIRequest} from './utils/request';\n\njest.mock('../mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn().mockReturnValue({\n sendWssRequest: jest.fn(),\n connect: jest.fn(),\n isConnected: jest.fn().mockReturnValue(false),\n on: jest.fn(),\n off: jest.fn(),\n }),\n}));\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockUSServiceHosts);\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n beforeEach(() => {\n APIRequest.resetInstance();\n APIRequest.getInstance({webex});\n });\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockEUServiceHosts);\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusHost']).toBe(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('ContactCenter: uses config domain and does not fetch RTMS domain from catalog', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n webex.internal.services.get = jest.fn();\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n expect(webex.internal.services.get).not.toHaveBeenCalled();\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n */\n it('ContactCenter: fetches RTMS domain from catalog when config domain is empty', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n webex.internal.services.get = jest\n .fn()\n .mockReturnValue('https://cc-rtms.example.com/calling/web/rtms');\n\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n expect(webex.internal.services.get).toHaveBeenCalledWith('wcc-calling-rtms-domain');\n });\n\n it('ContactCenter: init fails when config domain is empty and catalog fetch fails', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n const createLineSpy = jest.spyOn(CallingClient.prototype as any, 'createLine');\n\n webex.internal.services.get = jest.fn(() => {\n throw new Error('catalog unavailable');\n });\n\n await expect(createClient(webex, {serviceData: serviceDataObj})).rejects.toThrow(\n 'Invalid service domain.'\n );\n expect(createLineSpy).not.toHaveBeenCalled();\n\n createLineSpy.mockRestore();\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request.mockResolvedValueOnce(regionPayload).mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(2);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails with final error', async () => {\n const failurePayload = {\n statusCode: 401,\n };\n\n webex.request.mockResolvedValueOnce(regionPayload).mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(2);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockServiceHosts);\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n describe('Connectivity and Mercury event handlers', () => {\n let callingClient: ICallingClient;\n let line;\n let reg;\n let windowEventSpy: jest.SpyInstance;\n let deRegSpy;\n let restoreSpy;\n let restartRegisterSpy;\n let registerSpy;\n let metricSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n webex.request\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n windowEventSpy = jest.spyOn(window, 'addEventListener');\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(reg, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n metricSpy = jest.spyOn(callingClient['metricManager'], 'submitConnectionMetrics');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callingClient['callManager'].callCollection = {};\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('window offline handler sets networkDown and clears keepalive when network is unreachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockRejectedValueOnce(new Error('network fail'));\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Network connectivity probe failed'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n }\n );\n expect(callingClient['isNetworkDown']).toBe(true);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n });\n\n it('window offline handler does not clear keepalive when network is reachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockResolvedValueOnce({});\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(g.fetch).toHaveBeenCalledWith(\n 'https://www.google.com/generate_204',\n expect.any(Object)\n );\n expect(callingClient['isNetworkDown']).toBe(false);\n expect(clearKeepaliveSpy).not.toHaveBeenCalled();\n });\n\n it('window online handler sets networkUpTimestamp and logs', async () => {\n const onlineCb = windowEventSpy.mock.calls[0][1];\n await onlineCb();\n\n expect(callingClient['networkUpTimestamp']).toEqual(expect.any(String));\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: 'handleNetworkOnline',\n });\n });\n\n it('mercury offline submits metrics and sets timestamp', async () => {\n const mercuryOfflineCb = webex.internal.mercury.on.mock.calls[1][1];\n await mercuryOfflineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mercury down, waiting for connection to be up'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'handleMercuryOffline',\n }\n );\n expect(callingClient['mercuryDownTimestamp']).toEqual(expect.any(String));\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n ''\n );\n });\n\n it('handles reconnection with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).toHaveBeenCalledWith(true);\n expect(logSpy).toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).toHaveBeenCalledWith();\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('no reconnection for idle registration with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n reg.setStatus(RegistrationStatus.IDLE);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).not.toHaveBeenCalledWith(true);\n expect(logSpy).not.toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).not.toHaveBeenCalledWith();\n expect(restoreSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('handle calls status check once mercury comes back up after a network flap', async () => {\n callingClient['isNetworkDown'] = true;\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n\n it('handle calls status check once mercury comes back up with stable network', async () => {\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n\n describe('Mobius async_event routing', () => {\n let callingClient: ICallingClient;\n let asyncEventCallback;\n let mobiusSocketMock;\n\n beforeEach(async () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: true});\n APIRequest.resetInstance();\n APIRequest.getInstance({webex});\n\n mobiusSocketMock = (\n jest.requireMock('../mobius-socket') as {\n getMobiusSocketInstance: (w: unknown) => unknown;\n }\n ).getMobiusSocketInstance(webex) as {\n on: jest.Mock;\n off: jest.Mock;\n };\n (mobiusSocketMock.on as jest.Mock).mockClear();\n (mobiusSocketMock.off as jest.Mock).mockClear();\n\n callingClient = await createClient(webex, {\n logger: {level: LOGGER.INFO},\n });\n\n const asyncEventOnCall = (mobiusSocketMock.on as jest.Mock).mock.calls.find(\n (call) => call[0] === 'event:async_event'\n );\n asyncEventCallback = asyncEventOnCall[1];\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: false});\n });\n\n it('routes mobius.* async events to callManager', async () => {\n const callEventSpy = jest\n .spyOn(callingClient['callManager'], 'dequeueWsEvents')\n .mockImplementation(() => undefined);\n\n await asyncEventCallback({\n type: 'async_event',\n data: {\n eventType: 'mobius.call',\n callId: 'fcf86aa5-5539-4c9f-8b72-667786ae9b6c',\n callUrl: 'https://mobius-a.wbx2.com/api/v1/calling/web/devices/d1/calls/c1',\n deviceId: 'd1',\n correlationId: 'corr-1',\n },\n });\n\n expect(callEventSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'async_event',\n data: expect.objectContaining({\n eventType: 'mobius.call',\n }),\n })\n );\n });\n });\n\n describe('Mobius socket connection events', () => {\n let callingClient: ICallingClient;\n let mobiusSocketMock;\n\n const getSocketHandlerFor = (eventName: string) => {\n const onCall = (mobiusSocketMock.on as jest.Mock).mock.calls.find(\n (call) => call[0] === eventName\n );\n\n return onCall[1];\n };\n\n beforeEach(async () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: true});\n APIRequest.resetInstance();\n APIRequest.getInstance({webex});\n\n mobiusSocketMock = (\n jest.requireMock('../mobius-socket') as {\n getMobiusSocketInstance: (w: unknown) => unknown;\n }\n ).getMobiusSocketInstance(webex) as {\n on: jest.Mock;\n off: jest.Mock;\n isConnected: jest.Mock;\n };\n (mobiusSocketMock.on as jest.Mock).mockClear();\n (mobiusSocketMock.off as jest.Mock).mockClear();\n (mobiusSocketMock.isConnected as jest.Mock).mockReturnValue(false);\n\n callingClient = await createClient(webex, {\n logger: {level: LOGGER.INFO},\n });\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: false});\n });\n\n it('emits MOBIUS_SOCKET_CONNECTED when the socket comes online', () => {\n const listener = jest.fn();\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_CONNECTED, listener);\n\n getSocketHandlerFor('online')();\n\n expect(listener).toHaveBeenCalledTimes(1);\n });\n\n it.each([\n ['offline.permanent', MOBIUS_SOCKET_DISCONNECT_REASON.PERMANENT],\n ['offline.transient', MOBIUS_SOCKET_DISCONNECT_REASON.TRANSIENT],\n ['offline.replaced', MOBIUS_SOCKET_DISCONNECT_REASON.REPLACED],\n ])(\n 'emits MOBIUS_SOCKET_DISCONNECTED with the matching reason when %s fires',\n (eventName, reason) => {\n const listener = jest.fn();\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_DISCONNECTED, listener);\n\n getSocketHandlerFor(eventName as string)();\n\n expect(listener).toHaveBeenCalledTimes(1);\n expect(listener).toHaveBeenCalledWith({reason});\n }\n );\n\n it.each([true, false])(\n 'isMobiusSocketConnected() reflects the underlying socket state (%s) when WSS is enabled',\n (connected) => {\n (mobiusSocketMock.isConnected as jest.Mock).mockReturnValue(connected);\n\n expect(callingClient.isMobiusSocketConnected()).toBe(connected);\n }\n );\n });\n\n describe('getDevices', () => {\n let callingClient: ICallingClient;\n const primaryMobius = 'https://mobius.primary/api/v1/calling/web/';\n const backupMobius = 'https://mobius.backup/api/v1/calling/web/';\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n callingClient.primaryMobiusUris = [primaryMobius];\n callingClient.backupMobiusUris = [backupMobius];\n (webex.request as jest.Mock).mockClear();\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n });\n\n it('fetches devices for the provided userId', async () => {\n const devices = [\n {\n deviceId: 'device-1',\n uri: 'https://mobius.test/api/v1/calling/web/devices/device-1',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock).mockResolvedValue(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n expect(webex.request).toHaveBeenCalledWith({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n\n it('falls back to backup Mobius when primary fails', async () => {\n const devices = [\n {\n deviceId: 'device-2',\n uri: 'https://mobius.backup/api/v1/calling/web/devices/device-2',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const failurePayload = {\n statusCode: 404,\n };\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n const requestCalls = (webex.request as jest.Mock).mock.calls;\n expect(requestCalls[0][0]).toEqual({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(requestCalls[1][0]).toEqual({\n uri: 'https://mobius.backup/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n });\n\n describe('windowsChromiumIceWarmup', () => {\n let origRTCPeerConnection: any;\n\n beforeAll(() => {\n origRTCPeerConnection = global.RTCPeerConnection;\n // Minimal mock for RTCPeerConnection\n global.RTCPeerConnection = class {\n static instances: any[] = [];\n iceGatheringState = 'complete';\n localDescription = null;\n remoteDescription = null;\n onicecandidate: ((e: any) => void) | null = null;\n constructor() {\n (this.constructor as any).instances.push(this);\n }\n\n createDataChannel() {\n return {};\n }\n\n addTransceiver() {\n return {};\n }\n\n createOffer() {\n return Promise.resolve({sdp: 'offer', type: 'offer'});\n }\n\n setLocalDescription(desc: any) {\n this.localDescription = desc;\n\n return Promise.resolve();\n }\n\n setRemoteDescription(desc: any) {\n this.remoteDescription = desc;\n\n return Promise.resolve();\n }\n\n createAnswer() {\n return Promise.resolve({sdp: 'answer', type: 'answer'});\n }\n\n addIceCandidate() {\n return Promise.resolve();\n }\n\n close() {}\n addEventListener() {}\n removeEventListener() {}\n };\n });\n\n afterAll(() => {\n global.RTCPeerConnection = origRTCPeerConnection;\n });\n\n it('should complete without throwing', async () => {\n await expect(windowsChromiumIceWarmup({})).resolves.not.toThrow();\n });\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAC,uBAAA,CAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AACA,IAAAI,SAAA,GAAAJ,OAAA;AAKA,IAAAK,OAAA,GAAAL,OAAA;AASA,IAAAM,OAAA,GAAAN,OAAA;AAMA,IAAAO,OAAA,GAAAC,sBAAA,CAAAR,OAAA;AACA,IAAAS,cAAA,GAAAT,OAAA;AAEA,IAAAU,MAAA,GAAAR,uBAAA,CAAAF,OAAA;AAAyC,IAAAW,KAAA,GAAAD,MAAA;AACzC,IAAAE,YAAA,GAAAZ,OAAA;AACA,IAAAa,UAAA,GAAAb,OAAA;AAUA,IAAAc,mBAAA,GAAAd,OAAA;AAEA,IAAAe,sBAAA,GAAAf,OAAA;AAeA,IAAAgB,KAAA,GAAAR,sBAAA,CAAAR,OAAA;AAEA,IAAAiB,iBAAA,GAAAjB,OAAA;AAGA,IAAAkB,WAAA,GAAAlB,OAAA;AACA,IAAAmB,OAAA,GAAAnB,OAAA;AACA,IAAAoB,8BAAA,GAAAZ,sBAAA,CAAAR,OAAA;AACA,IAAAqB,QAAA,GAAArB,OAAA;AAA2C,SAAAE,wBAAAoB,CAAA,EAAAC,CAAA,6BAAAC,QAAA,MAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAtB,uBAAA,YAAAA,wBAAAoB,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,gBAAAW,OAAA,CAAAX,CAAA,0BAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAM,GAAA,CAAAZ,CAAA,UAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,GAAAM,CAAA,CAAAQ,GAAA,CAAAd,CAAA,EAAAQ,CAAA,cAAAO,GAAA,IAAAf,CAAA,gBAAAe,GAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAjB,CAAA,EAAAe,GAAA,OAAAR,CAAA,IAAAD,CAAA,GAAAY,sBAAA,KAAAC,gCAAA,CAAAnB,CAAA,EAAAe,GAAA,OAAAR,CAAA,CAAAM,GAAA,IAAAN,CAAA,CAAAO,GAAA,IAAAR,CAAA,CAAAE,CAAA,EAAAO,GAAA,EAAAR,CAAA,IAAAC,CAAA,CAAAO,GAAA,IAAAf,CAAA,CAAAe,GAAA,WAAAP,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAAA,SAAAmB,QAAApB,CAAA,EAAAG,CAAA,QAAAF,CAAA,GAAAoB,aAAA,CAAArB,CAAA,OAAAsB,6BAAA,QAAAhB,CAAA,GAAAgB,6BAAA,CAAAtB,CAAA,GAAAG,CAAA,KAAAG,CAAA,GAAAA,CAAA,CAAAiB,MAAA,WAAApB,CAAA,WAAAgB,gCAAA,CAAAnB,CAAA,EAAAG,CAAA,EAAAqB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAK,CAAA,YAAAL,CAAA;AAAA,SAAA0B,cAAA3B,CAAA,aAAAG,CAAA,MAAAA,CAAA,GAAAyB,SAAA,CAAAC,MAAA,EAAA1B,CAAA,UAAAF,CAAA,WAAA2B,SAAA,CAAAzB,CAAA,IAAAyB,SAAA,CAAAzB,CAAA,QAAAA,CAAA,OAAAiB,OAAA,CAAAU,MAAA,CAAA7B,CAAA,OAAA8B,OAAA,WAAA5B,CAAA,QAAA6B,gBAAA,CAAAtB,OAAA,EAAAV,CAAA,EAAAG,CAAA,EAAAF,CAAA,CAAAE,CAAA,SAAA8B,iCAAA,GAAAC,wBAAA,CAAAlC,CAAA,EAAAiC,iCAAA,CAAAhC,CAAA,KAAAmB,OAAA,CAAAU,MAAA,CAAA7B,CAAA,GAAA8B,OAAA,WAAA5B,CAAA,IAAAe,sBAAA,CAAAlB,CAAA,EAAAG,CAAA,EAAAgB,gCAAA,CAAAlB,CAAA,EAAAE,CAAA,iBAAAH,CAAA,IA/C3C;AAiDAmC,IAAI,CAACC,IAAI,CAAC,kBAAkB,EAAE;EAAA,OAAO;IACnCC,uBAAuB,EAAEF,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;MACjDC,cAAc,EAAEL,IAAI,CAACG,EAAE,CAAC,CAAC;MACzBG,OAAO,EAAEN,IAAI,CAACG,EAAE,CAAC,CAAC;MAClBI,WAAW,EAAEP,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC,KAAK,CAAC;MAC7CI,EAAE,EAAER,IAAI,CAACG,EAAE,CAAC,CAAC;MACbM,GAAG,EAAET,IAAI,CAACG,EAAE,CAAC;IACf,CAAC;EACH,CAAC;AAAA,CAAC,CAAC;AAEHO,MAAM,CAACC,MAAM,GAAG;EACdC,UAAU,EAAE,SAAZA,UAAUA,CAAA;IAAA,OAAQ,sCAAsC;EAAA;AAC1D,CAAsB;AAEtBZ,IAAI,CAACa,KAAK,CAAC3D,KAAK,EAAE,YAAY,CAAC,CAAC4D,iBAAiB,CAACC,SAAS,CAAC;AAE5DC,QAAQ,CAAC,qBAAqB,EAAE,YAAM;EACpC;;EAEA,IAAMC,cAAc,GAAGjB,IAAI,CAACa,KAAK,CAAC3D,KAAK,EAAE,2BAA2B,CAAC;EACrE,IAAMgE,YAAY,GAAGlB,IAAI,CAACa,KAAK,CAACrE,KAAK,EAAE,WAAW,CAAC;EACnD,IAAM2E,KAAK,GAAG,IAAAC,2BAAiB,EAAC,CAAC;EACjCD,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC,cAAc,CAAC,GAAGC,oCAAa;EACvDJ,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAACE,iBAAiB,GAAGxB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAACqB,yCAAkB,CAAC;EACzF,IAAMC,uBAAuB,GAAGC,wBAAgB,CAACC,OAAO;EACxD,IAAMC,WAAW,GAAG,IAAAC,2BAAc,EAACX,KAAK,EAAEO,uBAAuB,CAAC;EAElE,IAAMK,OAAO,GAAG/B,IAAI,CAACa,KAAK,CAACmB,eAAG,EAAE,MAAM,CAAC;EACvC,IAAMC,MAAM,GAAGjC,IAAI,CAACa,KAAK,CAACmB,eAAG,EAAE,KAAK,CAAC;EACrC,IAAME,OAAO,GAAGlC,IAAI,CAACa,KAAK,CAACmB,eAAG,EAAE,MAAM,CAAC;EAEvC,IAAMG,uBAAuB,GAAGC,OAAO,CAACC,QAAQ;EAChD,SAASC,aAAaA,CAAA,EAAG;IACvB,OAAO,IAAAC,QAAA,CAAAhE,OAAA,CAAY,UAACiE,OAAO,EAAK;MAC9BL,uBAAuB,CAACK,OAAO,CAAC;IAClC,CAAC,CAAC;EACJ;EAEAC,UAAU,CAAC,YAAM;IACfC,mBAAU,CAACC,aAAa,CAAC,CAAC;IAC1BD,mBAAU,CAACE,WAAW,CAAC;MAACzB,KAAK,EAALA;IAAK,CAAC,CAAC;EACjC,CAAC,CAAC;EAEFH,QAAQ,CAAC,4DAA4D,EAAE,YAAM;IAC3E6B,QAAQ,CAAC,YAAM;MACbhB,WAAW,CAACiB,kBAAkB,CAAC,CAAC;MAChC3B,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAC/C,uDAAuD;MACzDH,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC,cAAc,CAAC,GAAGC,oCAAa;IACzD,CAAC,CAAC;IAEFwB,EAAE,CAAC,oEAAoE,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAC,QAAA;MAAA,IAAAC,aAAA;MAAA,OAAAH,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YACvErC,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAACmC,YAAY,GAAGlC,oCAAa;YACpDJ,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAACoC,YAAY,CAACC,MAAM,GAAG,aAAa;YAACL,QAAA,CAAAE,IAAA;YAAA,OAEhC,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAAE,QAAA,CAAAW,IAAA;YACnBC,MAAM,CAAChD,YAAY,CAAC,CAACiD,qBAAqB,CAAC,CAAC,CAAC;YAC7CD,MAAM,CAACd,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAACgB,aAAa,CAAC3C,yCAAkB,CAAC;UAAC;UAAA;YAAA,OAAA6B,QAAA,CAAAe,IAAA;QAAA;MAAA,GAAAlB,OAAA;IAAA,CAC3E,GAAC;IAEFJ,EAAE,CAAC,0DAA0D,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAoB,SAAA;MAAA,IAAAlB,aAAA;MAAA,OAAAH,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAkB,SAAA;QAAA,kBAAAA,SAAA,CAAAhB,IAAA,GAAAgB,SAAA,CAAAf,IAAA;UAAA;YAC7DrC,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAACmC,YAAY,GAAGe,oCAAa;YACpDrD,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAACE,iBAAiB,GAAGxB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAACqE,yCAAkB,CAAC;YACzFtD,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,GAC/C,yDAAyD;YAACiD,SAAA,CAAAf,IAAA;YAAA,OAEhC,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAAmB,SAAA,CAAAN,IAAA;YAEnBC,MAAM,CAACd,aAAa,CAAC,YAAY,CAAC,CAAC,CAACsB,IAAI,CACtC,yDACF,CAAC;YACDR,MAAM,CAACd,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAACgB,aAAa,CAACK,yCAAkB,CAAC;UAAC;UAAA;YAAA,OAAAF,SAAA,CAAAF,IAAA;QAAA;MAAA,GAAAC,QAAA;IAAA,CAC3E,GAAC;EACJ,CAAC,CAAC;EAEFtD,QAAQ,CAAC,mBAAmB,EAAE,YAAM;IAClC,IAAIoC,aAAyC;IAE7CuB,SAAS,CAAC,YAAM;MACd9C,WAAW,CAACiB,kBAAkB,CAAC,CAAC;MAChCM,aAAa,GAAGrC,SAAS;IAC3B,CAAC,CAAC;;IAEF;AACJ;AACA;AACA;IACIgC,EAAE,CAAC,2DAA2D,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA0B,SAAA;MAAA,OAAA3B,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAwB,SAAA;QAAA,kBAAAA,SAAA,CAAAtB,IAAA,GAAAsB,SAAA,CAAArB,IAAA;UAAA;YAC9DU,MAAM,kBAAAlB,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAA4B,SAAA;cAAA,OAAA7B,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA0B,SAAA;gBAAA,kBAAAA,SAAA,CAAAxB,IAAA,GAAAwB,SAAA,CAAAvB,IAAA;kBAAA;oBAAAuB,SAAA,CAAAvB,IAAA;oBAAA,OACiB,IAAAI,2BAAY,EAACzC,KAAK,CAAC;kBAAA;oBAAzCiC,aAAa,GAAA2B,SAAA,CAAAd,IAAA;oBACbC,MAAM,CAACd,aAAa,CAAC,CAAC4B,UAAU,CAAC,CAAC;kBAAC;kBAAA;oBAAA,OAAAD,SAAA,CAAAV,IAAA;gBAAA;cAAA,GAAAS,QAAA;YAAA,CACpC,GAAC,CAACG,GAAG,CAACC,OAAO,CAACC,KAAK,CAAC;UAAC;UAAA;YAAA,OAAAN,SAAA,CAAAR,IAAA;QAAA;MAAA,GAAAO,QAAA;IAAA,CACvB,GAAC;;IAEF;AACJ;AACA;AACA;AACA;AACA;AACA;IACI7B,EAAE,CAAC,sDAAsD,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAkC,SAAA;MAAA,IAAAC,cAAA;MAAA,OAAApC,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAiC,SAAA;QAAA,kBAAAA,SAAA,CAAA/B,IAAA,GAAA+B,SAAA,CAAA9B,IAAA;UAAA;YACzD;YACM6B,cAAmB,GAAG;cAACE,SAAS,EAAE,EAAE;cAAEC,MAAM,EAAE;YAAE,CAAC;YAEvDtB,MAAM,kBAAAlB,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAAuC,SAAA;cAAA,OAAAxC,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAqC,SAAA;gBAAA,kBAAAA,SAAA,CAAAnC,IAAA,GAAAmC,SAAA,CAAAlC,IAAA;kBAAA;oBAAAkC,SAAA,CAAAlC,IAAA;oBAAA,OACiB,IAAAI,2BAAY,EAACzC,KAAK,EAAE;sBAACwE,WAAW,EAAEN;oBAAc,CAAC,CAAC;kBAAA;oBAAxEjC,aAAa,GAAAsC,SAAA,CAAAzB,IAAA;oBACbC,MAAM,CAACd,aAAa,CAAC,CAAC4B,UAAU,CAAC,CAAC;kBAAC;kBAAA;oBAAA,OAAAU,SAAA,CAAArB,IAAA;gBAAA;cAAA,GAAAoB,QAAA;YAAA,CACpC,GAAC,CAACR,GAAG,CAACC,OAAO,CAACC,KAAK,CAAC;UAAC;UAAA;YAAA,OAAAG,SAAA,CAAAjB,IAAA;QAAA;MAAA,GAAAe,QAAA;IAAA,CACvB,GAAC;;IAEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACIrC,EAAE,CAAC,gDAAgD,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA0C,SAAA;MAAA,IAAAP,cAAA,EAAAQ,EAAA;MAAA,OAAA5C,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAyC,SAAA;QAAA,kBAAAA,SAAA,CAAAvC,IAAA,GAAAuC,SAAA,CAAAtC,IAAA;UAAA;YACnD;YACM6B,cAAmB,GAAG;cAACE,SAAS,EAAE,MAAM;cAAEC,MAAM,EAAE;YAAkB,CAAC;YAAAM,SAAA,CAAAvC,IAAA;YAAAuC,SAAA,CAAAtC,IAAA;YAAA,OAGnD,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAACwE,WAAW,EAAEN;YAAc,CAAC,CAAC;UAAA;YAAxEjC,aAAa,GAAA0C,SAAA,CAAA7B,IAAA;YAAA6B,SAAA,CAAAtC,IAAA;YAAA;UAAA;YAAAsC,SAAA,CAAAvC,IAAA;YAAAsC,EAAA,GAAAC,SAAA;YAEb5B,MAAM,CAAC2B,EAAA,CAAEE,OAAO,CAAC,CAACC,OAAO,CACvB,wFACF,CAAC;UAAC;YAEJ9B,MAAM,CAAC+B,UAAU,CAAC,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAH,SAAA,CAAAzB,IAAA;QAAA;MAAA,GAAAuB,QAAA;IAAA,CACtB,GAAC;;IAEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI7C,EAAE,CAAC,wCAAwC,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAgD,SAAA;MAAA,IAAAb,cAAA,EAAAc,GAAA;MAAA,OAAAlD,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA+C,SAAA;QAAA,kBAAAA,SAAA,CAAA7C,IAAA,GAAA6C,SAAA,CAAA5C,IAAA;UAAA;YACrC6B,cAAc,GAAG;cAACE,SAAS,EAAE5D,wBAAgB,CAACC,OAAO;cAAE4D,MAAM,EAAE;YAAM,CAAC;YAAAY,SAAA,CAAA7C,IAAA;YAAA6C,SAAA,CAAA5C,IAAA;YAAA,OAGpD,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAACwE,WAAW,EAAEN;YAAc,CAAC,CAAC;UAAA;YAAxEjC,aAAa,GAAAgD,SAAA,CAAAnC,IAAA;YAAAmC,SAAA,CAAA5C,IAAA;YAAA;UAAA;YAAA4C,SAAA,CAAA7C,IAAA;YAAA4C,GAAA,GAAAC,SAAA;YAEblC,MAAM,CAACiC,GAAA,CAAEJ,OAAO,CAAC,CAACC,OAAO,CAAC,yBAAyB,CAAC;UAAC;YAEvD9B,MAAM,CAAC+B,UAAU,CAAC,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAG,SAAA,CAAA/B,IAAA;QAAA;MAAA,GAAA6B,QAAA;IAAA,CACtB,GAAC;;IAEF;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;IACInD,EAAE,CAAC,4CAA4C,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAmD,SAAA;MAAA,IAAAhB,cAAA;MAAA,OAAApC,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAiD,SAAA;QAAA,kBAAAA,SAAA,CAAA/C,IAAA,GAAA+C,SAAA,CAAA9C,IAAA;UAAA;YACzC6B,cAAc,GAAG;cAACE,SAAS,EAAE5D,wBAAgB,CAACC,OAAO;cAAE4D,MAAM,EAAE;YAAE,CAAC;YAExEtB,MAAM,kBAAAlB,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAAqD,SAAA;cAAA,OAAAtD,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAmD,SAAA;gBAAA,kBAAAA,SAAA,CAAAjD,IAAA,GAAAiD,SAAA,CAAAhD,IAAA;kBAAA;oBAAAgD,SAAA,CAAAhD,IAAA;oBAAA,OACiB,IAAAI,2BAAY,EAACzC,KAAK,EAAE;sBAACwE,WAAW,EAAEN;oBAAc,CAAC,CAAC;kBAAA;oBAAxEjC,aAAa,GAAAoD,SAAA,CAAAvC,IAAA;oBACbC,MAAM,CAACd,aAAa,CAAC,CAAC4B,UAAU,CAAC,CAAC;kBAAC;kBAAA;oBAAA,OAAAwB,SAAA,CAAAnC,IAAA;gBAAA;cAAA,GAAAkC,QAAA;YAAA,CACpC,GAAC,CAACtB,GAAG,CAACC,OAAO,CAACC,KAAK,CAAC;UAAC;UAAA;YAAA,OAAAmB,SAAA,CAAAjC,IAAA;QAAA;MAAA,GAAAgC,QAAA;IAAA,CACvB,GAAC;IAEFtD,EAAE,CAAC,+EAA+E,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAuD,SAAA;MAAA,IAAApB,cAAA;MAAA,OAAApC,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAqD,SAAA;QAAA,kBAAAA,SAAA,CAAAnD,IAAA,GAAAmD,SAAA,CAAAlD,IAAA;UAAA;YAC5E6B,cAAc,GAAG;cACrBE,SAAS,EAAE5D,wBAAgB,CAACgF,cAAc;cAC1CnB,MAAM,EAAE;YACV,CAAC;YAEDrE,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC5C,GAAG,GAAGsB,IAAI,CAACG,EAAE,CAAC,CAAC;YAACuG,SAAA,CAAAlD,IAAA;YAAA,OAClB,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAACwE,WAAW,EAAEN;YAAc,CAAC,CAAC;UAAA;YAAxEjC,aAAa,GAAAsD,SAAA,CAAAzC,IAAA;YACbC,MAAM,CAACd,aAAa,CAAC,CAAC4B,UAAU,CAAC,CAAC;YAClCd,MAAM,CAAC/C,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC5C,GAAG,CAAC,CAACuG,GAAG,CAAC2B,gBAAgB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAF,SAAA,CAAArC,IAAA;QAAA;MAAA,GAAAoC,QAAA;IAAA,CAC5D,GAAC;;IAEF;AACJ;AACA;AACA;IACI1D,EAAE,CAAC,6EAA6E,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA2D,UAAA;MAAA,IAAAxB,cAAA;MAAA,OAAApC,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAyD,UAAA;QAAA,kBAAAA,UAAA,CAAAvD,IAAA,GAAAuD,UAAA,CAAAtD,IAAA;UAAA;YAC1E6B,cAAc,GAAG;cAACE,SAAS,EAAE5D,wBAAgB,CAACgF,cAAc;cAAEnB,MAAM,EAAE;YAAE,CAAC;YAE/ErE,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC5C,GAAG,GAAGsB,IAAI,CAC/BG,EAAE,CAAC,CAAC,CACJC,eAAe,CAAC,8CAA8C,CAAC;YAAC0G,UAAA,CAAAtD,IAAA;YAAA,OAE7C,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAACwE,WAAW,EAAEN;YAAc,CAAC,CAAC;UAAA;YAAxEjC,aAAa,GAAA0D,UAAA,CAAA7C,IAAA;YACbC,MAAM,CAACd,aAAa,CAAC,CAAC4B,UAAU,CAAC,CAAC;YAClCd,MAAM,CAAC/C,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC5C,GAAG,CAAC,CAACqI,oBAAoB,CAAC,yBAAyB,CAAC;UAAC;UAAA;YAAA,OAAAD,UAAA,CAAAzC,IAAA;QAAA;MAAA,GAAAwC,SAAA;IAAA,CACrF,GAAC;IAEF9D,EAAE,CAAC,+EAA+E,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA8D,UAAA;MAAA,IAAA3B,cAAA,EAAA4B,aAAA;MAAA,OAAAhE,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA6D,UAAA;QAAA,kBAAAA,UAAA,CAAA3D,IAAA,GAAA2D,UAAA,CAAA1D,IAAA;UAAA;YAC5E6B,cAAc,GAAG;cAACE,SAAS,EAAE5D,wBAAgB,CAACgF,cAAc;cAAEnB,MAAM,EAAE;YAAE,CAAC;YACzEyB,aAAa,GAAGjH,IAAI,CAACa,KAAK,CAACsG,4BAAa,CAACC,SAAS,EAAS,YAAY,CAAC;YAE9EjG,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAAC5C,GAAG,GAAGsB,IAAI,CAACG,EAAE,CAAC,YAAM;cAC1C,MAAM,IAAIgF,KAAK,CAAC,qBAAqB,CAAC;YACxC,CAAC,CAAC;YAAC+B,UAAA,CAAA1D,IAAA;YAAA,OAEGU,MAAM,CAAC,IAAAN,2BAAY,EAACzC,KAAK,EAAE;cAACwE,WAAW,EAAEN;YAAc,CAAC,CAAC,CAAC,CAACgC,OAAO,CAACnC,OAAO,CAC9E,yBACF,CAAC;UAAA;YACDhB,MAAM,CAAC+C,aAAa,CAAC,CAAChC,GAAG,CAAC2B,gBAAgB,CAAC,CAAC;YAE5CK,aAAa,CAACK,WAAW,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAJ,UAAA,CAAA7C,IAAA;QAAA;MAAA,GAAA2C,SAAA;IAAA,CAC7B,GAAC;IAEFjE,EAAE,CAAC,uBAAuB,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAqE,UAAA;MAAA,OAAAtE,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAmE,UAAA;QAAA,kBAAAA,UAAA,CAAAjE,IAAA,GAAAiE,UAAA,CAAAhE,IAAA;UAAA;YAAAgE,UAAA,CAAAhE,IAAA;YAAA,OACJ,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAAoE,UAAA,CAAAvD,IAAA;YACbC,MAAM,CAACd,aAAa,CAAC,CAAC4B,UAAU,CAAC,CAAC;YAClCd,MAAM,CAACd,aAAa,CAACqE,eAAe,CAAC,CAACzC,UAAU,CAAC,CAAC;YAClDd,MAAM,CAACd,aAAa,CAACqE,eAAe,CAAC,CAAC,CAAC,CAACzB,OAAO,CAACjC,aAAM,CAACC,IAAI,CAAC;UAAC;UAAA;YAAA,OAAAwD,UAAA,CAAAnD,IAAA;QAAA;MAAA,GAAAkD,SAAA;IAAA,CAC9D,GAAC;EACJ,CAAC,CAAC;EAEFvG,QAAQ,CAAC,+BAA+B,EAAE,YAAM;IAC9C,IAAIoC,aAAa;IAEjBuB,SAAS,CAAC,YAAM;MACd3E,IAAI,CAAC0H,cAAc,CAAC,CAAC;MACrB1H,IAAI,CAAC2H,aAAa,CAAC,CAAC;MACpBvE,aAAa,CAACN,kBAAkB,CAAC,CAAC;MAClCjB,WAAW,CAACiB,kBAAkB,CAAC,CAAC;MAChCM,aAAa,GAAGrC,SAAS;MACzBf,IAAI,CAAC4H,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF7E,EAAE,CAAC,+CAA+C,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA2E,UAAA;MAAA,OAAA5E,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAyE,UAAA;QAAA,kBAAAA,UAAA,CAAAvE,IAAA,GAAAuE,UAAA,CAAAtE,IAAA;UAAA;YAClDrC,KAAK,CAAC4G,OAAO,CAACC,qBAAqB,CAACC,oCAAa,CAAC,CAACD,qBAAqB,CAACE,uCAAgB,CAAC;YAACJ,UAAA,CAAAtE,IAAA;YAAA,OAErE,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAA0E,UAAA,CAAA7D,IAAA;YAEbC,MAAM,CAAC/C,KAAK,CAAC4G,OAAO,CAAC,CAACI,eAAe,CAAC,CAAC,CAAC;YACxCjE,MAAM,CAACd,aAAa,CAACgF,iBAAiB,CAAC,CAACpC,OAAO,CAAC,CAACqC,iCAAU,CAAC,CAAC;YAC7DnE,MAAM,CAACjD,cAAc,CAAC,CAACgE,GAAG,CAACqD,UAAU,CAAC,CAAC;YAEvCpE,MAAM,CAAC/C,KAAK,CAAC4G,OAAO,CAAC,CAACQ,aAAa,CAAC,CAAC,EAAE;cACrCC,MAAM,EAAE,KAAK;cACbC,GAAG,KAAAC,MAAA,CAAKC,wBAAa,CAAE;cACvBC,aAAa,EAAE,KAAK;cACpBC,OAAO,MAAAhJ,gBAAA,CAAAtB,OAAA,MACJuK,2BAAgB,EAAG,IAAI;YAE5B,CAAC,CAAC;YAEF5E,MAAM,CAAC/C,KAAK,CAAC4G,OAAO,CAAC,CAACQ,aAAa,CAAC,CAAC,EAAA/I,aAAA,CAAAA,aAAA;cACnCgJ,MAAM,EAAE;YAAK,GACV,IAAAO,gCAAsB,EAAC,CAAC;cAC3BN,GAAG,KAAAC,MAAA,CAAKtF,aAAa,CAAC,YAAY,CAAC,EAAAsF,MAAA,CAAGM,uBAAY,kBAAAN,MAAA,CAAeO,iCAAU,CAACC,YAAY,mBAAAR,MAAA,CAAgBO,iCAAU,CAACE,WAAW;YAAE,EACjI,CAAC;UAAC;UAAA;YAAA,OAAArB,UAAA,CAAAzD,IAAA;QAAA;MAAA,GAAAwD,SAAA;IAAA,CACJ,GAAC;IAEF9E,EAAE,CAAC,6FAA6F,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAkG,UAAA;MAAA,IAAAC,cAAA;MAAA,OAAApG,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAiG,UAAA;QAAA,kBAAAA,UAAA,CAAA/F,IAAA,GAAA+F,UAAA,CAAA9F,IAAA;UAAA;YAC1F6F,cAAc,GAAG;cACrBE,UAAU,EAAE;YACd,CAAC;YAEDpI,KAAK,CAAC4G,OAAO,CAACC,qBAAqB,CAACC,oCAAa,CAAC,CAACuB,qBAAqB,CAACH,cAAc,CAAC;YAACC,UAAA,CAAA9F,IAAA;YAAA,OAEnE,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAAkG,UAAA,CAAArF,IAAA;YAEbC,MAAM,CAACjD,cAAc,CAAC,CAACwI,cAAc,CAACJ,cAAc,EAAEnF,MAAM,CAACwF,QAAQ,CAAC,CAAC,EAAE;cACvEC,IAAI,EAAEC,8BAAmB;cACzBpB,MAAM,EAAE;YACV,CAAC,CAAC;YACFtE,MAAM,CAAC/C,KAAK,CAAC4G,OAAO,CAAC,CAACI,eAAe,CAAC,CAAC,CAAC;YAExCjE,MAAM,CAACd,aAAa,CAACgF,iBAAiB,CAAC,CAACpC,OAAO,CAAC,IAAA0C,MAAA,CAC3CtF,aAAa,CAAC,YAAY,CAAC,EAAAsF,MAAA,CAAGM,uBAAY,EAC9C,CAAC;YAEF9E,MAAM,CAAC/C,KAAK,CAAC4G,OAAO,CAAC,CAACQ,aAAa,CAAC,CAAC,EAAE;cACrCC,MAAM,EAAE,KAAK;cACbC,GAAG,KAAAC,MAAA,CAAKC,wBAAa,CAAE;cACvBC,aAAa,EAAE,KAAK;cACpBC,OAAO,MAAAhJ,gBAAA,CAAAtB,OAAA,MACJuK,2BAAgB,EAAG,IAAI;YAE5B,CAAC,CAAC;YAEF5E,MAAM,CAAChC,OAAO,CAAC,CAACuH,cAAc,+GAE5BvF,MAAM,CAAC2F,gBAAgB,CAAC;cACtBF,IAAI,EAAEC,8BAAmB;cACzBpB,MAAM,EAAE;YACV,CAAC,CACH,CAAC;UAAC;UAAA;YAAA,OAAAc,UAAA,CAAAjF,IAAA;QAAA;MAAA,GAAA+E,SAAA;IAAA,CACH,GAAC;IAEFrG,EAAE,CAAC,iGAAiG,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA4G,UAAA;MAAA,OAAA7G,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA0G,UAAA;QAAA,kBAAAA,UAAA,CAAAxG,IAAA,GAAAwG,UAAA,CAAAvG,IAAA;UAAA;YACpGzB,OAAO,CAACiI,SAAS,CAAC,CAAC;YACnB7I,KAAK,CAAC4G,OAAO,CAACC,qBAAqB,CAACE,uCAAgB,CAAC;YAAC6B,UAAA,CAAAvG,IAAA;YAAA,OAEhC,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cACxC8I,SAAS,EAAE;gBACTC,MAAM,EAAE,cAAc;gBACtBC,OAAO,EAAE;cACX,CAAC;cACDtG,MAAM,EAAE;gBACNC,KAAK,EAAEC,aAAM,CAACC;cAChB;YACF,CAAC,CAAC;UAAA;YARFZ,aAAa,GAAA2G,UAAA,CAAA9F,IAAA;YAUbC,MAAM,CAACd,aAAa,CAACgF,iBAAiB,CAAC,CAACpC,OAAO,CAAC,CAACqC,iCAAU,CAAC,CAAC;YAE7DnE,MAAM,CAACnC,OAAO,CAAC,CAACgF,oBAAoB,CAACqD,gCAAoB,EAAE;cACzDT,IAAI,EAAE,eAAe;cACrBnB,MAAM,EAAE;YACV,CAAC,CAAC;YAEFtE,MAAM,CAAC/C,KAAK,CAAC4G,OAAO,CAAC,CAACsC,kBAAkB,CAAA7K,aAAA,CAAAA,aAAA,KACnC,IAAAuJ,gCAAsB,EAAC,CAAC;cAC3BN,GAAG,KAAAC,MAAA,CAAKtF,aAAa,CAAC,YAAY,CAAC,EAAAsF,MAAA,CAAGM,uBAAY,kBAAAN,MAAA,CAAeO,iCAAU,CAACC,YAAY,mBAAAR,MAAA,CAAgBO,iCAAU,CAACE,WAAW,CAAE;cAChIX,MAAM,EAAE;YAAK,EACd,CAAC;YAEFtE,MAAM,CAACjD,cAAc,CAAC,CAACgE,GAAG,CAAC2B,gBAAgB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAmD,UAAA,CAAA1F,IAAA;QAAA;MAAA,GAAAyF,SAAA;IAAA,CAC/C,GAAC;EACJ,CAAC,CAAC;EAEF9I,QAAQ,CAAC,mDAAmD,EAAE,YAAM;IAClE,IAAMsJ,aAAa,GAAG,CACpB,0CAA0C,EAC1C,sCAAsC,EACtC,yCAAyC,CAC1C;IAED,IAAMC,YAAY;MAAA,IAAAC,MAAA,OAAAxH,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAG,SAAAuH,UACnBC,gBAA+B,EAC/BC,WAA0C;QAAA,IAAAvH,aAAA;QAAA,OAAAH,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAuH,UAAA;UAAA,kBAAAA,UAAA,CAAArH,IAAA,GAAAqH,UAAA,CAAApH,IAAA;YAAA;cAE1CrC,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAACmC,YAAY,GAAGkH,WAAW;cAClDxJ,KAAK,CAACE,QAAQ,CAACC,QAAQ,CAACE,iBAAiB,GAAGxB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAACsK,gBAAgB,CAAC;cAACE,UAAA,CAAApH,IAAA;cAAA,OAC5D,IAAAI,2BAAY,EAACzC,KAAK,EAAE;gBAAC0C,MAAM,EAAE;kBAACC,KAAK,EAAEC,aAAM,CAACC;gBAAI;cAAC,CAAC,CAAC;YAAA;cAAzEZ,aAAa,GAAAwH,UAAA,CAAA3G,IAAA;cAEnBC,MAAM,CAACd,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAACgB,aAAa,CAACsG,gBAAgB,CAAC;YAAC;YAAA;cAAA,OAAAE,UAAA,CAAAvG,IAAA;UAAA;QAAA,GAAAoG,SAAA;MAAA,CACzE;MAAA,gBATKF,YAAYA,CAAAM,EAAA,EAAAC,GAAA;QAAA,OAAAN,MAAA,CAAAjL,KAAA,OAAAE,SAAA;MAAA;IAAA,GASjB;IAEDsD,EAAE,CAACgI,IAAI,CAACT,aAAa,CAAC,CAAC,IAAI;MAAA,IAAAU,MAAA,OAAAhI,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA+H,UAAOC,WAAW;QAAA,IAAAC,GAAA;QAAA,OAAAlI,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA+H,UAAA;UAAA,kBAAAA,UAAA,CAAA7H,IAAA,GAAA6H,UAAA,CAAA5H,IAAA;YAAA;cAAA2H,GAAA,GACrCD,WAAW;cAAAE,UAAA,CAAA5H,IAAA,GAAA2H,GAAA,KACZ,0CAA0C,OAAAA,GAAA,KAG1C,sCAAsC,OAAAA,GAAA,KAGtC,yCAAyC;cAAA;YAAA;cAL5CZ,YAAY,CAAC9F,yCAAkB,EAAED,oCAAa,CAAC;cAAC,OAAA4G,UAAA,CAAAC,MAAA;YAAA;cAGhDd,YAAY,CAACe,0CAAmB,EAAEC,uCAAgB,CAAC;cAAC,OAAAH,UAAA,CAAAC,MAAA;YAAA;cAGpDd,YAAY,CAACiB,4CAAqB,EAAEC,uCAAgB,CAAC;cAAC,OAAAL,UAAA,CAAAC,MAAA;YAAA;cAAA,OAAAD,UAAA,CAAAC,MAAA;YAAA;YAAA;cAAA,OAAAD,UAAA,CAAA/G,IAAA;UAAA;QAAA,GAAA4G,SAAA;MAAA,CAK3D;MAAA,iBAAAS,GAAA;QAAA,OAAAV,MAAA,CAAAzL,KAAA,OAAAE,SAAA;MAAA;IAAA,IAAC;EACJ,CAAC,CAAC;EAEFuB,QAAQ,CAAC,qBAAqB,EAAE,YAAM;IACpC,IAAIoC,aAAa;IACjB,IAAIuI,IAAI;IAERlJ,UAAU,kBAAAO,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAA0I,UAAA;MAAA,OAAA3I,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAwI,UAAA;QAAA,kBAAAA,UAAA,CAAAtI,IAAA,GAAAsI,UAAA,CAAArI,IAAA;UAAA;YAAAqI,UAAA,CAAArI,IAAA;YAAA,OACa,IAAAI,2BAAY,EAACzC,KAAK,CAAC;UAAA;YAAzCiC,aAAa,GAAAyI,UAAA,CAAA5H,IAAA;YACb0H,IAAI,GAAG,IAAAG,OAAA,CAAAvN,OAAA,EAAc6E,aAAa,CAAC2I,QAAQ,CAAC,CAAC,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAF,UAAA,CAAAxH,IAAA;QAAA;MAAA,GAAAuH,SAAA;IAAA,CACjD,GAAC;IAEFjH,SAAS,CAAC,YAAM;MACd3E,IAAI,CAAC0H,cAAc,CAAC,CAAC;MACrB1H,IAAI,CAAC2H,aAAa,CAAC,CAAC;MACpBvE,aAAa,CAACN,kBAAkB,CAAC,CAAC;MAClCjB,WAAW,CAACiB,kBAAkB,CAAC,CAAC;MAChCM,aAAa,GAAGrC,SAAS;MACzBf,IAAI,CAAC4H,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF7E,EAAE,CAAC,uCAAuC,EAAE,YAAM;MAChDmB,MAAM,CAACd,aAAa,CAAC2I,QAAQ,CAAC,CAAC/G,UAAU,CAAC,CAAC;MAC3Cd,MAAM,CAACyH,IAAI,CAAC,CAAC3G,UAAU,CAAC,CAAC;MACzBd,MAAM,CAAC,IAAA8H,KAAA,CAAAzN,OAAA,EAAY6E,aAAa,CAAC2I,QAAQ,CAAC,CAACrM,MAAM,CAAC,CAACsG,OAAO,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC;IAEFjD,EAAE,CAAC,0BAA0B,EAAE,YAAM;MACnCmB,MAAM,CAACd,aAAa,CAAC6I,QAAQ,CAAC,CAACjH,UAAU,CAAC,CAAC;MAC3Cd,MAAM,CAACd,aAAa,CAAC6I,QAAQ,CAAC,CAAC,CAAC,CAACjG,OAAO,CAAC5C,aAAa,CAAC2I,QAAQ,CAAC;IAClE,CAAC,CAAC;EACJ,CAAC,CAAC;EAEF/K,QAAQ,CAAC,yCAAyC,EAAE,YAAM;IACxD,IAAIoC,aAA6B;IACjC,IAAIuI,IAAI;IACR,IAAIO,GAAG;IACP,IAAIC,cAAgC;IACpC,IAAIC,QAAQ;IACZ,IAAIC,UAAU;IACd,IAAIC,kBAAkB;IACtB,IAAIC,WAAW;IACf,IAAIC,SAAS;IAEb/J,UAAU,kBAAAO,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAAuJ,UAAA;MAAA,OAAAxJ,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAqJ,UAAA;QAAA,kBAAAA,UAAA,CAAAnJ,IAAA,GAAAmJ,UAAA,CAAAlJ,IAAA;UAAA;YACTxD,IAAI,CAAC2M,aAAa,CAAC,CAAC;YACpBxL,KAAK,CAAC4G,OAAO,CACVC,qBAAqB,CAACC,oCAAa,CAAC,CACpCD,qBAAqB,CAACE,uCAAgB,CAAC,CACvCF,qBAAqB,CAAC4E,0CAAmB,CAAC;YAE7CT,cAAc,GAAGnM,IAAI,CAACa,KAAK,CAACgM,MAAM,EAAE,kBAAkB,CAAC;YAACH,UAAA,CAAAlJ,IAAA;YAAA,OAClC,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAAsJ,UAAA,CAAAzI,IAAA;YACb0H,IAAI,GAAG,IAAAG,OAAA,CAAAvN,OAAA,EAAc6E,aAAa,CAAC2I,QAAQ,CAAC,CAAC,CAAC,CAAU;YACxDG,GAAG,GAAGP,IAAI,CAACmB,YAAY;YAACJ,UAAA,CAAAlJ,IAAA;YAAA,OAClBmI,IAAI,CAACoB,QAAQ,CAAC,CAAC;UAAA;YAErBX,QAAQ,GAAGpM,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,YAAY,CAAC;YACxCG,UAAU,GAAGrM,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,6BAA6B,CAAC;YAC3DI,kBAAkB,GAAGtM,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,qBAAqB,CAAC;YAC3DK,WAAW,GAAGvM,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,gCAAgC,CAAC;YAC/DM,SAAS,GAAGxM,IAAI,CAACa,KAAK,CAACuC,aAAa,CAAC,eAAe,CAAC,EAAE,yBAAyB,CAAC;UAAC;UAAA;YAAA,OAAAsJ,UAAA,CAAArI,IAAA;QAAA;MAAA,GAAAoI,SAAA;IAAA,CACnF,GAAC;IAEF9H,SAAS,CAAC,YAAM;MACd3E,IAAI,CAAC0H,cAAc,CAAC,CAAC;MACrB1H,IAAI,CAAC2H,aAAa,CAAC,CAAC;MACpBvE,aAAa,CAACN,kBAAkB,CAAC,CAAC;MAClCM,aAAa,CAAC,aAAa,CAAC,CAAC4J,cAAc,GAAG,CAAC,CAAC;MAChDnL,WAAW,CAACiB,kBAAkB,CAAC,CAAC;MAChCM,aAAa,GAAGrC,SAAS;MACzBf,IAAI,CAAC4H,aAAa,CAAC,CAAC;IACtB,CAAC,CAAC;IAEF7E,EAAE,CAAC,0FAA0F,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA+J,UAAA;MAAA,IAAAC,CAAA,EAAAC,iBAAA,EAAAC,SAAA;MAAA,OAAAnK,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAgK,UAAA;QAAA,kBAAAA,UAAA,CAAA9J,IAAA,GAAA8J,UAAA,CAAA7J,IAAA;UAAA;YACvF0J,CAAC,GAAGxM,MAAM;YAChBwM,CAAC,CAACI,KAAK,GAAGtN,IAAI,CAACG,EAAE,CAAC,CAAC,CAACqJ,qBAAqB,CAAC,IAAIrE,KAAK,CAAC,cAAc,CAAC,CAAC;YAE9DgI,iBAAiB,GAAGnN,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,qBAAqB,CAAC;YAE1DkB,SAAS,GAAGjB,cAAc,CAAClM,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAAF,UAAA,CAAA7J,IAAA;YAAA,OAC3C4J,SAAS,CAAC,CAAC;UAAA;YAEjBlJ,MAAM,CAAChC,OAAO,CAAC,CAAC6E,oBAAoB,CAClC7C,MAAM,CAACsJ,gBAAgB,CAAC,mCAAmC,CAAC,EAC5D;cACE7D,IAAI,EAAEC,8BAAmB;cACzBpB,MAAM,EAAE;YACV,CACF,CAAC;YACDtE,MAAM,CAACd,aAAa,CAAC,eAAe,CAAC,CAAC,CAACsB,IAAI,CAAC,IAAI,CAAC;YACjDR,MAAM,CAACiJ,iBAAiB,CAAC,CAACvG,gBAAgB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAyG,UAAA,CAAAhJ,IAAA;QAAA;MAAA,GAAA4I,SAAA;IAAA,CAC9C,GAAC;IAEFlK,EAAE,CAAC,2EAA2E,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAuK,UAAA;MAAA,IAAAP,CAAA,EAAAC,iBAAA,EAAAC,SAAA;MAAA,OAAAnK,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAqK,UAAA;QAAA,kBAAAA,UAAA,CAAAnK,IAAA,GAAAmK,UAAA,CAAAlK,IAAA;UAAA;YACxE0J,CAAC,GAAGxM,MAAM;YAChBwM,CAAC,CAACI,KAAK,GAAGtN,IAAI,CAACG,EAAE,CAAC,CAAC,CAAC6H,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAEvCmF,iBAAiB,GAAGnN,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,qBAAqB,CAAC;YAE1DkB,SAAS,GAAGjB,cAAc,CAAClM,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAAG,UAAA,CAAAlK,IAAA;YAAA,OAC3C4J,SAAS,CAAC,CAAC;UAAA;YAEjBlJ,MAAM,CAACgJ,CAAC,CAACI,KAAK,CAAC,CAACvG,oBAAoB,CAClC,qCAAqC,EACrC7C,MAAM,CAACyJ,GAAG,CAAChO,MAAM,CACnB,CAAC;YACDuE,MAAM,CAACd,aAAa,CAAC,eAAe,CAAC,CAAC,CAACsB,IAAI,CAAC,KAAK,CAAC;YAClDR,MAAM,CAACiJ,iBAAiB,CAAC,CAAClI,GAAG,CAAC2B,gBAAgB,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA8G,UAAA,CAAArJ,IAAA;QAAA;MAAA,GAAAoJ,SAAA;IAAA,CAClD,GAAC;IAEF1K,EAAE,CAAC,wDAAwD,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA0K,UAAA;MAAA,IAAAC,QAAA;MAAA,OAAA5K,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAyK,UAAA;QAAA,kBAAAA,UAAA,CAAAvK,IAAA,GAAAuK,UAAA,CAAAtK,IAAA;UAAA;YACrDqK,QAAQ,GAAG1B,cAAc,CAAClM,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAAO,UAAA,CAAAtK,IAAA;YAAA,OAC1CqK,QAAQ,CAAC,CAAC;UAAA;YAEhB3J,MAAM,CAACd,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC4C,OAAO,CAAC9B,MAAM,CAACyJ,GAAG,CAACI,MAAM,CAAC,CAAC;YACvE7J,MAAM,CAACnC,OAAO,CAAC,CAACgF,oBAAoB,CAACqD,gCAAoB,EAAE;cACzDT,IAAI,EAAEC,8BAAmB;cACzBpB,MAAM,EAAE;YACV,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAsF,UAAA,CAAAzJ,IAAA;QAAA;MAAA,GAAAuJ,SAAA;IAAA,CACJ,GAAC;IAEF7K,EAAE,CAAC,oDAAoD,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA8K,UAAA;MAAA,IAAAC,gBAAA;MAAA,OAAAhL,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA6K,UAAA;QAAA,kBAAAA,UAAA,CAAA3K,IAAA,GAAA2K,UAAA,CAAA1K,IAAA;UAAA;YACjDyK,gBAAgB,GAAG9M,KAAK,CAACE,QAAQ,CAAC8M,OAAO,CAAC3N,EAAE,CAACP,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAAW,UAAA,CAAA1K,IAAA;YAAA,OAC7DyK,gBAAgB,CAAC,CAAC;UAAA;YAExB/J,MAAM,CAAChC,OAAO,CAAC,CAAC6E,oBAAoB,CAClC7C,MAAM,CAACsJ,gBAAgB,CAAC,+CAA+C,CAAC,EACxE;cACE7D,IAAI,EAAEC,8BAAmB;cACzBpB,MAAM,EAAE;YACV,CACF,CAAC;YACDtE,MAAM,CAACd,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC4C,OAAO,CAAC9B,MAAM,CAACyJ,GAAG,CAACI,MAAM,CAAC,CAAC;YACzE7J,MAAM,CAACsI,SAAS,CAAC,CAACzF,oBAAoB,CACpCqH,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAACC,YAAY,EAC9BC,mBAAW,CAACC,UAAU,EACtBvK,MAAM,CAACyJ,GAAG,CAACI,MAAM,CAAC,EAClB,EACF,CAAC;UAAC;UAAA;YAAA,OAAAG,UAAA,CAAA7J,IAAA;QAAA;MAAA,GAAA2J,SAAA;IAAA,CACH,GAAC;IAEFjL,EAAE,CAAC,0FAA0F,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAwL,UAAA;MAAA,IAAAC,0BAAA,EAAAC,eAAA;MAAA,OAAA3L,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAwL,UAAA;QAAA,kBAAAA,UAAA,CAAAtL,IAAA,GAAAsL,UAAA,CAAArL,IAAA;UAAA;YACvFmL,0BAA0B,GAAG3O,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,6BAA6B,CAAC;YAEjF9I,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI;YACrCA,aAAa,CAAC,sBAAsB,CAAC,GAAG,0BAA0B;YAClEA,aAAa,CAAC,oBAAoB,CAAC,GAAG,0BAA0B;YAE1DwL,eAAe,GAAGzN,KAAK,CAACE,QAAQ,CAAC8M,OAAO,CAAC3N,EAAE,CAACP,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAAsB,UAAA,CAAArL,IAAA;YAAA,OAC5DoL,eAAe,CAAC,CAAC;UAAA;YAEvB;YACA5O,IAAI,CAAC8O,mBAAmB,CAACC,+BAAoB,GAAG,GAAG,CAAC;YAACF,UAAA,CAAArL,IAAA;YAAA,OAE/ClB,aAAa,CAAC,CAAC;UAAA;YAErB4B,MAAM,CAACyK,0BAA0B,CAAC,CAAC5H,oBAAoB,CAAC,IAAI,CAAC;YAC7D7C,MAAM,CAACjC,MAAM,CAAC,CAAC8E,oBAAoB,CACjC,kEAAkE,EAClE;cACE4C,IAAI,EAAEqF,4BAAiB;cACvBxG,MAAM,EAAE;YACV,CACF,CAAC;YACDtE,MAAM,CAACkI,QAAQ,CAAC,CAACrF,oBAAoB,CAAC,CAAC;YACvC7C,MAAM,CAACmI,UAAU,CAAC,CAACtF,oBAAoB,CAAC,6BAA6B,CAAC;YACtE7C,MAAM,CAACoI,kBAAkB,CAAC,CAACvF,oBAAoB,CAAC,6BAA6B,CAAC;YAC9E7C,MAAM,CAACqI,WAAW,CAAC,CAACxF,oBAAoB,CAAC,6BAA6B,EAAE,CACtEmF,GAAG,CAAC+C,kBAAkB,CAAC,CAAC,CACzB,CAAC;YACF/K,MAAM,CAACqI,WAAW,CAAC,CAACxF,oBAAoB,CAAC,6BAA6B,EAAE,CAACsB,iCAAU,CAAC,CAAC;YACrFnE,MAAM,CAACsI,SAAS,CAAC,CAACzF,oBAAoB,CACpCqH,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAACY,YAAY,EAC9BV,mBAAW,CAACC,UAAU,EACtB,0BAA0B,EAC1B,0BACF,CAAC;UAAC;UAAA;YAAA,OAAAI,UAAA,CAAAxK,IAAA;QAAA;MAAA,GAAAqK,SAAA;IAAA,CACH,GAAC;IAEF3L,EAAE,CAAC,2GAA2G,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAiM,UAAA;MAAA,IAAAR,0BAAA,EAAAC,eAAA;MAAA,OAAA3L,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA+L,UAAA;QAAA,kBAAAA,UAAA,CAAA7L,IAAA,GAAA6L,UAAA,CAAA5L,IAAA;UAAA;YACxGmL,0BAA0B,GAAG3O,IAAI,CAACa,KAAK,CAACqL,GAAG,EAAE,6BAA6B,CAAC;YAEjF9I,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI;YACrCA,aAAa,CAAC,sBAAsB,CAAC,GAAG,0BAA0B;YAClEA,aAAa,CAAC,oBAAoB,CAAC,GAAG,0BAA0B;YAChE8I,GAAG,CAACmD,SAAS,CAACC,0BAAkB,CAACC,IAAI,CAAC;YAEhCX,eAAe,GAAGzN,KAAK,CAACE,QAAQ,CAAC8M,OAAO,CAAC3N,EAAE,CAACP,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAA6B,UAAA,CAAA5L,IAAA;YAAA,OAC5DoL,eAAe,CAAC,CAAC;UAAA;YAEvB;YACA5O,IAAI,CAAC8O,mBAAmB,CAACC,+BAAoB,GAAG,GAAG,CAAC;YAACK,UAAA,CAAA5L,IAAA;YAAA,OAE/ClB,aAAa,CAAC,CAAC;UAAA;YAErB4B,MAAM,CAACyK,0BAA0B,CAAC,CAAC1J,GAAG,CAAC8B,oBAAoB,CAAC,IAAI,CAAC;YACjE7C,MAAM,CAACjC,MAAM,CAAC,CAACgD,GAAG,CAAC8B,oBAAoB,CACrC,kEAAkE,EAClE;cACE4C,IAAI,EAAEqF,4BAAiB;cACvBxG,MAAM,EAAE;YACV,CACF,CAAC;YACDtE,MAAM,CAACkI,QAAQ,CAAC,CAACnH,GAAG,CAAC8B,oBAAoB,CAAC,CAAC;YAC3C7C,MAAM,CAACmI,UAAU,CAAC,CAACpH,GAAG,CAAC8B,oBAAoB,CAAC,6BAA6B,CAAC;YAC1E7C,MAAM,CAACoI,kBAAkB,CAAC,CAACrH,GAAG,CAAC8B,oBAAoB,CAAC,6BAA6B,CAAC;YAClF7C,MAAM,CAACqI,WAAW,CAAC,CAACtH,GAAG,CAAC8B,oBAAoB,CAAC,6BAA6B,EAAE,CAC1EmF,GAAG,CAAC+C,kBAAkB,CAAC,CAAC,CACzB,CAAC;YACF/K,MAAM,CAACqI,WAAW,CAAC,CAACtH,GAAG,CAAC8B,oBAAoB,CAAC,6BAA6B,EAAE,CAACsB,iCAAU,CAAC,CAAC;YACzFnE,MAAM,CAACsI,SAAS,CAAC,CAACzF,oBAAoB,CACpCqH,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAACY,YAAY,EAC9BV,mBAAW,CAACC,UAAU,EACtB,0BAA0B,EAC1B,0BACF,CAAC;UAAC;UAAA;YAAA,OAAAW,UAAA,CAAA/K,IAAA;QAAA;MAAA,GAAA8K,SAAA;IAAA,CACH,GAAC;IAEFpM,EAAE,CAAC,2EAA2E,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAsM,UAAA;MAAA,IAAA1Q,IAAA,EAAA2Q,gBAAA,EAAAC,SAAA,EAAAd,eAAA;MAAA,OAAA3L,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAsM,UAAA;QAAA,kBAAAA,UAAA,CAAApM,IAAA,GAAAoM,UAAA,CAAAnM,IAAA;UAAA;YAC9EJ,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI;YAC/BtE,IAAI,GAAGsE,aAAa,CAAC,aAAa,CAAC,CAACwM,UAAU,CAAC,CAAC;YAChDH,gBAAgB,GAAGzP,IAAI,CAC1Ba,KAAK,CAAC/B,IAAI,EAAE,YAAY,CAAC,CACzB0K,qBAAqB,CAAC,IAAIrE,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC/CuK,SAAS,GAAG1P,IAAI,CAACa,KAAK,CAAC/B,IAAI,EAAE,QAAQ,CAAC;YAC5CoF,MAAM,CAAC,IAAA8H,KAAA,CAAAzN,OAAA,EAAY6E,aAAa,CAAC,aAAa,CAAC,CAACyM,cAAc,CAAC,CAAC,CAAC,CAACnQ,MAAM,CAAC,CAACgF,IAAI,CAAC,CAAC,CAAC;YAE3EkK,eAAe,GAAGzN,KAAK,CAACE,QAAQ,CAAC8M,OAAO,CAAC3N,EAAE,CAACP,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAAoC,UAAA,CAAAnM,IAAA;YAAA,OAC5DoL,eAAe,CAAC,CAAC;UAAA;YAEvB1K,MAAM,CAACuL,gBAAgB,CAAC,CAAC7I,gBAAgB,CAAC,CAAC;YAAC+I,UAAA,CAAAnM,IAAA;YAAA,OAEtClB,aAAa,CAAC,CAAC;UAAA;YAErB4B,MAAM,CAAChC,OAAO,CAAC,CAAC6E,oBAAoB,CAAC7C,MAAM,CAACsJ,gBAAgB,CAAC,uBAAuB,CAAC,EAAE;cACrF7D,IAAI,EAAEC,8BAAmB;cACzBpB,MAAM,EAAE;YACV,CAAC,CAAC;YACFtE,MAAM,CAACpF,IAAI,CAAC,kBAAkB,CAAC,CAACgR,KAAK,CAACC,KAAK,CAAC,CAACrL,IAAI,CAAC,gBAAgB,CAAC;YACnER,MAAM,CAACwL,SAAS,CAAC,CAAC9I,gBAAgB,CAAC,CAAC;YAEpC1C,MAAM,CAAC,IAAA8H,KAAA,CAAAzN,OAAA,EAAY2N,GAAG,CAACrK,WAAW,CAACgO,cAAc,CAAC,CAAC,CAAC,CAACnQ,MAAM,CAAC,CAACgF,IAAI,CAAC,CAAC,CAAC;YACpER,MAAM,CAACsI,SAAS,CAAC,CAACzF,oBAAoB,CACpCqH,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAACY,YAAY,EAC9BV,mBAAW,CAACC,UAAU,EACtBvK,MAAM,CAACyJ,GAAG,CAACI,MAAM,CAAC,EAClB7J,MAAM,CAACyJ,GAAG,CAACI,MAAM,CACnB,CAAC;UAAC;UAAA;YAAA,OAAA4B,UAAA,CAAAtL,IAAA;QAAA;MAAA,GAAAmL,SAAA;IAAA,CACH,GAAC;IAEFzM,EAAE,CAAC,0EAA0E,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA8M,UAAA;MAAA,IAAAlR,IAAA,EAAA2Q,gBAAA,EAAAC,SAAA,EAAAd,eAAA;MAAA,OAAA3L,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA4M,UAAA;QAAA,kBAAAA,UAAA,CAAA1M,IAAA,GAAA0M,UAAA,CAAAzM,IAAA;UAAA;YACvE1E,IAAI,GAAGsE,aAAa,CAAC,aAAa,CAAC,CAACwM,UAAU,CAAC,CAAC;YAChDH,gBAAgB,GAAGzP,IAAI,CAC1Ba,KAAK,CAAC/B,IAAI,EAAE,YAAY,CAAC,CACzB0K,qBAAqB,CAAC,IAAIrE,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAC/CuK,SAAS,GAAG1P,IAAI,CAACa,KAAK,CAAC/B,IAAI,EAAE,QAAQ,CAAC;YAC5CoF,MAAM,CAAC,IAAA8H,KAAA,CAAAzN,OAAA,EAAY6E,aAAa,CAAC,aAAa,CAAC,CAACyM,cAAc,CAAC,CAAC,CAAC,CAACnQ,MAAM,CAAC,CAACgF,IAAI,CAAC,CAAC,CAAC;YAE3EkK,eAAe,GAAGzN,KAAK,CAACE,QAAQ,CAAC8M,OAAO,CAAC3N,EAAE,CAACP,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAA0C,UAAA,CAAAzM,IAAA;YAAA,OAC5DoL,eAAe,CAAC,CAAC;UAAA;YAEvB1K,MAAM,CAACuL,gBAAgB,CAAC,CAAC7I,gBAAgB,CAAC,CAAC;YAACqJ,UAAA,CAAAzM,IAAA;YAAA,OAEtClB,aAAa,CAAC,CAAC;UAAA;YAErB4B,MAAM,CAAChC,OAAO,CAAC,CAAC6E,oBAAoB,CAAC7C,MAAM,CAACsJ,gBAAgB,CAAC,uBAAuB,CAAC,EAAE;cACrF7D,IAAI,EAAEC,8BAAmB;cACzBpB,MAAM,EAAE;YACV,CAAC,CAAC;YACFtE,MAAM,CAACpF,IAAI,CAAC,kBAAkB,CAAC,CAACgR,KAAK,CAACC,KAAK,CAAC,CAACrL,IAAI,CAAC,gBAAgB,CAAC;YACnER,MAAM,CAACwL,SAAS,CAAC,CAAC9I,gBAAgB,CAAC,CAAC;YAEpC1C,MAAM,CAAC,IAAA8H,KAAA,CAAAzN,OAAA,EAAY2N,GAAG,CAACrK,WAAW,CAACgO,cAAc,CAAC,CAAC,CAAC,CAACnQ,MAAM,CAAC,CAACgF,IAAI,CAAC,CAAC,CAAC;YACpER,MAAM,CAACsI,SAAS,CAAC,CAACzF,oBAAoB,CACpCqH,oBAAY,CAACC,gBAAgB,EAC7BC,yBAAiB,CAAC4B,UAAU,EAC5B1B,mBAAW,CAACC,UAAU,EACtBvK,MAAM,CAACyJ,GAAG,CAACI,MAAM,CAAC,EAClB7J,MAAM,CAACyJ,GAAG,CAACI,MAAM,CACnB,CAAC;UAAC;UAAA;YAAA,OAAAkC,UAAA,CAAA5L,IAAA;QAAA;MAAA,GAAA2L,SAAA;IAAA,CACH,GAAC;EACJ,CAAC,CAAC;;EAEF;EACAhP,QAAQ,CAAC,eAAe,EAAE,YAAM;IAC9B,IAAMmP,KAAK,GAAG,IAAIC,iBAAK,CAAC,CAAC;IACzB,IAAMC,MAAM,GAAGlP,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACD,MAAM;IAC3C,IAAME,eAAe,GAAGpP,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACE,GAAG;IACjD,IAAMC,UAAU,GAAG,IAAAC,uBAAgB,EAAC,IAAAC,oCAA0B,EAAC,CAAC,EAAEC,qBAAG,CAAC;IACtE,IAAMxI,iBAAiB,GAAGpI,IAAI,CAACG,EAAE,CAAC;MAAA,OAAMsQ,UAAU,CAACI,OAAO;IAAA,EAAC;IAC3D,IAAMC,gBAAgB,GAAG9Q,IAAI,CAACG,EAAE,CAAC;MAAA,OAAMsQ,UAAU,CAACM,MAAM;IAAA,EAAC;IAEzD,IAAI3N,aAAa;IACjB,IAAIuI,IAAU;IAEdqF,SAAS,kBAAAhO,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAA+N,UAAA;MAAA,IAAA1D,KAAA;MAAA,OAAAtK,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA6N,UAAA;QAAA,kBAAAA,UAAA,CAAA3N,IAAA,GAAA2N,UAAA,CAAA1N,IAAA;UAAA;YAAA0N,UAAA,CAAA1N,IAAA;YAAA,OACc,IAAAI,2BAAY,EAACzC,KAAK,CAAC;UAAA;YAAzCiC,aAAa,GAAA8N,UAAA,CAAAjN,IAAA;YACb0H,IAAI,GAAG,IAAIwF,aAAI,CACbd,MAAM,EACNE,eAAe,EACfJ,KAAK,EACL/H,iBAAiB,CAAC,CAAC,EACnB0I,gBAAgB,CAAC,CAAC,EAClB/M,aAAM,CAACC,IACT,CAAC;YACKuJ,KAAK,GAAG,IAAAzB,OAAA,CAAAvN,OAAA,EAAcsD,WAAW,CAACgO,cAAc,CAAC,CAAC,CAAC;YACzDtC,KAAK,CAAC3N,OAAO,CAAC,UAACd,IAAI,EAAK;cACtBA,IAAI,CAACsS,GAAG,CAAC,CAAC;YACZ,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAF,UAAA,CAAA7M,IAAA;QAAA;MAAA,GAAA4M,SAAA;IAAA,CACJ,GAAC;IAEFpO,QAAQ,CAAC,YAAM;MACbO,aAAa,CAACN,kBAAkB,CAAC,CAAC;MAClCjB,WAAW,CAACiB,kBAAkB,CAAC,CAAC;IAClC,CAAC,CAAC;IAEFC,EAAE,CAAC,8BAA8B,EAAE,YAAM;MACvCmB,MAAM,CAACd,aAAa,CAACiO,eAAe,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAACjQ,QAAQ,CAACiP,MAAM,CAACD,MAAM,CAAC,CAAC3L,IAAI,CAC5E,sCACF,CAAC;IACH,CAAC,CAAC;IAEF3B,EAAE,CAAC,mDAAmD,EAAE,YAAM;MAC5D4I,IAAI,CAACoB,QAAQ,CAAC,CAAC;MACfpB,IAAI,CAAC4F,QAAQ,CAAC;QAACC,OAAO,EAAE,QAAQ;QAAEC,IAAI,EAAEC,gBAAQ,CAACC;MAAG,CAAC,CAAC;MACtDzN,MAAM,CAACd,aAAa,CAACwO,gBAAgB,CAAC,CAAC,CAAC,CAAC5L,OAAO,CAACjF,SAAS,CAAC;IAC7D,CAAC,CAAC;IAEFgC,EAAE,CAAC,4BAA4B,EAAE,YAAM;MACrC4I,IAAI,CAACoB,QAAQ,CAAC,CAAC;MACf,IAAM8E,QAAQ,GAAGlG,IAAI,CAAC4F,QAAQ,CAAC;QAACC,OAAO,EAAE,MAAM;QAAEC,IAAI,EAAEC,gBAAQ,CAACC;MAAG,CAAC,CAAC;MACrE,IAAMG,SAAS,GAAGnG,IAAI,CAAC4F,QAAQ,CAAC;QAACC,OAAO,EAAE,MAAM;QAAEC,IAAI,EAAEC,gBAAQ,CAACC;MAAG,CAAC,CAAC;MACtE;MACAE,QAAQ,CAAC,WAAW,CAAC,GAAG,IAAI;MAC5BA,QAAQ,CAAC,YAAY,CAAC,GAAG,KAAK;MAC9BA,QAAQ,CAAC,kBAAkB,CAAC,CAAC/B,KAAK,CAACC,KAAK,GAAG,oBAAoB;;MAE/D;MACA+B,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI;MAC7BA,SAAS,CAAC,MAAM,CAAC,GAAG,IAAI;MACxBA,SAAS,CAAC,YAAY,CAAC,GAAG,KAAK;MAC/BA,SAAS,CAAC,kBAAkB,CAAC,CAAChC,KAAK,CAACC,KAAK,GAAG,aAAa;MAEzD,IAAMgC,eAAsC,GAAG;QAC7CC,iBAAiB,EAAEH,QAAiB;QACpCI,kBAAkB,EAAEH;MACtB,CAAC;MAED9R,IAAI,CAACa,KAAK,CAACgB,WAAW,EAAE,gBAAgB,CAAC,CAACzB,eAAe,CAAC2R,eAAe,CAAC;MAC1E7N,MAAM,CAACd,aAAa,CAACwO,gBAAgB,CAAC,CAAC,CAAC,CAAC5L,OAAO,CAAC6L,QAAQ,CAAC;IAC5D,CAAC,CAAC;IACF9O,EAAE,CAAC,0BAA0B,EAAE,YAAM;MACnCK,aAAa,CAAC2I,QAAQ,GAAG;QACvBmG,YAAY,EAAE;UAACC,MAAM,EAAE;QAAY,CAAU;QAC7CC,aAAa,EAAE;UAACD,MAAM,EAAE;QAAa;MACvC,CAAC;MAED,IAAMN,QAAQ,GAAGlG,IAAI,CAAC4F,QAAQ,CAAC;QAACC,OAAO,EAAE,MAAM;QAAEC,IAAI,EAAEC,gBAAQ,CAACC;MAAG,CAAC,CAAC;MACrE,IAAMG,SAAS,GAAGnG,IAAI,CAAC4F,QAAQ,CAAC;QAACC,OAAO,EAAE,MAAM;QAAEC,IAAI,EAAEC,gBAAQ,CAACC;MAAG,CAAC,CAAC;MACtE,IAAMU,SAAS,GAAG1G,IAAI,CAAC4F,QAAQ,CAAC;QAACC,OAAO,EAAE,MAAM;QAAEC,IAAI,EAAEC,gBAAQ,CAACC;MAAG,CAAC,CAAC;MAEtEE,QAAQ,CAACM,MAAM,GAAG,YAAY;MAC9BL,SAAS,CAACK,MAAM,GAAG,aAAa;MAChCE,SAAS,CAACF,MAAM,GAAG,aAAa;MAEhC,IAAMJ,eAAsC,GAAG;QAC7CC,iBAAiB,EAAEH,QAAiB;QACpCI,kBAAkB,EAAEH,SAAkB;QACtCQ,kBAAkB,EAAED;MACtB,CAAC;MAEDrS,IAAI,CAACa,KAAK,CAACgB,WAAW,EAAE,gBAAgB,CAAC,CAACzB,eAAe,CAAC2R,eAAe,CAAC;MAC1E7N,MAAM,CAACd,aAAa,CAACyM,cAAc,CAAC,CAAC,CAAC,CAAC7J,OAAO,CAAC;QAC7CuM,UAAU,EAAE,CAACV,QAAQ,CAAC;QACtBW,WAAW,EAAE,CAACV,SAAS,EAAEO,SAAS;MACpC,CAAC,CAAC;IACJ,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFrR,QAAQ,CAAC,yBAAyB,EAAE,YAAM;IACxC,IAAMyR,MAAM,GAAGtR,KAAK,CAACE,QAAQ,CAAC8M,OAAO,CAAC3N,EAAE;IACxC,IAAI4C,aAA6B;IAEjCX,UAAU,kBAAAO,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAAwP,UAAA;MAAA,OAAAzP,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAsP,UAAA;QAAA,kBAAAA,UAAA,CAAApP,IAAA,GAAAoP,UAAA,CAAAnP,IAAA;UAAA;YAAAmP,UAAA,CAAAnP,IAAA;YAAA,OACa,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAAuP,UAAA,CAAA1O,IAAA;UAAA;UAAA;YAAA,OAAA0O,UAAA,CAAAtO,IAAA;QAAA;MAAA,GAAAqO,SAAA;IAAA,CACd,GAAC;IAEF/N,SAAS,CAAC,YAAM;MACdvB,aAAa,CAACN,kBAAkB,CAAC,CAAC;MAClCjB,WAAW,CAACiB,kBAAkB,CAAC,CAAC;IAClC,CAAC,CAAC;IAEFC,EAAE,CAAC,uCAAuC,EAAE,UAAC6P,IAAI,EAAK;MACpD1O,MAAM,CAAC+B,UAAU,CAAC,CAAC,CAAC;MACpB7C,aAAa,CAAC5C,EAAE,CAACqS,iCAAyB,CAACC,iBAAiB,EAAE,UAACC,KAAuB,EAAK;QACzF7O,MAAM,CAAC6O,KAAK,CAACC,IAAI,CAAC,CAAChN,OAAO,CAACiN,sCAAkB,CAACD,IAAI,CAAC;QACnDJ,IAAI,CAAC,CAAC;MACR,CAAC,CAAC;MAEF1O,MAAM,CAACuO,MAAM,CAACxS,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACvH,OAAO,CAACkN,yBAAiB,CAACC,4BAA4B,CAAC;MACvF,IAAMC,mBAAmB,GAAGX,MAAM,CAACxS,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAEnD6F,mBAAmB,CAACH,sCAAkB,CAAC;IACzC,CAAC,CAAC;IAEFlQ,EAAE,CAAC,gEAAgE,EAAE,UAAC6P,IAAI,EAAK;MAC7E1O,MAAM,CAAC+B,UAAU,CAAC,CAAC,CAAC;MACpB7C,aAAa,CAAC5C,EAAE,CAACqS,iCAAyB,CAACC,iBAAiB,EAAE,UAACC,KAAuB,EAAK;QACzF7O,MAAM,CAAC6O,KAAK,CAACC,IAAI,CAACK,YAAY,CAACA,YAAY,CAAC3T,MAAM,CAAC,CAACsG,OAAO,CAAC,CAAC,CAAC;QAC9D4M,IAAI,CAAC,CAAC;MACR,CAAC,CAAC;MAEF1O,MAAM,CAACuO,MAAM,CAACxS,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAACvH,OAAO,CAACkN,yBAAiB,CAACC,4BAA4B,CAAC;MACvF,IAAMC,mBAAmB,GAAGX,MAAM,CAACxS,IAAI,CAACsN,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;MAEnD6F,mBAAmB,CAACE,gDAA4B,CAAC;IACnD,CAAC,CAAC;EACJ,CAAC,CAAC;EAEFtS,QAAQ,CAAC,4BAA4B,EAAE,YAAM;IAC3C,IAAIoC,aAA6B;IACjC,IAAImQ,kBAAkB;IACtB,IAAIC,gBAAgB;IAEpB/Q,UAAU,kBAAAO,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAAuQ,UAAA;MAAA,IAAAC,gBAAA;MAAA,OAAAzQ,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAsQ,UAAA;QAAA,kBAAAA,UAAA,CAAApQ,IAAA,GAAAoQ,UAAA,CAAAnQ,IAAA;UAAA;YACTrC,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACsD,QAAQ,CAACC,SAAS,CAACnV,GAAG,GAAGsB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;cAAC2P,KAAK,EAAE;YAAI,CAAC,CAAC;YACvFrN,mBAAU,CAACC,aAAa,CAAC,CAAC;YAC1BD,mBAAU,CAACE,WAAW,CAAC;cAACzB,KAAK,EAALA;YAAK,CAAC,CAAC;YAE/BqS,gBAAgB,GACdxT,IAAI,CAAC8T,WAAW,CAAC,kBAAkB,CAAC,CAGpC5T,uBAAuB,CAACiB,KAAK,CAG9B;YACAqS,gBAAgB,CAAChT,EAAE,CAAeuT,SAAS,CAAC,CAAC;YAC7CP,gBAAgB,CAAC/S,GAAG,CAAesT,SAAS,CAAC,CAAC;YAACJ,UAAA,CAAAnQ,IAAA;YAAA,OAE1B,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cACxC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAC7B,CAAC,CAAC;UAAA;YAFFZ,aAAa,GAAAuQ,UAAA,CAAA1P,IAAA;YAIPyP,gBAAgB,GAAIF,gBAAgB,CAAChT,EAAE,CAAeP,IAAI,CAACsN,KAAK,CAACyG,IAAI,CACzE,UAAClV,IAAI;cAAA,OAAKA,IAAI,CAAC,CAAC,CAAC,KAAK,mBAAmB;YAAA,CAC3C,CAAC;YACDyU,kBAAkB,GAAGG,gBAAgB,CAAC,CAAC,CAAC;UAAC;UAAA;YAAA,OAAAC,UAAA,CAAAtP,IAAA;QAAA;MAAA,GAAAoP,SAAA;IAAA,CAC1C,GAAC;IAEF9O,SAAS,CAAC,YAAM;MACdvB,aAAa,CAACN,kBAAkB,CAAC,CAAC;MAClCjB,WAAW,CAACiB,kBAAkB,CAAC,CAAC;MAChC3B,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACsD,QAAQ,CAACC,SAAS,CAACnV,GAAG,GAAGsB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;QAAC2P,KAAK,EAAE;MAAK,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEFhN,EAAE,CAAC,6CAA6C,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA+Q,UAAA;MAAA,IAAAC,YAAA;MAAA,OAAAjR,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA8Q,UAAA;QAAA,kBAAAA,UAAA,CAAA5Q,IAAA,GAAA4Q,UAAA,CAAA3Q,IAAA;UAAA;YAC1C0Q,YAAY,GAAGlU,IAAI,CACtBa,KAAK,CAACuC,aAAa,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC,CACtDgR,kBAAkB,CAAC;cAAA,OAAMrT,SAAS;YAAA,EAAC;YAAAoT,UAAA,CAAA3Q,IAAA;YAAA,OAEhC+P,kBAAkB,CAAC;cACvB9B,IAAI,EAAE,aAAa;cACnBuB,IAAI,EAAE;gBACJqB,SAAS,EAAE,aAAa;gBACxBC,MAAM,EAAE,sCAAsC;gBAC9CC,OAAO,EAAE,kEAAkE;gBAC3EC,QAAQ,EAAE,IAAI;gBACdC,aAAa,EAAE;cACjB;YACF,CAAC,CAAC;UAAA;YAEFvQ,MAAM,CAACgQ,YAAY,CAAC,CAACnN,oBAAoB,CACvC7C,MAAM,CAAC2F,gBAAgB,CAAC;cACtB4H,IAAI,EAAE,aAAa;cACnBuB,IAAI,EAAE9O,MAAM,CAAC2F,gBAAgB,CAAC;gBAC5BwK,SAAS,EAAE;cACb,CAAC;YACH,CAAC,CACH,CAAC;UAAC;UAAA;YAAA,OAAAF,UAAA,CAAA9P,IAAA;QAAA;MAAA,GAAA4P,SAAA;IAAA,CACH,GAAC;EACJ,CAAC,CAAC;EAEFjT,QAAQ,CAAC,iCAAiC,EAAE,YAAM;IAChD,IAAIoC,aAA6B;IACjC,IAAIoQ,gBAAgB;IAEpB,IAAMkB,mBAAmB,GAAG,SAAtBA,mBAAmBA,CAAIC,SAAiB,EAAK;MACjD,IAAMC,MAAM,GAAIpB,gBAAgB,CAAChT,EAAE,CAAeP,IAAI,CAACsN,KAAK,CAACyG,IAAI,CAC/D,UAAClV,IAAI;QAAA,OAAKA,IAAI,CAAC,CAAC,CAAC,KAAK6V,SAAS;MAAA,CACjC,CAAC;MAED,OAAOC,MAAM,CAAC,CAAC,CAAC;IAClB,CAAC;IAEDnS,UAAU,kBAAAO,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAA2R,UAAA;MAAA,OAAA5R,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAyR,UAAA;QAAA,kBAAAA,UAAA,CAAAvR,IAAA,GAAAuR,UAAA,CAAAtR,IAAA;UAAA;YACTrC,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACsD,QAAQ,CAACC,SAAS,CAACnV,GAAG,GAAGsB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;cAAC2P,KAAK,EAAE;YAAI,CAAC,CAAC;YACvFrN,mBAAU,CAACC,aAAa,CAAC,CAAC;YAC1BD,mBAAU,CAACE,WAAW,CAAC;cAACzB,KAAK,EAALA;YAAK,CAAC,CAAC;YAE/BqS,gBAAgB,GACdxT,IAAI,CAAC8T,WAAW,CAAC,kBAAkB,CAAC,CAGpC5T,uBAAuB,CAACiB,KAAK,CAI9B;YACAqS,gBAAgB,CAAChT,EAAE,CAAeuT,SAAS,CAAC,CAAC;YAC7CP,gBAAgB,CAAC/S,GAAG,CAAesT,SAAS,CAAC,CAAC;YAC9CP,gBAAgB,CAACjT,WAAW,CAAeH,eAAe,CAAC,KAAK,CAAC;YAAC0U,UAAA,CAAAtR,IAAA;YAAA,OAE7C,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cACxC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAC7B,CAAC,CAAC;UAAA;YAFFZ,aAAa,GAAA0R,UAAA,CAAA7Q,IAAA;UAAA;UAAA;YAAA,OAAA6Q,UAAA,CAAAzQ,IAAA;QAAA;MAAA,GAAAwQ,SAAA;IAAA,CAGd,GAAC;IAEFlQ,SAAS,CAAC,YAAM;MACdvB,aAAa,CAACN,kBAAkB,CAAC,CAAC;MAClCjB,WAAW,CAACiB,kBAAkB,CAAC,CAAC;MAChC3B,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACsD,QAAQ,CAACC,SAAS,CAACnV,GAAG,GAAGsB,IAAI,CAACG,EAAE,CAAC,CAAC,CAACC,eAAe,CAAC;QAAC2P,KAAK,EAAE;MAAK,CAAC,CAAC;IAC1F,CAAC,CAAC;IAEFhN,EAAE,CAAC,4DAA4D,EAAE,YAAM;MACrE,IAAMgS,QAAQ,GAAG/U,IAAI,CAACG,EAAE,CAAC,CAAC;MAC1BiD,aAAa,CAAC5C,EAAE,CAACqS,iCAAyB,CAACmC,uBAAuB,EAAED,QAAQ,CAAC;MAE7EL,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;MAE/BxQ,MAAM,CAAC6Q,QAAQ,CAAC,CAAC5Q,qBAAqB,CAAC,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEFpB,EAAE,CAACgI,IAAI,CAAC,CACN,CAAC,mBAAmB,EAAEkK,uCAA+B,CAACC,SAAS,CAAC,EAChE,CAAC,mBAAmB,EAAED,uCAA+B,CAACE,SAAS,CAAC,EAChE,CAAC,kBAAkB,EAAEF,uCAA+B,CAACG,QAAQ,CAAC,CAC/D,CAAC,CACA,yEAAyE,EACzE,UAACT,SAAS,EAAEU,MAAM,EAAK;MACrB,IAAMN,QAAQ,GAAG/U,IAAI,CAACG,EAAE,CAAC,CAAC;MAC1BiD,aAAa,CAAC5C,EAAE,CAACqS,iCAAyB,CAACyC,0BAA0B,EAAEP,QAAQ,CAAC;MAEhFL,mBAAmB,CAACC,SAAmB,CAAC,CAAC,CAAC;MAE1CzQ,MAAM,CAAC6Q,QAAQ,CAAC,CAAC5Q,qBAAqB,CAAC,CAAC,CAAC;MACzCD,MAAM,CAAC6Q,QAAQ,CAAC,CAAChO,oBAAoB,CAAC;QAACsO,MAAM,EAANA;MAAM,CAAC,CAAC;IACjD,CACF,CAAC;IAEDtS,EAAE,CAACgI,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CACpB,yFAAyF,EACzF,UAACwK,SAAS,EAAK;MACZ/B,gBAAgB,CAACjT,WAAW,CAAeH,eAAe,CAACmV,SAAS,CAAC;MAEtErR,MAAM,CAACd,aAAa,CAACoS,uBAAuB,CAAC,CAAC,CAAC,CAAC9Q,IAAI,CAAC6Q,SAAS,CAAC;IACjE,CACF,CAAC;EACH,CAAC,CAAC;EAEFvU,QAAQ,CAAC,YAAY,EAAE,YAAM;IAC3B,IAAIoC,aAA6B;IACjC,IAAMqS,aAAa,GAAG,4CAA4C;IAClE,IAAMC,YAAY,GAAG,2CAA2C;IAEhEjT,UAAU,kBAAAO,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAC,SAAAyS,UAAA;MAAA,OAAA1S,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAuS,UAAA;QAAA,kBAAAA,UAAA,CAAArS,IAAA,GAAAqS,UAAA,CAAApS,IAAA;UAAA;YAAAoS,UAAA,CAAApS,IAAA;YAAA,OACa,IAAAI,2BAAY,EAACzC,KAAK,EAAE;cAAC0C,MAAM,EAAE;gBAACC,KAAK,EAAEC,aAAM,CAACC;cAAI;YAAC,CAAC,CAAC;UAAA;YAAzEZ,aAAa,GAAAwS,UAAA,CAAA3R,IAAA;YACbb,aAAa,CAACgF,iBAAiB,GAAG,CAACqN,aAAa,CAAC;YACjDrS,aAAa,CAAC0N,gBAAgB,GAAG,CAAC4E,YAAY,CAAC;YAC9CvU,KAAK,CAAC4G,OAAO,CAAegM,SAAS,CAAC,CAAC;UAAC;UAAA;YAAA,OAAA6B,UAAA,CAAAvR,IAAA;QAAA;MAAA,GAAAsR,SAAA;IAAA,CAC1C,GAAC;IAEFhR,SAAS,CAAC,YAAM;MACdvB,aAAa,CAACN,kBAAkB,CAAC,CAAC;IACpC,CAAC,CAAC;IAEFC,EAAE,CAAC,yCAAyC,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA2S,UAAA;MAAA,IAAAC,OAAA,EAAAC,eAAA,EAAAC,QAAA;MAAA,OAAA/S,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA4S,UAAA;QAAA,kBAAAA,UAAA,CAAA1S,IAAA,GAAA0S,UAAA,CAAAzS,IAAA;UAAA;YACtCsS,OAAO,GAAG,CACd;cACEtB,QAAQ,EAAE,UAAU;cACpB/L,GAAG,EAAE,yDAAyD;cAC9DyN,MAAM,EAAE,QAAQ;cAChBC,QAAQ,EAAE,sBAAsB;cAChCC,SAAS,EAAE,EAAE;cACb7F,eAAe,EAAE;YACnB,CAAC,CACF;YAEKwF,eAAe,GAAkC;cACrDxM,UAAU,EAAE,GAAG;cACf8M,IAAI,EAAE;gBAAChG,MAAM,EAAE,UAAU;gBAAEyF,OAAO,EAAPA;cAAO;YACpC,CAAC;YAEA3U,KAAK,CAAC4G,OAAO,CAAejH,iBAAiB,CAACiV,eAAe,CAAC;YAACE,UAAA,CAAAzS,IAAA;YAAA,OAEzCJ,aAAa,CAACkT,UAAU,CAAC,UAAU,CAAC;UAAA;YAArDN,QAAQ,GAAAC,UAAA,CAAAhS,IAAA;YAEdC,MAAM,CAAC/C,KAAK,CAAC4G,OAAO,CAAC,CAAChB,oBAAoB,CAAC;cACzC0B,GAAG,EAAE,mEAAmE;cACxED,MAAM,EAAE+N,oBAAY,CAACC,GAAG;cACxBC,OAAO,EAAEC,wBAAgB,CAACC,MAAM;cAChC9N,OAAO,MAAAhJ,gBAAA,CAAAtB,OAAA,MAAAsB,gBAAA,CAAAtB,OAAA,MACJqY,2BAAgB,EAAGzV,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACE,GAAG,GAC5C1H,2BAAgB,EAAG+N,6BAAkB;YAE1C,CAAC,CAAC;YAEF3S,MAAM,CAAC8R,QAAQ,CAAC,CAAChQ,OAAO,CAAC8P,OAAO,CAAC;UAAC;UAAA;YAAA,OAAAG,UAAA,CAAA5R,IAAA;QAAA;MAAA,GAAAwR,SAAA;IAAA,CACnC,GAAC;IAEF9S,EAAE,CAAC,gDAAgD,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAA4T,UAAA;MAAA,IAAAhB,OAAA,EAAAzM,cAAA,EAAA0M,eAAA,EAAAC,QAAA,EAAAe,YAAA;MAAA,OAAA9T,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAA2T,UAAA;QAAA,kBAAAA,UAAA,CAAAzT,IAAA,GAAAyT,UAAA,CAAAxT,IAAA;UAAA;YAC7CsS,OAAO,GAAG,CACd;cACEtB,QAAQ,EAAE,UAAU;cACpB/L,GAAG,EAAE,2DAA2D;cAChEyN,MAAM,EAAE,QAAQ;cAChBC,QAAQ,EAAE,sBAAsB;cAChCC,SAAS,EAAE,EAAE;cACb7F,eAAe,EAAE;YACnB,CAAC,CACF;YAEKlH,cAAc,GAAG;cACrBE,UAAU,EAAE;YACd,CAAC;YAEKwM,eAAe,GAAkC;cACrDxM,UAAU,EAAE,GAAG;cACf8M,IAAI,EAAE;gBAAChG,MAAM,EAAE,UAAU;gBAAEyF,OAAO,EAAPA;cAAO;YACpC,CAAC;YAEA3U,KAAK,CAAC4G,OAAO,CACXyB,qBAAqB,CAACH,cAAc,CAAC,CACrCrB,qBAAqB,CAAC+N,eAAe,CAAC;YAACiB,UAAA,CAAAxT,IAAA;YAAA,OAEnBJ,aAAa,CAACkT,UAAU,CAAC,UAAU,CAAC;UAAA;YAArDN,QAAQ,GAAAgB,UAAA,CAAA/S,IAAA;YAER8S,YAAY,GAAI5V,KAAK,CAAC4G,OAAO,CAAe9H,IAAI,CAACsN,KAAK;YAC5DrJ,MAAM,CAAC6S,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC/Q,OAAO,CAAC;cACjCyC,GAAG,EAAE,mEAAmE;cACxED,MAAM,EAAE+N,oBAAY,CAACC,GAAG;cACxBC,OAAO,EAAEC,wBAAgB,CAACC,MAAM;cAChC9N,OAAO,MAAAhJ,gBAAA,CAAAtB,OAAA,MAAAsB,gBAAA,CAAAtB,OAAA,MACJqY,2BAAgB,EAAGzV,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACE,GAAG,GAC5C1H,2BAAgB,EAAG+N,6BAAkB;YAE1C,CAAC,CAAC;YAEF3S,MAAM,CAAC6S,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC/Q,OAAO,CAAC;cACjCyC,GAAG,EAAE,kEAAkE;cACvED,MAAM,EAAE+N,oBAAY,CAACC,GAAG;cACxBC,OAAO,EAAEC,wBAAgB,CAACC,MAAM;cAChC9N,OAAO,MAAAhJ,gBAAA,CAAAtB,OAAA,MAAAsB,gBAAA,CAAAtB,OAAA,MACJqY,2BAAgB,EAAGzV,KAAK,CAACE,QAAQ,CAACiP,MAAM,CAACE,GAAG,GAC5C1H,2BAAgB,EAAG+N,6BAAkB;YAE1C,CAAC,CAAC;YAEF3S,MAAM,CAAC8R,QAAQ,CAAC,CAAChQ,OAAO,CAAC8P,OAAO,CAAC;UAAC;UAAA;YAAA,OAAAkB,UAAA,CAAA3S,IAAA;QAAA;MAAA,GAAAyS,SAAA;IAAA,CACnC,GAAC;EACJ,CAAC,CAAC;EAEF9V,QAAQ,CAAC,0BAA0B,EAAE,YAAM;IACzC,IAAIiW,qBAA0B;IAE9BjG,SAAS,CAAC,YAAM;MAAA,IAAAkG,MAAA;MACdD,qBAAqB,GAAGvW,MAAM,CAACyW,iBAAiB;MAChD;MACAzW,MAAM,CAACyW,iBAAiB,IAAAD,MAAA;QAMtB,SAAAA,OAAA,EAAc;UAAA,IAAAE,gBAAA,CAAA7Y,OAAA,QAAA2Y,MAAA;UAAA,IAAArX,gBAAA,CAAAtB,OAAA,6BAJM,UAAU;UAAA,IAAAsB,gBAAA,CAAAtB,OAAA,4BACX,IAAI;UAAA,IAAAsB,gBAAA,CAAAtB,OAAA,6BACH,IAAI;UAAA,IAAAsB,gBAAA,CAAAtB,OAAA,0BACoB,IAAI;UAE7C,IAAI,CAAC8Y,WAAW,CAASC,SAAS,CAAChY,IAAI,CAAC,IAAI,CAAC;QAChD;QAAC,WAAAiY,aAAA,CAAAhZ,OAAA,EAAA2Y,MAAA;UAAAM,GAAA;UAAAzH,KAAA,EAED,SAAA0H,iBAAiBA,CAAA,EAAG;YAClB,OAAO,CAAC,CAAC;UACX;QAAC;UAAAD,GAAA;UAAAzH,KAAA,EAED,SAAA2H,cAAcA,CAAA,EAAG;YACf,OAAO,CAAC,CAAC;UACX;QAAC;UAAAF,GAAA;UAAAzH,KAAA,EAED,SAAA4H,WAAWA,CAAA,EAAG;YACZ,OAAOpV,QAAA,CAAAhE,OAAA,CAAQiE,OAAO,CAAC;cAACoV,GAAG,EAAE,OAAO;cAAEnG,IAAI,EAAE;YAAO,CAAC,CAAC;UACvD;QAAC;UAAA+F,GAAA;UAAAzH,KAAA,EAED,SAAA8H,mBAAmBA,CAACC,IAAS,EAAE;YAC7B,IAAI,CAACC,gBAAgB,GAAGD,IAAI;YAE5B,OAAOvV,QAAA,CAAAhE,OAAA,CAAQiE,OAAO,CAAC,CAAC;UAC1B;QAAC;UAAAgV,GAAA;UAAAzH,KAAA,EAED,SAAAiI,oBAAoBA,CAACF,IAAS,EAAE;YAC9B,IAAI,CAACG,iBAAiB,GAAGH,IAAI;YAE7B,OAAOvV,QAAA,CAAAhE,OAAA,CAAQiE,OAAO,CAAC,CAAC;UAC1B;QAAC;UAAAgV,GAAA;UAAAzH,KAAA,EAED,SAAAmI,YAAYA,CAAA,EAAG;YACb,OAAO3V,QAAA,CAAAhE,OAAA,CAAQiE,OAAO,CAAC;cAACoV,GAAG,EAAE,QAAQ;cAAEnG,IAAI,EAAE;YAAQ,CAAC,CAAC;UACzD;QAAC;UAAA+F,GAAA;UAAAzH,KAAA,EAED,SAAAoI,eAAeA,CAAA,EAAG;YAChB,OAAO5V,QAAA,CAAAhE,OAAA,CAAQiE,OAAO,CAAC,CAAC;UAC1B;QAAC;UAAAgV,GAAA;UAAAzH,KAAA,EAED,SAAAqI,KAAKA,CAAA,EAAG,CAAC;QAAC;UAAAZ,GAAA;UAAAzH,KAAA,EACV,SAAAsI,gBAAgBA,CAAA,EAAG,CAAC;QAAC;UAAAb,GAAA;UAAAzH,KAAA,EACrB,SAAAuI,mBAAmBA,CAAA,EAAG,CAAC;QAAC;MAAA,SAAAzY,gBAAA,CAAAtB,OAAA,EAAA2Y,MAAA,eA3CE,EAAE,GAAAA,MAAA,CA4C7B;IACH,CAAC,CAAC;IAEFrU,QAAQ,CAAC,YAAM;MACbnC,MAAM,CAACyW,iBAAiB,GAAGF,qBAAqB;IAClD,CAAC,CAAC;IAEFlU,EAAE,CAAC,kCAAkC,mBAAAC,kBAAA,CAAAzE,OAAA,eAAA0E,YAAA,CAAA1E,OAAA,CAAA2E,IAAA,CAAE,SAAAqV,UAAA;MAAA,OAAAtV,YAAA,CAAA1E,OAAA,CAAA8E,IAAA,WAAAmV,UAAA;QAAA,kBAAAA,UAAA,CAAAjV,IAAA,GAAAiV,UAAA,CAAAhV,IAAA;UAAA;YAAAgV,UAAA,CAAAhV,IAAA;YAAA,OAC/BU,MAAM,CAAC,IAAAuU,sCAAwB,EAAC,CAAC,CAAC,CAAC,CAAC,CAACC,QAAQ,CAACzT,GAAG,CAACC,OAAO,CAAC,CAAC;UAAA;UAAA;YAAA,OAAAsT,UAAA,CAAAnU,IAAA;QAAA;MAAA,GAAAkU,SAAA;IAAA,CAClE,GAAC;EACJ,CAAC,CAAC;AACJ,CAAC,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_asyncMutex","require","Media","_interopRequireWildcard","_types","_testUtil","_types2","_types3","_Logger","_interopRequireDefault","_CallingClient","_Utils","utils","_callManager","_constants","_callRecordFixtures","_callingClientFixtures","_line","LineModule","_registerFixtures","_constants2","_types4","_windowsChromiumIceWarmupUtils","_request","e","t","_WeakMap","r","n","__esModule","o","i","f","__proto__","default","_typeof","has","get","set","_t4","hasOwnProperty","call","_Object$defineProperty","_Object$getOwnPropertyDescriptor","ownKeys","_Object$keys2","_Object$getOwnPropertySymbols","filter","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","jest","mock","getMobiusSocketInstance","fn","mockReturnValue","sendWssRequest","connect","isConnected","on","off","global","crypto","randomUUID","spyOn","mockResolvedValue","undefined","describe","handleErrorSpy","setLoggerSpy","webex","getTestUtilsWebex","internal","services","mockCatalogUS","getMobiusClusters","mockUSServiceHosts","defaultServiceIndicator","ServiceIndicator","CALLING","callManager","getCallManager","infoSpy","log","logSpy","warnSpy","originalProcessNextTick","process","nextTick","flushPromises","_promise","resolve","beforeEach","APIRequest","resetInstance","getInstance","afterAll","removeAllListeners","it","_asyncToGenerator2","_regenerator","mark","_callee","callingClient","wrap","_context","prev","next","_hostCatalog","_serviceUrls","mobius","createClient","logger","level","LOGGER","INFO","sent","expect","toHaveBeenCalledTimes","toStrictEqual","stop","_callee2","_context2","mockCatalogEU","mockEUServiceHosts","toBe","afterEach","_callee4","_context4","_callee3","_context3","toBeTruthy","not","toThrow","Error","_callee6","serviceDataObj","_context6","indicator","domain","_callee5","_context5","serviceData","_callee7","_t","_context7","message","toEqual","assertions","_callee8","_t2","_context8","_callee0","_context0","_callee9","_context9","_callee1","_context1","CONTACT_CENTER","toHaveBeenCalled","_callee10","_context10","toHaveBeenCalledWith","_callee11","createLineSpy","_context11","CallingClient","prototype","rejects","mockRestore","_callee12","_context12","getLoggingLevel","clearAllTimers","clearAllMocks","useRealTimers","_callee13","_context13","request","mockResolvedValueOnce","regionPayload","discoveryPayload","toBeCalledTimes","primaryMobiusUris","primaryUrl","toBeCalled","nthCalledWith","method","uri","concat","DISCOVERY_URL","addAuthHeader","headers","SPARK_USER_AGENT","getMockRequestTemplate","URL_ENDPOINT","regionBody","clientRegion","countryCode","_callee14","failurePayload","_context14","statusCode","mockRejectedValueOnce","toBeCalledWith","anything","file","CALLING_CLIENT_FILE","objectContaining","_callee15","_context15","mockReset","discovery","region","country","METHOD_START_MESSAGE","toBeCalledOnceWith","mobiusCluster","checkCluster","_ref16","_callee16","mockServiceHosts","mockCatalog","_context16","_x","_x2","each","_ref17","_callee17","clusterName","_t3","_context17","abrupt","mockIntServiceHosts","mockCatalogUSInt","mockEUIntServiceHosts","mockCatalogEUInt","_x3","line","_callee18","_context18","_values","lineDict","_keys","getLines","lineCtorSpy","primaryHttp","backupHttp","primaryWss","backupWss","_callee19","_context19","backupMobiusUris","mockImplementation","lineId","getLineUris","ctorArgs","calls","primary","backup","primaryWssMobiusUris","backupWssMobiusUris","_getLineUris","normalizeMobiusUris","_getLineUris2","_getLineUris3","_getLineUris4","connectSpy","_callee20","_context20","mockClear","_callee21","_context21","_callee22","_context22","_callee23","_context23","mockRejectedValue","toHaveBeenNthCalledWith","_callee24","_context24","reg","windowEventSpy","deRegSpy","restoreSpy","restartRegisterSpy","registerSpy","metricSpy","_callee25","_context25","useFakeTimers","registrationPayload","window","registration","register","callCollection","_callee26","g","clearKeepaliveSpy","offlineCb","_context26","fetch","stringContaining","_callee27","_context27","any","_callee28","onlineCb","_context28","String","_callee29","mercuryOfflineCb","_context29","mercury","METRIC_EVENT","CONNECTION_ERROR","CONNECTION_ACTION","MERCURY_DOWN","METRIC_TYPE","BEHAVIORAL","_callee30","handleConnectionRestoreSpy","mercuryOnlineCb","_context30","advanceTimersByTime","NETWORK_FLAP_TIMEOUT","REGISTRATION_FILE","getActiveMobiusUrl","NETWORK_FLAP","_callee31","_context31","setStatus","RegistrationStatus","IDLE","_callee32","callKeepaliveSpy","deleteSpy","_context32","createCall","getActiveCalls","state","value","_callee33","_context33","MERCURY_UP","mutex","Mutex","userId","device","clientDeviceUri","url","mobiusUris","filterMobiusUris","getMobiusDiscoveryResponse","URL","beforeAll","_callee34","_context34","Line","end","getSDKConnector","getWebex","makeCall","address","type","CallType","URI","getConnectedCall","mockCall","mockCall2","mockActiveCalls","mockCorrelationId","mockCorrelationId2","mockDeviceId","mockDeviceId2","mockCall3","mockCorrelationId3","mockLineId","mockLineId2","mockOn","_callee35","_context35","done","CALLING_CLIENT_EVENT_KEYS","USER_SESSION_INFO","event","data","MOCK_SESSION_EVENT","MOBIUS_EVENT_KEYS","CALL_SESSION_EVENT_INCLUSIVE","callSessionCallback","userSessions","MOCK_MULTIPLE_SESSIONS_EVENT","asyncEventCallback","mobiusSocketMock","_callee36","asyncEventOnCall","_context36","features","developer","requireMock","find","_callee37","callEventSpy","_context37","eventType","callId","callUrl","deviceId","correlationId","getSocketHandlerFor","eventName","onCall","_callee38","_context38","listener","MOBIUS_SOCKET_CONNECTED","MOBIUS_SOCKET_DISCONNECT_REASON","PERMANENT","TRANSIENT","REPLACED","reason","MOBIUS_SOCKET_DISCONNECTED","connected","isMobiusSocketConnected","primaryMobius","backupMobius","_callee39","_context39","_callee40","devices","responsePayload","response","_context40","status","lastSeen","addresses","body","getDevices","HTTP_METHODS","GET","service","ALLOWED_SERVICES","MOBIUS","CISCO_DEVICE_URL","CALLING_USER_AGENT","_callee41","requestCalls","_context41","origRTCPeerConnection","_Class","RTCPeerConnection","_classCallCheck2","constructor","instances","_createClass2","key","createDataChannel","addTransceiver","createOffer","sdp","setLocalDescription","desc","localDescription","setRemoteDescription","remoteDescription","createAnswer","addIceCandidate","close","addEventListener","removeEventListener","_callee42","_context42","windowsChromiumIceWarmup","resolves"],"sources":["CallingClient.test.ts"],"sourcesContent":["import {Mutex} from 'async-mutex';\nimport * as Media from '@webex/internal-media-core';\nimport {LOGGER} from '../Logger/types';\nimport {\n getTestUtilsWebex,\n getMockRequestTemplate,\n getMobiusDiscoveryResponse,\n} from '../common/testUtil';\nimport {\n CallType,\n RegistrationStatus,\n ServiceIndicator,\n ALLOWED_SERVICES,\n HTTP_METHODS,\n WebexRequestPayload,\n} from '../common/types';\n/* eslint-disable dot-notation */\nimport {\n CALLING_CLIENT_EVENT_KEYS,\n CallSessionEvent,\n MOBIUS_EVENT_KEYS,\n MOBIUS_SOCKET_DISCONNECT_REASON,\n} from '../Events/types';\nimport log from '../Logger';\nimport {CallingClient, createClient} from './CallingClient';\nimport {ICallingClient} from './types';\nimport * as utils from '../common/Utils';\nimport {getCallManager} from './calling/callManager';\nimport {\n CALLING_CLIENT_FILE,\n DISCOVERY_URL,\n NETWORK_FLAP_TIMEOUT,\n REGISTRATION_FILE,\n CALLING_USER_AGENT,\n CISCO_DEVICE_URL,\n SPARK_USER_AGENT,\n URL_ENDPOINT,\n} from './constants';\nimport {MOCK_MULTIPLE_SESSIONS_EVENT, MOCK_SESSION_EVENT} from './callRecordFixtures';\nimport {ILine} from './line/types';\nimport {\n regionBody,\n regionPayload,\n primaryUrl,\n discoveryPayload,\n registrationPayload,\n mockEUServiceHosts,\n mockIntServiceHosts,\n mockEUIntServiceHosts,\n mockCatalogEU,\n mockCatalogUSInt,\n mockCatalogUS,\n mockCatalogEUInt,\n mockUSServiceHosts,\n} from './callingClientFixtures';\nimport Line from './line';\nimport * as LineModule from './line';\nimport {filterMobiusUris, normalizeMobiusUris} from '../common/Utils';\nimport {URL} from './registration/registerFixtures';\nimport {ICall} from './calling/types';\nimport {ServiceHost} from '../SDKConnector/types';\nimport {METHOD_START_MESSAGE} from '../common/constants';\nimport {METRIC_EVENT, CONNECTION_ACTION, METRIC_TYPE} from '../Metrics/types';\nimport windowsChromiumIceWarmup from './windowsChromiumIceWarmupUtils';\nimport {APIRequest} from './utils/request';\n\njest.mock('../mobius-socket', () => ({\n getMobiusSocketInstance: jest.fn().mockReturnValue({\n sendWssRequest: jest.fn(),\n connect: jest.fn(),\n isConnected: jest.fn().mockReturnValue(false),\n on: jest.fn(),\n off: jest.fn(),\n }),\n}));\n\nglobal.crypto = {\n randomUUID: () => '12345678-1234-5678-1234-567812345678',\n} as unknown as Crypto;\n\njest.spyOn(utils, 'uploadLogs').mockResolvedValue(undefined);\n\ndescribe('CallingClient Tests', () => {\n // Common initializers\n\n const handleErrorSpy = jest.spyOn(utils, 'handleCallingClientErrors');\n const setLoggerSpy = jest.spyOn(Media, 'setLogger');\n const webex = getTestUtilsWebex();\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockUSServiceHosts);\n const defaultServiceIndicator = ServiceIndicator.CALLING;\n const callManager = getCallManager(webex, defaultServiceIndicator);\n\n const infoSpy = jest.spyOn(log, 'info');\n const logSpy = jest.spyOn(log, 'log');\n const warnSpy = jest.spyOn(log, 'warn');\n\n const originalProcessNextTick = process.nextTick;\n function flushPromises() {\n return new Promise((resolve) => {\n originalProcessNextTick(resolve);\n });\n }\n\n beforeEach(() => {\n APIRequest.resetInstance();\n APIRequest.getInstance({webex});\n });\n\n describe('CallingClient pick Mobius cluster using Service Host Tests', () => {\n afterAll(() => {\n callManager.removeAllListeners();\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius.aintgen-a-1.int.infra.webex.com/api/v1';\n webex.internal.services['_hostCatalog'] = mockCatalogUS;\n });\n\n it('should use default mobius service host when Service URL is invalid', async () => {\n webex.internal.services._hostCatalog = mockCatalogUS;\n webex.internal.services._serviceUrls.mobius = 'invalid-url';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(setLoggerSpy).toHaveBeenCalledTimes(1);\n expect(callingClient['mobiusClusters']).toStrictEqual(mockUSServiceHosts);\n });\n\n it('should set mobiusServiceHost correctly when URL is valid', async () => {\n webex.internal.services._hostCatalog = mockCatalogEU;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockEUServiceHosts);\n webex.internal.services['_serviceUrls']['mobius'] =\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1';\n\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusHost']).toBe(\n 'https://mobius-eu-central-1.prod.infra.webex.com/api/v1'\n );\n expect(callingClient['mobiusClusters']).toStrictEqual(mockEUServiceHosts);\n });\n });\n\n describe('ServiceData tests', () => {\n let callingClient: ICallingClient | undefined;\n\n afterEach(() => {\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n /**\n * No input sdk config to callingClient, it should default to service type\n * calling and empty domain value.\n */\n it('Verify valid calling serviceData with no input sdk config', async () => {\n expect(async () => {\n callingClient = await createClient(webex);\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying empty string for\n * both indicator and domain in it.\n *\n * It should default to service type calling and empty domain value.\n *\n */\n it('Verify invalid empty service indicator, empty domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: '', domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying invalid value for indicator\n * and valid domain type string for domain field in it.\n *\n * It should throw error and abort execution as indicator value is invalid.\n *\n * INDICATOR value MUST MATCH with one of the values in ServiceIndicator enum.\n */\n it('Verify invalid service indicator, valid domain', async () => {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n const serviceDataObj: any = {indicator: 'test', domain: 'test.example.com'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual(\n 'Invalid service indicator, Allowed values are: calling, contactcenter and guestcalling'\n );\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', but an invalid domain type string for domain field in it.\n *\n * It should throw error and abort execution as domain value is invalid.\n *\n * DOMAIN field for service type calling is allowed to be empty but if it carries a non-empty\n * string then it must be of valid domain type.\n */\n it('CALLING: verify invalid service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: 'test'};\n\n try {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n } catch (e) {\n expect(e.message).toEqual('Invalid service domain.');\n }\n expect.assertions(1);\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'calling', and an empty string for domain field in it.\n *\n * Execution should proceed properly and createRegistration should be called with same serviceData.\n *\n * DOMAIN field for service type 'calling' is allowed to be empty.\n */\n it('CALLING: verify valid empty service domain', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CALLING, domain: ''};\n\n expect(async () => {\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n }).not.toThrow(Error);\n });\n\n it('ContactCenter: uses config domain and does not fetch RTMS domain from catalog', async () => {\n const serviceDataObj = {\n indicator: ServiceIndicator.CONTACT_CENTER,\n domain: 'test.example.com',\n };\n\n webex.internal.services.get = jest.fn();\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n expect(webex.internal.services.get).not.toHaveBeenCalled();\n });\n\n /**\n * Input sdk config to callingClient with serviceData carrying valid value for indicator\n * 'contactcenter' , and a valid domain type string for domain field in it.\n */\n it('ContactCenter: fetches RTMS domain from catalog when config domain is empty', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n\n webex.internal.services.get = jest\n .fn()\n .mockReturnValue('https://cc-rtms.example.com/calling/web/rtms');\n\n callingClient = await createClient(webex, {serviceData: serviceDataObj});\n expect(callingClient).toBeTruthy();\n expect(webex.internal.services.get).toHaveBeenCalledWith('wcc-calling-rtms-domain');\n });\n\n it('ContactCenter: init fails when config domain is empty and catalog fetch fails', async () => {\n const serviceDataObj = {indicator: ServiceIndicator.CONTACT_CENTER, domain: ''};\n const createLineSpy = jest.spyOn(CallingClient.prototype as any, 'createLine');\n\n webex.internal.services.get = jest.fn(() => {\n throw new Error('catalog unavailable');\n });\n\n await expect(createClient(webex, {serviceData: serviceDataObj})).rejects.toThrow(\n 'Invalid service domain.'\n );\n expect(createLineSpy).not.toHaveBeenCalled();\n\n createLineSpy.mockRestore();\n });\n\n it('Get current log level', async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n expect(callingClient).toBeTruthy();\n expect(callingClient.getLoggingLevel).toBeTruthy();\n expect(callingClient.getLoggingLevel()).toEqual(LOGGER.INFO);\n });\n });\n\n describe('Mobius Server discovery tests', () => {\n let callingClient;\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify successful mobius server url discovery', async () => {\n webex.request.mockResolvedValueOnce(regionPayload).mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(webex.request).toBeCalledTimes(2);\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n expect(handleErrorSpy).not.toBeCalled();\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(webex.request).nthCalledWith(2, {\n method: 'GET',\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n });\n });\n\n it('when region discovery succeeds but region based mobius url discovery fails with final error', async () => {\n const failurePayload = {\n statusCode: 401,\n };\n\n webex.request.mockResolvedValueOnce(regionPayload).mockRejectedValueOnce(failurePayload);\n\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(handleErrorSpy).toBeCalledWith(failurePayload, expect.anything(), {\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n });\n expect(webex.request).toBeCalledTimes(2);\n\n expect(callingClient.primaryMobiusUris).toEqual([\n `${callingClient['mobiusHost']}${URL_ENDPOINT}`,\n ]);\n\n expect(webex.request).nthCalledWith(1, {\n method: 'GET',\n uri: `${DISCOVERY_URL}`,\n addAuthHeader: false,\n headers: {\n [SPARK_USER_AGENT]: null,\n },\n });\n\n expect(warnSpy).toBeCalledWith(\n `Couldn't resolve the region and country code. Defaulting to the catalog entries to discover mobius servers`,\n expect.objectContaining({\n file: CALLING_CLIENT_FILE,\n method: 'getMobiusServers',\n })\n );\n });\n\n it('Verify successful mobius server url discovery after initializing callingClient through a config', async () => {\n infoSpy.mockReset();\n webex.request.mockResolvedValueOnce(discoveryPayload);\n\n callingClient = await createClient(webex, {\n discovery: {\n region: 'AP-SOUTHEAST',\n country: 'IN',\n },\n logger: {\n level: LOGGER.INFO,\n },\n });\n\n expect(callingClient.primaryMobiusUris).toEqual([primaryUrl]);\n\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: 'CallingClient',\n method: 'getMobiusServers',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n ...getMockRequestTemplate(),\n uri: `${callingClient['mobiusHost']}${URL_ENDPOINT}?regionCode=${regionBody.clientRegion}&countryCode=${regionBody.countryCode}`,\n method: 'GET',\n });\n\n expect(handleErrorSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Testing each cluster present withing host catalog', () => {\n const mobiusCluster = [\n 'mobius-eu-central-1.prod.infra.webex.com',\n 'mobius-us-east-1.int.infra.webex.com',\n 'mobius-eu-central-1.int.infra.webex.com',\n ];\n\n const checkCluster = async (\n mockServiceHosts: ServiceHost[],\n mockCatalog: Record<string, ServiceHost[]>\n ) => {\n webex.internal.services._hostCatalog = mockCatalog;\n webex.internal.services.getMobiusClusters = jest.fn().mockReturnValue(mockServiceHosts);\n const callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n\n expect(callingClient['mobiusClusters']).toStrictEqual(mockServiceHosts);\n };\n\n it.each(mobiusCluster)('%s', async (clusterName) => {\n switch (clusterName) {\n case 'mobius-eu-central-1.prod.infra.webex.com':\n checkCluster(mockEUServiceHosts, mockCatalogEU);\n break;\n case 'mobius-us-east-1.int.infra.webex.com':\n checkCluster(mockIntServiceHosts, mockCatalogUSInt);\n break;\n case 'mobius-eu-central-1.int.infra.webex.com':\n checkCluster(mockEUIntServiceHosts, mockCatalogEUInt);\n break;\n default:\n break;\n }\n });\n });\n\n describe('Line creation tests', () => {\n let callingClient;\n let line;\n\n beforeEach(async () => {\n callingClient = await createClient(webex);\n line = Object.values(callingClient.lineDict)[0];\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('verify line dict successfully created', () => {\n expect(callingClient.lineDict).toBeTruthy();\n expect(line).toBeTruthy();\n expect(Object.keys(callingClient.lineDict).length).toEqual(1);\n });\n\n it('verify getLines response', () => {\n expect(callingClient.getLines).toBeTruthy();\n expect(callingClient.getLines()).toEqual(callingClient.lineDict);\n });\n });\n\n describe('createLine transport URI selection', () => {\n let callingClient;\n let lineCtorSpy: jest.SpyInstance;\n\n const primaryHttp = ['https://primary.example.com/api/v1/calling/web/'];\n const backupHttp = ['https://backup.example.com/api/v1/calling/web/'];\n const primaryWss = ['wss://primary.example.com/api/v1/calling/web/'];\n const backupWss = ['wss://backup.example.com/api/v1/calling/web/'];\n\n beforeEach(async () => {\n // createClient builds a real Line; stub the constructor afterwards so the explicit\n // createLine() call below records the URIs passed to Line without registering for real.\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n callingClient.primaryMobiusUris = primaryHttp;\n callingClient.backupMobiusUris = backupHttp;\n lineCtorSpy = jest\n .spyOn(LineModule, 'default')\n .mockImplementation(() => ({lineId: 'mock-line-id'} as unknown as Line));\n });\n\n afterEach(() => {\n lineCtorSpy.mockRestore();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n const getLineUris = () => {\n const ctorArgs = lineCtorSpy.mock.calls[0];\n\n return {primary: ctorArgs[3], backup: ctorArgs[4]};\n };\n\n it('uses normalized WSS URIs for both groups when socket is enabled and WSS URIs are present', () => {\n jest.spyOn(callingClient['apiRequest'], 'isSocketEnabled').mockReturnValue(true);\n callingClient.primaryWssMobiusUris = primaryWss;\n callingClient.backupWssMobiusUris = backupWss;\n\n callingClient['createLine']();\n\n const {primary, backup} = getLineUris();\n expect(primary).toEqual(normalizeMobiusUris(primaryWss));\n expect(backup).toEqual(normalizeMobiusUris(backupWss));\n });\n\n it('falls back to HTTP URIs for a group with no WSS URL even when the socket is enabled', () => {\n jest.spyOn(callingClient['apiRequest'], 'isSocketEnabled').mockReturnValue(true);\n // Primary has no WSS URL (HTTP fallback expected) while backup does.\n callingClient.primaryWssMobiusUris = [];\n callingClient.backupWssMobiusUris = backupWss;\n\n callingClient['createLine']();\n\n const {primary, backup} = getLineUris();\n expect(primary).toEqual(primaryHttp);\n expect(backup).toEqual(normalizeMobiusUris(backupWss));\n });\n\n it('uses HTTP URIs for both groups when the socket is enabled but no WSS URLs are present', () => {\n jest.spyOn(callingClient['apiRequest'], 'isSocketEnabled').mockReturnValue(true);\n callingClient.primaryWssMobiusUris = [];\n callingClient.backupWssMobiusUris = [];\n\n callingClient['createLine']();\n\n const {primary, backup} = getLineUris();\n expect(primary).toEqual(primaryHttp);\n expect(backup).toEqual(backupHttp);\n });\n\n it('uses HTTP URIs for both groups when the socket is disabled', () => {\n jest.spyOn(callingClient['apiRequest'], 'isSocketEnabled').mockReturnValue(false);\n callingClient.primaryWssMobiusUris = primaryWss;\n callingClient.backupWssMobiusUris = backupWss;\n\n callingClient['createLine']();\n\n const {primary, backup} = getLineUris();\n expect(primary).toEqual(primaryHttp);\n expect(backup).toEqual(backupHttp);\n });\n });\n\n describe('connectToMobiusSocket', () => {\n let callingClient;\n let connectSpy: jest.SpyInstance;\n\n const primaryWss = [\n 'wss://primary-1.example.com/api/v1/calling/web/',\n 'wss://primary-2.example.com/api/v1/calling/web/',\n ];\n const backupWss = ['wss://backup.example.com/api/v1/calling/web/'];\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n connectSpy = jest.spyOn(callingClient['apiRequest'], 'connectToMobiusSocket');\n warnSpy.mockClear();\n });\n\n afterEach(() => {\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n callingClient = undefined;\n });\n\n it('skips the socket connection and warns when no primary WSS URIs are available', async () => {\n callingClient.primaryWssMobiusUris = [];\n callingClient.backupWssMobiusUris = backupWss;\n\n await callingClient['connectToMobiusSocket']();\n\n expect(connectSpy).not.toHaveBeenCalled();\n expect(warnSpy).toHaveBeenCalledWith(\n 'No WSS URIs available from Mobius discovery for primary, skipping socket connection',\n {file: CALLING_CLIENT_FILE, method: 'connectToMobiusSocket'}\n );\n });\n\n it('connects using the first reachable primary WSS URI and stops on success', async () => {\n callingClient.primaryWssMobiusUris = primaryWss;\n connectSpy.mockResolvedValue(undefined);\n\n await callingClient['connectToMobiusSocket']();\n\n expect(connectSpy).toHaveBeenCalledTimes(1);\n expect(connectSpy).toHaveBeenCalledWith(primaryWss[0]);\n });\n\n it('tries each primary WSS URI and warns when all attempts fail', async () => {\n callingClient.primaryWssMobiusUris = primaryWss;\n connectSpy.mockRejectedValue(new Error('connect failed'));\n\n await callingClient['connectToMobiusSocket']();\n\n expect(connectSpy).toHaveBeenCalledTimes(primaryWss.length);\n expect(connectSpy).toHaveBeenNthCalledWith(1, primaryWss[0]);\n expect(connectSpy).toHaveBeenNthCalledWith(2, primaryWss[1]);\n expect(warnSpy).toHaveBeenCalledWith('All primary WSS URI connection attempts failed', {\n file: CALLING_CLIENT_FILE,\n method: 'connectToMobiusSocket',\n });\n });\n\n it('does not attempt backup WSS URIs when primary WSS URIs are absent', async () => {\n callingClient.primaryWssMobiusUris = [];\n callingClient.backupWssMobiusUris = backupWss;\n\n await callingClient['connectToMobiusSocket']();\n\n expect(connectSpy).not.toHaveBeenCalled();\n });\n });\n\n describe('Connectivity and Mercury event handlers', () => {\n let callingClient: ICallingClient;\n let line;\n let reg;\n let windowEventSpy: jest.SpyInstance;\n let deRegSpy;\n let restoreSpy;\n let restartRegisterSpy;\n let registerSpy;\n let metricSpy;\n\n beforeEach(async () => {\n jest.useFakeTimers();\n webex.request\n .mockResolvedValueOnce(regionPayload)\n .mockResolvedValueOnce(discoveryPayload)\n .mockResolvedValueOnce(registrationPayload);\n\n windowEventSpy = jest.spyOn(window, 'addEventListener');\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n line = Object.values(callingClient.lineDict)[0] as ILine;\n reg = line.registration;\n await line.register();\n\n deRegSpy = jest.spyOn(reg, 'deregister');\n restoreSpy = jest.spyOn(reg, 'restorePreviousRegistration');\n restartRegisterSpy = jest.spyOn(reg, 'restartRegistration');\n registerSpy = jest.spyOn(reg, 'attemptRegistrationWithServers');\n metricSpy = jest.spyOn(callingClient['metricManager'], 'submitConnectionMetrics');\n });\n\n afterEach(() => {\n jest.clearAllTimers();\n jest.clearAllMocks();\n callingClient.removeAllListeners();\n callingClient['callManager'].callCollection = {};\n callManager.removeAllListeners();\n callingClient = undefined;\n jest.useRealTimers();\n });\n\n it('window offline handler sets networkDown and clears keepalive when network is unreachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockRejectedValueOnce(new Error('network fail'));\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Network connectivity probe failed'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'pingExternal',\n }\n );\n expect(callingClient['isNetworkDown']).toBe(true);\n expect(clearKeepaliveSpy).toHaveBeenCalled();\n });\n\n it('window offline handler does not clear keepalive when network is reachable', async () => {\n const g = global;\n g.fetch = jest.fn().mockResolvedValueOnce({});\n\n const clearKeepaliveSpy = jest.spyOn(reg, 'clearKeepaliveTimer');\n\n const offlineCb = windowEventSpy.mock.calls[1][1];\n await offlineCb();\n\n expect(g.fetch).toHaveBeenCalledWith(\n 'https://www.google.com/generate_204',\n expect.any(Object)\n );\n expect(callingClient['isNetworkDown']).toBe(false);\n expect(clearKeepaliveSpy).not.toHaveBeenCalled();\n });\n\n it('window online handler sets networkUpTimestamp and logs', async () => {\n const onlineCb = windowEventSpy.mock.calls[0][1];\n await onlineCb();\n\n expect(callingClient['networkUpTimestamp']).toEqual(expect.any(String));\n expect(infoSpy).toHaveBeenCalledWith(METHOD_START_MESSAGE, {\n file: CALLING_CLIENT_FILE,\n method: 'handleNetworkOnline',\n });\n });\n\n it('mercury offline submits metrics and sets timestamp', async () => {\n const mercuryOfflineCb = webex.internal.mercury.on.mock.calls[1][1];\n await mercuryOfflineCb();\n\n expect(warnSpy).toHaveBeenCalledWith(\n expect.stringContaining('Mercury down, waiting for connection to be up'),\n {\n file: CALLING_CLIENT_FILE,\n method: 'handleMercuryOffline',\n }\n );\n expect(callingClient['mercuryDownTimestamp']).toEqual(expect.any(String));\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_DOWN,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n ''\n );\n });\n\n it('handles reconnection with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).toHaveBeenCalledWith(true);\n expect(logSpy).toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).toHaveBeenCalledWith();\n expect(restoreSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('no reconnection for idle registration with no active calls after network flap, once mercury comes back up', async () => {\n const handleConnectionRestoreSpy = jest.spyOn(reg, 'handleConnectionRestoration');\n\n callingClient['isNetworkDown'] = true;\n callingClient['networkDownTimestamp'] = '2023-01-01T00:00:00.000Z';\n callingClient['networkUpTimestamp'] = '2023-01-01T00:01:00.000Z';\n reg.setStatus(RegistrationStatus.IDLE);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n // Run the interval once\n jest.advanceTimersByTime(NETWORK_FLAP_TIMEOUT + 100);\n\n await flushPromises();\n\n expect(handleConnectionRestoreSpy).not.toHaveBeenCalledWith(true);\n expect(logSpy).not.toHaveBeenCalledWith(\n 'Network is up again, re-registering with Webex Calling if needed',\n {\n file: REGISTRATION_FILE,\n method: 'handleConnectionRestoration',\n }\n );\n expect(deRegSpy).not.toHaveBeenCalledWith();\n expect(restoreSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(restartRegisterSpy).not.toHaveBeenCalledWith('handleConnectionRestoration');\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [\n reg.getActiveMobiusUrl(),\n ]);\n expect(registerSpy).not.toHaveBeenCalledWith('handleConnectionRestoration', [primaryUrl]);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n '2023-01-01T00:00:00.000Z',\n '2023-01-01T00:01:00.000Z'\n );\n });\n\n it('handle calls status check once mercury comes back up after a network flap', async () => {\n callingClient['isNetworkDown'] = true;\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.NETWORK_FLAP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n\n it('handle calls status check once mercury comes back up with stable network', async () => {\n const call = callingClient['callManager'].createCall();\n const callKeepaliveSpy = jest\n .spyOn(call, 'postStatus')\n .mockRejectedValueOnce(new Error('keepalive fail'));\n const deleteSpy = jest.spyOn(call, 'delete');\n expect(Object.keys(callingClient['callManager'].getActiveCalls()).length).toBe(1);\n\n const mercuryOnlineCb = webex.internal.mercury.on.mock.calls[2][1];\n await mercuryOnlineCb();\n\n expect(callKeepaliveSpy).toHaveBeenCalled();\n\n await flushPromises();\n\n expect(warnSpy).toHaveBeenCalledWith(expect.stringContaining('Call Keepalive failed'), {\n file: CALLING_CLIENT_FILE,\n method: 'checkCallStatus',\n });\n expect(call['callStateMachine'].state.value).toBe('S_CALL_CLEARED');\n expect(deleteSpy).toHaveBeenCalled();\n\n expect(Object.keys(reg.callManager.getActiveCalls()).length).toBe(0);\n expect(metricSpy).toHaveBeenCalledWith(\n METRIC_EVENT.CONNECTION_ERROR,\n CONNECTION_ACTION.MERCURY_UP,\n METRIC_TYPE.BEHAVIORAL,\n expect.any(String),\n expect.any(String)\n );\n });\n });\n\n // Calling related test cases\n describe('Calling tests', () => {\n const mutex = new Mutex();\n const userId = webex.internal.device.userId;\n const clientDeviceUri = webex.internal.device.url;\n const mobiusUris = filterMobiusUris(getMobiusDiscoveryResponse(), URL);\n const primaryMobiusUris = jest.fn(() => mobiusUris.primary);\n const backupMobiusUris = jest.fn(() => mobiusUris.backup);\n\n let callingClient;\n let line: Line;\n\n beforeAll(async () => {\n callingClient = await createClient(webex);\n line = new Line(\n userId,\n clientDeviceUri,\n mutex,\n primaryMobiusUris(),\n backupMobiusUris(),\n LOGGER.INFO\n );\n const calls = Object.values(callManager.getActiveCalls());\n calls.forEach((call) => {\n call.end();\n });\n });\n\n afterAll(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify calling client object', () => {\n expect(callingClient.getSDKConnector().getWebex().internal.device.userId).toBe(\n '8a67806f-fc4d-446b-a131-31e71ea5b0e9'\n );\n });\n\n it('returns undefined when there is no connected call', () => {\n line.register();\n line.makeCall({address: '123456', type: CallType.URI});\n expect(callingClient.getConnectedCall()).toEqual(undefined);\n });\n\n it('returns the connected call', () => {\n line.register();\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n // Connected call\n mockCall['connected'] = true;\n mockCall['earlyMedia'] = false;\n mockCall['callStateMachine'].state.value = 'S_CALL_ESTABLISHED';\n\n // Held call\n mockCall2['connected'] = true;\n mockCall2['held'] = true;\n mockCall2['earlyMedia'] = false;\n mockCall2['callStateMachine'].state.value = 'S_CALL_HOLD';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getConnectedCall()).toEqual(mockCall);\n });\n it('returns all active calls', () => {\n callingClient.lineDict = {\n mockDeviceId: {lineId: 'mockLineId'} as ILine,\n mockDeviceId2: {lineId: 'mockLineId2'} as ILine,\n };\n\n const mockCall = line.makeCall({address: '1234', type: CallType.URI});\n const mockCall2 = line.makeCall({address: '5678', type: CallType.URI});\n const mockCall3 = line.makeCall({address: '9101', type: CallType.URI});\n\n mockCall.lineId = 'mockLineId';\n mockCall2.lineId = 'mockLineId2';\n mockCall3.lineId = 'mockLineId2';\n\n const mockActiveCalls: Record<string, ICall> = {\n mockCorrelationId: mockCall as ICall,\n mockCorrelationId2: mockCall2 as ICall,\n mockCorrelationId3: mockCall3 as ICall,\n };\n\n jest.spyOn(callManager, 'getActiveCalls').mockReturnValue(mockActiveCalls);\n expect(callingClient.getActiveCalls()).toEqual({\n mockLineId: [mockCall],\n mockLineId2: [mockCall2, mockCall3],\n });\n });\n });\n\n describe('Call Session Event test', () => {\n const mockOn = webex.internal.mercury.on;\n let callingClient: ICallingClient;\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n });\n\n it('verify the recent user session event ', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data).toEqual(MOCK_SESSION_EVENT.data);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_SESSION_EVENT);\n });\n\n it('drop the recent user session if there is no webex calling type', (done) => {\n expect.assertions(2);\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.USER_SESSION_INFO, (event: CallSessionEvent) => {\n expect(event.data.userSessions.userSessions.length).toEqual(1);\n done();\n });\n\n expect(mockOn.mock.calls[0][0]).toEqual(MOBIUS_EVENT_KEYS.CALL_SESSION_EVENT_INCLUSIVE);\n const callSessionCallback = mockOn.mock.calls[0][1];\n\n callSessionCallback(MOCK_MULTIPLE_SESSIONS_EVENT);\n });\n });\n\n describe('Mobius async_event routing', () => {\n let callingClient: ICallingClient;\n let asyncEventCallback;\n let mobiusSocketMock;\n\n beforeEach(async () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: true});\n APIRequest.resetInstance();\n APIRequest.getInstance({webex});\n\n mobiusSocketMock = (\n jest.requireMock('../mobius-socket') as {\n getMobiusSocketInstance: (w: unknown) => unknown;\n }\n ).getMobiusSocketInstance(webex) as {\n on: jest.Mock;\n off: jest.Mock;\n };\n (mobiusSocketMock.on as jest.Mock).mockClear();\n (mobiusSocketMock.off as jest.Mock).mockClear();\n\n callingClient = await createClient(webex, {\n logger: {level: LOGGER.INFO},\n });\n\n const asyncEventOnCall = (mobiusSocketMock.on as jest.Mock).mock.calls.find(\n (call) => call[0] === 'event:async_event'\n );\n asyncEventCallback = asyncEventOnCall[1];\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: false});\n });\n\n it('routes mobius.* async events to callManager', async () => {\n const callEventSpy = jest\n .spyOn(callingClient['callManager'], 'dequeueWsEvents')\n .mockImplementation(() => undefined);\n\n await asyncEventCallback({\n type: 'async_event',\n data: {\n eventType: 'mobius.call',\n callId: 'fcf86aa5-5539-4c9f-8b72-667786ae9b6c',\n callUrl: 'https://mobius-a.wbx2.com/api/v1/calling/web/devices/d1/calls/c1',\n deviceId: 'd1',\n correlationId: 'corr-1',\n },\n });\n\n expect(callEventSpy).toHaveBeenCalledWith(\n expect.objectContaining({\n type: 'async_event',\n data: expect.objectContaining({\n eventType: 'mobius.call',\n }),\n })\n );\n });\n });\n\n describe('Mobius socket connection events', () => {\n let callingClient: ICallingClient;\n let mobiusSocketMock;\n\n const getSocketHandlerFor = (eventName: string) => {\n const onCall = (mobiusSocketMock.on as jest.Mock).mock.calls.find(\n (call) => call[0] === eventName\n );\n\n return onCall[1];\n };\n\n beforeEach(async () => {\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: true});\n APIRequest.resetInstance();\n APIRequest.getInstance({webex});\n\n mobiusSocketMock = (\n jest.requireMock('../mobius-socket') as {\n getMobiusSocketInstance: (w: unknown) => unknown;\n }\n ).getMobiusSocketInstance(webex) as {\n on: jest.Mock;\n off: jest.Mock;\n isConnected: jest.Mock;\n };\n (mobiusSocketMock.on as jest.Mock).mockClear();\n (mobiusSocketMock.off as jest.Mock).mockClear();\n (mobiusSocketMock.isConnected as jest.Mock).mockReturnValue(false);\n\n callingClient = await createClient(webex, {\n logger: {level: LOGGER.INFO},\n });\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n callManager.removeAllListeners();\n webex.internal.device.features.developer.get = jest.fn().mockReturnValue({value: false});\n });\n\n it('emits MOBIUS_SOCKET_CONNECTED when the socket comes online', () => {\n const listener = jest.fn();\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_CONNECTED, listener);\n\n getSocketHandlerFor('online')();\n\n expect(listener).toHaveBeenCalledTimes(1);\n });\n\n it.each([\n ['offline.permanent', MOBIUS_SOCKET_DISCONNECT_REASON.PERMANENT],\n ['offline.transient', MOBIUS_SOCKET_DISCONNECT_REASON.TRANSIENT],\n ['offline.replaced', MOBIUS_SOCKET_DISCONNECT_REASON.REPLACED],\n ])(\n 'emits MOBIUS_SOCKET_DISCONNECTED with the matching reason when %s fires',\n (eventName, reason) => {\n const listener = jest.fn();\n callingClient.on(CALLING_CLIENT_EVENT_KEYS.MOBIUS_SOCKET_DISCONNECTED, listener);\n\n getSocketHandlerFor(eventName as string)();\n\n expect(listener).toHaveBeenCalledTimes(1);\n expect(listener).toHaveBeenCalledWith({reason});\n }\n );\n\n it.each([true, false])(\n 'isMobiusSocketConnected() reflects the underlying socket state (%s) when WSS is enabled',\n (connected) => {\n (mobiusSocketMock.isConnected as jest.Mock).mockReturnValue(connected);\n\n expect(callingClient.isMobiusSocketConnected()).toBe(connected);\n }\n );\n });\n\n describe('getDevices', () => {\n let callingClient: ICallingClient;\n const primaryMobius = 'https://mobius.primary/api/v1/calling/web/';\n const backupMobius = 'https://mobius.backup/api/v1/calling/web/';\n\n beforeEach(async () => {\n callingClient = await createClient(webex, {logger: {level: LOGGER.INFO}});\n callingClient.primaryMobiusUris = [primaryMobius];\n callingClient.backupMobiusUris = [backupMobius];\n (webex.request as jest.Mock).mockClear();\n });\n\n afterEach(() => {\n callingClient.removeAllListeners();\n });\n\n it('fetches devices for the provided userId', async () => {\n const devices = [\n {\n deviceId: 'device-1',\n uri: 'https://mobius.test/api/v1/calling/web/devices/device-1',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock).mockResolvedValue(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n expect(webex.request).toHaveBeenCalledWith({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n\n it('falls back to backup Mobius when primary fails', async () => {\n const devices = [\n {\n deviceId: 'device-2',\n uri: 'https://mobius.backup/api/v1/calling/web/devices/device-2',\n status: 'ACTIVE',\n lastSeen: '2024-01-01T00:00:00Z',\n addresses: [],\n clientDeviceUri: 'client-device-uri',\n },\n ];\n\n const failurePayload = {\n statusCode: 404,\n };\n\n const responsePayload = <WebexRequestPayload>(<unknown>{\n statusCode: 200,\n body: {userId: 'user-123', devices},\n });\n\n (webex.request as jest.Mock)\n .mockRejectedValueOnce(failurePayload)\n .mockResolvedValueOnce(responsePayload);\n\n const response = await callingClient.getDevices('user-123');\n\n const requestCalls = (webex.request as jest.Mock).mock.calls;\n expect(requestCalls[0][0]).toEqual({\n uri: 'https://mobius.primary/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(requestCalls[1][0]).toEqual({\n uri: 'https://mobius.backup/api/v1/calling/web/devices?userid=user-123',\n method: HTTP_METHODS.GET,\n service: ALLOWED_SERVICES.MOBIUS,\n headers: {\n [CISCO_DEVICE_URL]: webex.internal.device.url,\n [SPARK_USER_AGENT]: CALLING_USER_AGENT,\n },\n });\n\n expect(response).toEqual(devices);\n });\n });\n\n describe('windowsChromiumIceWarmup', () => {\n let origRTCPeerConnection: any;\n\n beforeAll(() => {\n origRTCPeerConnection = global.RTCPeerConnection;\n // Minimal mock for RTCPeerConnection\n global.RTCPeerConnection = class {\n static instances: any[] = [];\n iceGatheringState = 'complete';\n localDescription = null;\n remoteDescription = null;\n onicecandidate: ((e: any) => void) | null = null;\n constructor() {\n (this.constructor as any).instances.push(this);\n }\n\n createDataChannel() {\n return {};\n }\n\n addTransceiver() {\n return {};\n }\n\n createOffer() {\n return Promise.resolve({sdp: 'offer', type: 'offer'});\n }\n\n setLocalDescription(desc: any) {\n this.localDescription = desc;\n\n return Promise.resolve();\n }\n\n setRemoteDescription(desc: any) {\n this.remoteDescription = desc;\n\n return Promise.resolve();\n }\n\n createAnswer() {\n return Promise.resolve({sdp: 'answer', type: 'answer'});\n }\n\n addIceCandidate() {\n return Promise.resolve();\n }\n\n close() {}\n addEventListener() {}\n removeEventListener() {}\n };\n });\n\n afterAll(() => {\n global.RTCPeerConnection = origRTCPeerConnection;\n });\n\n it('should complete without throwing', async () => {\n await expect(windowsChromiumIceWarmup({})).resolves.not.toThrow();\n });\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -49,6 +49,7 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
49
49
|
(0, _defineProperty2.default)(_this, "serviceIndicator", void 0);
|
|
50
50
|
(0, _defineProperty2.default)(_this, "lineDict", void 0);
|
|
51
51
|
(0, _defineProperty2.default)(_this, "apiRequest", void 0);
|
|
52
|
+
(0, _defineProperty2.default)(_this, "isMobiusSocketListenerRegistered", false);
|
|
52
53
|
/**
|
|
53
54
|
* @param direction -.
|
|
54
55
|
* @param deviceId -.
|
|
@@ -120,16 +121,34 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
120
121
|
file: _constants2.CALL_MANAGER_FILE,
|
|
121
122
|
method: _constants2.METHODS.UPDATE_ACTIVE_MOBIUS
|
|
122
123
|
});
|
|
124
|
+
|
|
125
|
+
/*
|
|
126
|
+
* The active transport is resolved per Mobius server group during registration: a
|
|
127
|
+
* group with no WSS URL falls back to HTTP even while the Mobius socket feature is
|
|
128
|
+
* enabled, so the final transport is only known once registration succeeds. Re-align
|
|
129
|
+
* the Mobius event source with that transport now that the device has registered.
|
|
130
|
+
*/
|
|
131
|
+
this.listenForWsEvents();
|
|
123
132
|
}
|
|
124
133
|
|
|
125
134
|
/**
|
|
126
|
-
*
|
|
135
|
+
* Aligns the Mobius event source with the active transport.
|
|
136
|
+
*
|
|
137
|
+
* Call events reach {@link dequeueWsEvents} over one of two paths:
|
|
138
|
+
* - HTTP transport: a Mercury `event:mobius` listener owned by this CallManager.
|
|
139
|
+
* - WebSocket transport: CallingClient forwards Mobius socket events to dequeueWsEvents().
|
|
140
|
+
*
|
|
141
|
+
* Because the transport can fall back from WSS to HTTP per server group during
|
|
142
|
+
* registration, this is invoked both at construction and whenever the active Mobius
|
|
143
|
+
* URL changes. It registers the Mercury listener for HTTP and removes it for the
|
|
144
|
+
* WebSocket transport, and is idempotent so repeated calls do not duplicate listeners.
|
|
127
145
|
*/
|
|
128
146
|
}, {
|
|
129
147
|
key: "listenForWsEvents",
|
|
130
148
|
value: function listenForWsEvents() {
|
|
131
149
|
var _this2 = this;
|
|
132
|
-
|
|
150
|
+
var socketEnabled = this.apiRequest.isSocketEnabled();
|
|
151
|
+
if (!socketEnabled && !this.isMobiusSocketListenerRegistered) {
|
|
133
152
|
this.sdkConnector.registerListener('event:mobius', /*#__PURE__*/function () {
|
|
134
153
|
var _ref = (0, _asyncToGenerator2.default)(/*#__PURE__*/_regenerator.default.mark(function _callee(event) {
|
|
135
154
|
return _regenerator.default.wrap(function (_context) {
|
|
@@ -146,10 +165,18 @@ var CallManager = exports.CallManager = /*#__PURE__*/function (_Eventing) {
|
|
|
146
165
|
return _ref.apply(this, arguments);
|
|
147
166
|
};
|
|
148
167
|
}());
|
|
168
|
+
this.isMobiusSocketListenerRegistered = true;
|
|
149
169
|
_Logger.default.info('Successfully registered listener for Mobius events', {
|
|
150
170
|
file: _constants2.CALL_MANAGER_FILE,
|
|
151
171
|
method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
|
|
152
172
|
});
|
|
173
|
+
} else if (socketEnabled && this.isMobiusSocketListenerRegistered) {
|
|
174
|
+
this.sdkConnector.unregisterListener('event:mobius');
|
|
175
|
+
this.isMobiusSocketListenerRegistered = false;
|
|
176
|
+
_Logger.default.info('Unregistered Mercury listener for Mobius events; using WebSocket transport', {
|
|
177
|
+
file: _constants2.CALL_MANAGER_FILE,
|
|
178
|
+
method: _constants2.METHODS.REGISTER_SESSIONS_LISTENER
|
|
179
|
+
});
|
|
153
180
|
}
|
|
154
181
|
}
|
|
155
182
|
|