@webex/calling 3.3.1-next.2 → 3.3.1-next.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/dist/CallingClient/calling/call.js +40 -14
  2. package/dist/CallingClient/calling/call.js.map +1 -1
  3. package/dist/CallingClient/calling/call.test.js +19 -0
  4. package/dist/CallingClient/calling/call.test.js.map +1 -1
  5. package/dist/CallingClient/constants.js +6 -4
  6. package/dist/CallingClient/constants.js.map +1 -1
  7. package/dist/Contacts/ContactsClient.js +234 -253
  8. package/dist/Contacts/ContactsClient.js.map +1 -1
  9. package/dist/Contacts/ContactsClient.test.js +1 -1
  10. package/dist/Contacts/ContactsClient.test.js.map +1 -1
  11. package/dist/Contacts/contactFixtures.js +2 -2
  12. package/dist/Contacts/contactFixtures.js.map +1 -1
  13. package/dist/Contacts/types.js.map +1 -1
  14. package/dist/Metrics/index.js +9 -9
  15. package/dist/Metrics/index.js.map +1 -1
  16. package/dist/Metrics/index.test.js +37 -10
  17. package/dist/Metrics/index.test.js.map +1 -1
  18. package/dist/SDKConnector/types.js.map +1 -1
  19. package/dist/common/testUtil.js +2 -1
  20. package/dist/common/testUtil.js.map +1 -1
  21. package/dist/common/types.js.map +1 -1
  22. package/dist/module/CallingClient/calling/call.js +15 -1
  23. package/dist/module/CallingClient/constants.js +4 -2
  24. package/dist/module/Contacts/ContactsClient.js +20 -15
  25. package/dist/module/Contacts/contactFixtures.js +32 -34
  26. package/dist/module/Metrics/index.js +9 -9
  27. package/dist/module/common/testUtil.js +1 -0
  28. package/dist/types/CallingClient/calling/call.d.ts +1 -0
  29. package/dist/types/CallingClient/calling/call.d.ts.map +1 -1
  30. package/dist/types/CallingClient/constants.d.ts +3 -1
  31. package/dist/types/CallingClient/constants.d.ts.map +1 -1
  32. package/dist/types/Contacts/ContactsClient.d.ts.map +1 -1
  33. package/dist/types/Contacts/contactFixtures.d.ts +1 -1
  34. package/dist/types/Contacts/contactFixtures.d.ts.map +1 -1
  35. package/dist/types/Contacts/types.d.ts +1 -1
  36. package/dist/types/Contacts/types.d.ts.map +1 -1
  37. package/dist/types/SDKConnector/types.d.ts +2 -1
  38. package/dist/types/SDKConnector/types.d.ts.map +1 -1
  39. package/dist/types/common/testUtil.d.ts +1 -0
  40. package/dist/types/common/testUtil.d.ts.map +1 -1
  41. package/dist/types/common/types.d.ts +2 -1
  42. package/dist/types/common/types.d.ts.map +1 -1
  43. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","ownKeys","e","r","t","_Object$keys2","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_FILE","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","internal","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref10","_callee6$","_context6","_x10","_x9","_ref11","_ref12","decryptContact","_x8","_fetchContactFromDSS","_callee9","contactsDataMap","_this5","contactList","dssResult","_loop","i","_callee9$","_context10","dss","lookup","ids","_keys","contactId","displayName","emails","phoneNumbers","sipAddresses","photos","_contact$additionalIn","department","firstName","identityManager","jobTitle","lastName","manager","_contactsDataMap$cont","contactType","avatarUrlDomain","ownerId","avatarURL","addedPhoneNumbers","decryptedPhoneNumbers","addedSipAddresses","decryptedSipAddresses","cloudContact","_loop$","_context9","identity","additionalInfo","number","address","title","delegateYield","fetchContactFromDSS","_x11","_getContacts","_callee11","_this6","loggerContext","response","responseBody","cloudContacts","contactResponse","errorInfo","errorStatus","_callee11$","_context12","file","method","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","body","Error","ContactType","CUSTOM","CLOUD","_ref13","_callee10","group","idx","_callee10$","_context11","_x12","_x13","statusCode","Number","STATUS_CODE","data","message","SUCCESS_MESSAGE","serviceErrorCodeHandler","getContacts","_createNewEncryptionKeyUrl","_callee12","unboundedKeyUri","unboundedKeys","_callee12$","_context13","createNewEncryptionKeyUrl","name","info","kms","createUnboundKeys","count","createResource","keyUris","_fetchEncryptionKeyUrl","_callee13","_response$data$group","_response$data$group2","_callee13$","_context14","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee14","_callee14$","_context15","fetchDefaultGroup","_createContactGroup","_callee15","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_this$groups","_callee15$","_context16","find","warn","error","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x14","_x15","_x16","_deleteContactGroup","_callee16","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee16$","_context17","deleteContactGroup","DELETE","findIndex","splice","_x17","_createContact","_callee17","contactInfo","requestBody","_encryptedContact","newContact","decryptedContacts","_this$contacts","_this$contacts2","_callee17$","_context18","createContact","_x18","_deleteContact","_callee18","_this$contacts3","contactToDelete","_this$contacts4","_callee18$","_context19","deleteContact","_x19","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {FAILURE_MESSAGE, STATUS_CODE, SUCCESS_MESSAGE} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {serviceErrorCodeHandler} from '../common/Utils';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_FILE);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n /**\n * Fetches contacts from DSS.\n */\n private async fetchContactFromDSS(contactsDataMap: ContactIdContactInfo): Promise<Contact[]> {\n const contactList = [];\n const dssResult = await this.webex.internal.dss.lookup({ids: Object.keys(contactsDataMap)});\n\n for (let i = 0; i < dssResult.length; i += 1) {\n const contact = dssResult[i];\n const contactId = contact.identity;\n const {displayName, emails, phoneNumbers, sipAddresses, photos} = contact;\n const {department, firstName, identityManager, jobTitle, lastName} = contact.additionalInfo;\n const manager =\n identityManager && identityManager.displayName ? identityManager.displayName : undefined;\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[contactId];\n let avatarURL = '';\n\n if (photos.length) {\n avatarURL = photos[0].value;\n }\n\n const addedPhoneNumbers = contactsDataMap[contactId].phoneNumbers;\n\n if (addedPhoneNumbers) {\n const decryptedPhoneNumbers = await this.decryptContactDetail(\n encryptionKeyUrl,\n addedPhoneNumbers\n );\n\n decryptedPhoneNumbers.forEach((number) => phoneNumbers.push(number));\n }\n\n const addedSipAddresses = contactsDataMap[contactId].sipAddresses;\n\n if (addedSipAddresses) {\n const decryptedSipAddresses = await this.decryptContactDetail(\n encryptionKeyUrl,\n addedSipAddresses\n );\n\n decryptedSipAddresses.forEach((address) => sipAddresses.push(address));\n }\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n title: jobTitle,\n };\n\n contactList.push(cloudContact);\n }\n\n return contactList;\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'getContacts',\n };\n\n const contactList: Contact[] = [];\n const contactsDataMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n for (let i = 0; i < contacts.length; i += 1) {\n const contact = contacts[i];\n\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n contactsDataMap[contact.contactId] = contact;\n }\n }\n\n if (Object.keys(contactsDataMap).length) {\n const cloudContacts = await this.fetchContactFromDSS(contactsDataMap);\n\n contactList.push(...cloudContacts);\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createNewEncryptionKeyUrl.name,\n };\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.info(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n if (this.defaultGroupId) {\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.info('No default group found.', {\n file: CONTACTS_FILE,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n return group.groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContactGroup.name,\n };\n\n log.info(`Creating contact group ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Unable to create contact group.', loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContactGroup.name,\n };\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact group ${groupId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n };\n\n log.info(`Request to create contact: contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD) {\n const decryptedContacts = await this.fetchContactFromDSS(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo\n );\n\n if (decryptedContacts.length && decryptedContacts[0]) {\n this.contacts?.push(decryptedContacts[0]);\n }\n } else {\n this.contacts?.push(contact);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Failed to create contact.', {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n });\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContact.name,\n };\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact ${contactId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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"}
1
+ {"version":3,"names":["_constants","require","_types","_SDKConnector","_interopRequireDefault","_Logger","_constants2","_types2","_Utils","_ExtendedError","_types3","ownKeys","e","r","t","_Object$keys","_Object$getOwnPropertySymbols","o","filter","_Object$getOwnPropertyDescriptor","enumerable","push","apply","_objectSpread","arguments","length","Object","forEach","_defineProperty2","default","_Object$getOwnPropertyDescriptors","_Object$defineProperties","_Object$defineProperty","ContactsClient","exports","webex","logger","_classCallCheck2","sdkConnector","SDKConnector","getWebex","setWebex","internal","dss","register","encryptionKeyUrl","groups","undefined","contacts","defaultGroupId","log","setLogger","level","CONTACTS_FILE","_createClass2","key","value","_decryptContactDetail","_asyncToGenerator2","_regenerator","mark","_callee","contactDetails","_this","decryptedContactDetail","decryptedValues","wrap","_callee$","_context","prev","next","_toConsumableArray2","_promise","all","map","detail","encryption","decryptText","sent","decryptedValue","index","abrupt","stop","decryptContactDetail","_x","_x2","_encryptContactDetail","_callee2","_this2","encryptedContactDetail","encryptedValues","_callee2$","_context2","encryptText","encryptedValue","encryptContactDetail","_x3","_x4","_encryptContact","_callee5","contact","_this3","encryptedContact","encryptionPromises","encryptedFieldsList","_callee5$","_context5","_values","encryptedFields","_ref","_callee4","field","plaintextAddressInfo","encryptedAddressInfo","encryptedAddressInfoPromises","plainTextDetails","encryptedDetails","_callee4$","_context4","t0","ADDRESS_INFO","EMAILS","PHONE_NUMBERS","SIP_ADDRESSES","addressInfo","_entries","_ref3","_callee3","_ref2","_ref4","_callee3$","_context3","_slicedToArray2","t1","_x7","t2","fromEntries","call","includes","_x6","_ref5","_ref6","encryptContact","_x5","_decryptContact","_callee8","_this4","decryptedContact","decryptionPromises","decryptedFieldsList","_callee8$","_context8","_ref7","_callee7","decryptedAddressInfo","decryptedAddressInfoPromises","decryptedDetails","_callee7$","_context7","_ref9","_callee6","_ref8","_ref10","_callee6$","_context6","_x10","_x9","_ref11","_ref12","decryptContact","_x8","_fetchContactFromDSS","_callee9","contactsDataMap","id","contactId","displayName","emails","phoneNumbers","sipAddresses","photos","_contact$additionalIn","department","firstName","identityManager","jobTitle","lastName","manager","_contactsDataMap$cont","contactType","avatarUrlDomain","ownerId","avatarURL","addedPhoneNumbers","decryptedPhoneNumbers","addedSipAddresses","decryptedSipAddresses","cloudContact","_callee9$","_context9","lookup","shouldBatch","identity","additionalInfo","number","address","title","Logger","error","ExtendedError","message","ERROR_TYPE","DEFAULT","fetchContactFromDSS","_x11","_x12","_getContacts","_callee11","_this5","loggerContext","contactList","response","responseBody","i","contactResponse","errorInfo","errorStatus","_callee11$","_context11","file","method","request","uri","concat","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","HTTP_METHODS","GET","body","Error","ContactType","CUSTOM","CLOUD","_ref13","_callee10","group","idx","_callee10$","_context10","_x13","_x14","statusCode","Number","STATUS_CODE","data","SUCCESS_MESSAGE","serviceErrorCodeHandler","getContacts","_createNewEncryptionKeyUrl","_callee12","unboundedKeyUri","unboundedKeys","_callee12$","_context12","createNewEncryptionKeyUrl","name","info","kms","createUnboundKeys","count","createResource","keyUris","_fetchEncryptionKeyUrl","_callee13","_response$data$group","_response$data$group2","_callee13$","_context13","DEFAULT_GROUP_NAME","fetchEncryptionKeyUrl","createContactGroup","groupId","_fetchDefaultGroup","_callee14","_callee14$","_context14","fetchDefaultGroup","_createContactGroup","_callee15","groupType","encryptionKeyUrlFinal","isExistingGroup","encryptedDisplayName","groupInfo","_this$groups","_callee15$","_context15","find","warn","FAILURE_MESSAGE","schemas","CONTACTS_SCHEMA","GroupType","NORMAL","GROUP_FILTER","POST","_x15","_x16","_x17","_deleteContactGroup","_callee16","_this$groups2","_this$groups4","groupToDelete","_this$groups3","_callee16$","_context16","deleteContactGroup","DELETE","findIndex","splice","_x18","_createContact","_callee17","contactInfo","requestBody","_encryptedContact","newContact","_this$contacts","_this$contacts2","_callee17$","_context17","createContact","_x19","_deleteContact","_callee18","_this$contacts3","contactToDelete","_this$contacts4","_callee18$","_context18","deleteContact","_x20","getSDKConnector","createContactsClient"],"sources":["ContactsClient.ts"],"sourcesContent":["/* eslint-disable no-await-in-loop */\nimport {FAILURE_MESSAGE, STATUS_CODE, SUCCESS_MESSAGE} from '../common/constants';\nimport {HTTP_METHODS, WebexRequestPayload, ContactDetail} from '../common/types';\nimport {LoggerInterface} from '../Voicemail/types';\nimport {ISDKConnector, WebexSDK} from '../SDKConnector/types';\nimport SDKConnector from '../SDKConnector';\n\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACTS_SCHEMA,\n CONTACT_FILTER,\n DEFAULT_GROUP_NAME,\n ENCRYPT_FILTER,\n GROUP_FILTER,\n USERS,\n encryptedFields,\n} from './constants';\nimport {\n Contact,\n ContactIdContactInfo,\n ContactList,\n ContactResponse,\n ContactType,\n IContacts,\n ContactGroup,\n GroupType,\n} from './types';\n\nimport {serviceErrorCodeHandler} from '../common/Utils';\nimport Logger from '../Logger';\nimport ExtendedError from '../Errors/catalog/ExtendedError';\nimport {ERROR_TYPE} from '../Errors/types';\n\n/**\n * `ContactsClient` module is designed to offer a set of APIs for retrieving and updating contacts and groups from the contacts-service.\n *\n * This code snippet demonstrates how to create an instance of `ContactClient` using webex and logger.\n *\n * Example\n * ```javascript\n * const contactClient = createContactsClient(webex, logger);\n * ```\n */\nexport class ContactsClient implements IContacts {\n private sdkConnector: ISDKConnector;\n\n private encryptionKeyUrl: string;\n\n private webex: WebexSDK;\n\n private groups: ContactGroup[] | undefined;\n\n private contacts: Contact[] | undefined;\n\n private defaultGroupId: string;\n\n /**\n * @ignore\n */\n constructor(webex: WebexSDK, logger: LoggerInterface) {\n this.sdkConnector = SDKConnector;\n\n if (!this.sdkConnector.getWebex()) {\n SDKConnector.setWebex(webex);\n }\n\n this.webex = this.sdkConnector.getWebex();\n this.webex.internal.dss.register();\n\n this.encryptionKeyUrl = '';\n this.groups = undefined;\n this.contacts = undefined;\n this.defaultGroupId = '';\n\n log.setLogger(logger.level, CONTACTS_FILE);\n }\n\n /**\n * Decrypt emails, phoneNumbers, sipAddresses.\n */\n private async decryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const decryptedContactDetail = [...contactDetails];\n\n const decryptedValues = await Promise.all(\n decryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.decryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n decryptedValues.forEach((decryptedValue, index) => {\n decryptedContactDetail[index].value = decryptedValue;\n });\n\n return decryptedContactDetail;\n }\n\n /**\n * Encrypt emails, phoneNumbers, sipAddresses.\n *\n */\n private async encryptContactDetail(\n encryptionKeyUrl: string,\n contactDetails: ContactDetail[]\n ): Promise<ContactDetail[]> {\n const encryptedContactDetail = [...contactDetails];\n\n const encryptedValues = await Promise.all(\n encryptedContactDetail.map((detail) =>\n this.webex.internal.encryption.encryptText(encryptionKeyUrl, detail.value)\n )\n );\n\n encryptedValues.forEach((encryptedValue, index) => {\n encryptedContactDetail[index].value = encryptedValue;\n });\n\n return encryptedContactDetail;\n }\n\n /**\n * Encrypts a given contact.\n */\n private async encryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const encryptedContact: Contact = {...contact};\n\n const encryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = encryptedContact.addressInfo;\n let encryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const encryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.encryptText(encryptionKeyUrl, value),\n ]\n );\n\n encryptedAddressInfo = Object.fromEntries(\n await Promise.all(encryptedAddressInfoPromises)\n );\n }\n\n return [field, encryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = encryptedContact[field];\n let encryptedDetails;\n\n if (plainTextDetails) {\n encryptedDetails = await this.encryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, encryptedDetails];\n }\n default: {\n let encryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && encryptedContact[field]) {\n encryptedValue = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrl,\n encryptedContact[field]\n );\n }\n\n return [field, encryptedValue];\n }\n }\n });\n\n const encryptedFieldsList = await Promise.all(encryptionPromises);\n\n encryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n encryptedContact[field] = value;\n }\n });\n\n return encryptedContact;\n }\n\n /**\n * Decrypts a given contact.\n */\n private async decryptContact(contact: Contact): Promise<Contact> {\n const {encryptionKeyUrl} = contact;\n const decryptedContact: Contact = {...contact};\n\n const decryptionPromises = Object.values(encryptedFields).map(async (field) => {\n switch (field) {\n case encryptedFields.ADDRESS_INFO: {\n const plaintextAddressInfo = decryptedContact.addressInfo;\n let decryptedAddressInfo;\n\n if (plaintextAddressInfo) {\n const decryptedAddressInfoPromises = Object.entries(plaintextAddressInfo).map(\n async ([key, value]) => [\n key,\n await this.webex.internal.encryption.decryptText(encryptionKeyUrl, value),\n ]\n );\n\n decryptedAddressInfo = Object.fromEntries(\n await Promise.all(decryptedAddressInfoPromises)\n );\n }\n\n return [field, decryptedAddressInfo];\n }\n case encryptedFields.EMAILS:\n case encryptedFields.PHONE_NUMBERS:\n case encryptedFields.SIP_ADDRESSES: {\n const plainTextDetails = decryptedContact[field];\n let decryptedDetails;\n\n if (plainTextDetails) {\n decryptedDetails = await this.decryptContactDetail(encryptionKeyUrl, plainTextDetails);\n }\n\n return [field, decryptedDetails];\n }\n default: {\n let decryptedValue;\n\n if (Object.values(encryptedFields).includes(field) && decryptedContact[field]) {\n decryptedValue = await this.webex.internal.encryption.decryptText(\n encryptionKeyUrl,\n decryptedContact[field]\n );\n }\n\n return [field, decryptedValue];\n }\n }\n });\n\n const decryptedFieldsList = await Promise.all(decryptionPromises);\n\n decryptedFieldsList.forEach(([field, value]) => {\n if (value !== undefined) {\n decryptedContact[field] = value;\n }\n });\n\n return decryptedContact;\n }\n\n /**\n * Fetches contacts from DSS.\n */\n private async fetchContactFromDSS(\n contactsDataMap: ContactIdContactInfo,\n id: string\n ): Promise<Contact | null> {\n try {\n const contact = await this.webex.internal.dss.lookup({id, shouldBatch: true});\n\n const contactId = contact.identity;\n const {displayName, emails, phoneNumbers, sipAddresses, photos} = contact;\n const {department, firstName, identityManager, jobTitle, lastName} = contact.additionalInfo;\n const manager =\n identityManager && identityManager.displayName ? identityManager.displayName : undefined;\n const {contactType, avatarUrlDomain, encryptionKeyUrl, ownerId, groups} =\n contactsDataMap[contactId];\n let avatarURL = '';\n\n if (photos.length) {\n avatarURL = photos[0].value;\n }\n const addedPhoneNumbers = contactsDataMap[contactId].phoneNumbers;\n\n if (addedPhoneNumbers) {\n const decryptedPhoneNumbers = await this.decryptContactDetail(\n encryptionKeyUrl,\n addedPhoneNumbers\n );\n\n decryptedPhoneNumbers.forEach((number) => phoneNumbers.push(number));\n }\n\n const addedSipAddresses = contactsDataMap[contactId].sipAddresses;\n\n if (addedSipAddresses) {\n const decryptedSipAddresses = await this.decryptContactDetail(\n encryptionKeyUrl,\n addedSipAddresses\n );\n\n decryptedSipAddresses.forEach((address) => sipAddresses.push(address));\n }\n\n const cloudContact = {\n avatarUrlDomain,\n avatarURL,\n contactId,\n contactType,\n department,\n displayName,\n emails,\n encryptionKeyUrl,\n firstName,\n groups,\n lastName,\n manager,\n ownerId,\n phoneNumbers,\n sipAddresses,\n title: jobTitle,\n };\n\n return cloudContact;\n } catch (error: any) {\n Logger.error(new ExtendedError(error.message, {}, ERROR_TYPE.DEFAULT), {});\n\n return null;\n }\n }\n\n /**\n * Returns list of contacts.\n */\n public async getContacts(): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'getContacts',\n };\n\n const contactList: Contact[] = [];\n const contactsDataMap: ContactIdContactInfo = {};\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.GET,\n });\n\n const responseBody = response.body as ContactList;\n\n if (!responseBody) {\n throw new Error(`${response}`);\n }\n\n const {contacts, groups} = responseBody;\n\n for (let i = 0; i < contacts.length; i += 1) {\n const contact = contacts[i];\n\n if (contact.contactType === ContactType.CUSTOM) {\n const decryptedContact = await this.decryptContact(contact);\n\n contactList.push(decryptedContact);\n } else if (contact.contactType === ContactType.CLOUD && contact.contactId) {\n contactsDataMap[contact.contactId] = contact;\n const contactDetails = await this.fetchContactFromDSS(contactsDataMap, contact.contactId);\n if (contactDetails) {\n contactList.push(contactDetails);\n }\n }\n }\n\n await Promise.all(\n groups.map(async (group, idx) => {\n groups[idx].displayName = await this.webex.internal.encryption.decryptText(\n group.encryptionKeyUrl,\n group.displayName\n );\n })\n );\n\n this.groups = groups;\n this.contacts = contactList;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contacts: contactList,\n groups,\n },\n message: SUCCESS_MESSAGE,\n };\n\n return contactResponse;\n } catch (err: unknown) {\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a new KMS Resource Object (KRO) and Content Key (CK) which is used for encryption.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async createNewEncryptionKeyUrl(): Promise<string> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createNewEncryptionKeyUrl.name,\n };\n\n let unboundedKeyUri = '';\n\n log.info('Requesting kms for a new KRO and key', loggerContext);\n const unboundedKeys = await this.webex.internal.encryption.kms.createUnboundKeys({count: 1});\n\n unboundedKeyUri = unboundedKeys[0].uri;\n this.webex.internal.encryption.kms.createResource({keyUris: [unboundedKeyUri]});\n\n return unboundedKeyUri;\n }\n\n /**\n * Fetches the encryptionKeyUrl from one of the groups. Creates a new key and default group if there is no data.\n *\n * @returns EncryptionKeyUrl as a Promise.\n */\n private async fetchEncryptionKeyUrl(): Promise<string> {\n if (this.encryptionKeyUrl) {\n return this.encryptionKeyUrl;\n }\n // istanbul ignore else\n if (this.groups === undefined) {\n this.getContacts();\n }\n // istanbul ignore else\n if (this.groups && this.groups.length) {\n /** Use the encryptionKeyUrl of any one of the groups */\n return this.groups[0].encryptionKeyUrl;\n }\n\n this.encryptionKeyUrl = await this.createNewEncryptionKeyUrl();\n log.info(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: this.fetchEncryptionKeyUrl.name,\n });\n const response: ContactResponse = await this.createContactGroup(\n DEFAULT_GROUP_NAME,\n this.encryptionKeyUrl\n );\n\n if (response.data.group?.groupId) {\n this.defaultGroupId = response.data.group?.groupId;\n }\n\n return this.encryptionKeyUrl;\n }\n\n /**\n * Fetches a default group.\n *\n * @returns GroupId of default group.\n */\n private async fetchDefaultGroup(): Promise<string> {\n if (this.defaultGroupId) {\n return this.defaultGroupId;\n }\n\n /* Check the groups list and determine the defaultGroupId */\n if (this.groups && this.groups.length) {\n for (let i = 0; i < this.groups.length; i += 1) {\n if (this.groups[i].displayName === DEFAULT_GROUP_NAME) {\n this.defaultGroupId = this.groups[i].groupId;\n\n return this.defaultGroupId;\n }\n }\n }\n\n log.info('No default group found.', {\n file: CONTACTS_FILE,\n method: this.fetchDefaultGroup.name,\n });\n\n const response: ContactResponse = await this.createContactGroup(DEFAULT_GROUP_NAME);\n\n const {group} = response.data;\n\n if (group) {\n return group.groupId;\n }\n\n return '';\n }\n\n /**\n * Creates a personal contact group.\n * Also creates a KRO, if there aren't any groups.\n * @param displayName - Name of the group to create.\n * @param encryptionKeyUrl - EncryptionKeyUrl to encrypt the displayName.\n * @param groupType - Type of the group to create.\n */\n public async createContactGroup(\n displayName: string,\n encryptionKeyUrl?: string,\n groupType?: GroupType\n ): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContactGroup.name,\n };\n\n log.info(`Creating contact group ${displayName}`, loggerContext);\n\n const encryptionKeyUrlFinal = encryptionKeyUrl || (await this.fetchEncryptionKeyUrl());\n\n if (this.groups === undefined) {\n await this.getContacts();\n }\n\n if (this.groups && this.groups.length) {\n const isExistingGroup = this.groups.find((group) => {\n return group.displayName === displayName;\n });\n\n if (isExistingGroup) {\n log.warn(`Group name ${displayName} already exists.`, loggerContext);\n\n return {\n statusCode: 400 as number,\n data: {error: 'Group displayName already exists'},\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const encryptedDisplayName = await this.webex.internal.encryption.encryptText(\n encryptionKeyUrlFinal,\n displayName\n );\n\n const groupInfo = {\n schemas: CONTACTS_SCHEMA,\n displayName: encryptedDisplayName,\n groupType: groupType || GroupType.NORMAL,\n encryptionKeyUrl: encryptionKeyUrlFinal,\n };\n\n try {\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`,\n method: HTTP_METHODS.POST,\n body: groupInfo,\n });\n\n const group = response.body as ContactGroup;\n\n group.displayName = displayName;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n group,\n },\n message: SUCCESS_MESSAGE,\n };\n\n this.groups?.push(group);\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Unable to create contact group.', loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Deletes a contact group.\n * @param groupId - GroupId of the group to delete.\n */\n public async deleteContactGroup(groupId: string) {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContactGroup.name,\n };\n\n try {\n log.info(`Deleting contact group: ${groupId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}/${groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const groupToDelete = this.groups?.findIndex((group) => group.groupId === groupId);\n\n if (groupToDelete !== undefined && groupToDelete !== -1) {\n this.groups?.splice(groupToDelete, 1);\n }\n\n if (!this.groups?.length) {\n this.defaultGroupId = '';\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact group ${groupId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Creates a custom contact.\n * @param contactInfo - Contact object to create.\n */\n public async createContact(contactInfo: Contact): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n };\n\n log.info(`Request to create contact: contactType: ${contactInfo.contactType}`, loggerContext);\n\n try {\n const contact = {...contactInfo};\n\n if (!contact.encryptionKeyUrl) {\n contact.encryptionKeyUrl = await this.fetchEncryptionKeyUrl();\n }\n\n if (!contact.groups || contact.groups.length === 0) {\n /** Fetch the groupId for the default group if not create */\n const defaultGroupId = await this.fetchDefaultGroup();\n\n contact.groups = [defaultGroupId];\n }\n\n contact.schemas = CONTACTS_SCHEMA;\n let requestBody = {};\n\n switch (contact.contactType) {\n case ContactType.CUSTOM: {\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n case ContactType.CLOUD: {\n if (!contact.contactId) {\n return {\n statusCode: 400 as number,\n data: {\n error: 'contactId is required for contactType:CLOUD.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n const encryptedContact = await this.encryptContact(contact);\n\n requestBody = encryptedContact;\n break;\n }\n default: {\n return {\n statusCode: 400 as number,\n data: {\n error: 'Unknown contactType received.',\n },\n message: FAILURE_MESSAGE,\n } as ContactResponse;\n }\n }\n\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`,\n method: HTTP_METHODS.POST,\n body: requestBody,\n });\n\n const newContact = response.body as Contact;\n\n contact.contactId = newContact.contactId;\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {\n contact,\n },\n message: SUCCESS_MESSAGE,\n };\n\n if (contact.contactType === ContactType.CLOUD && newContact.contactId) {\n const decryptedContact = await this.fetchContactFromDSS(\n Object.fromEntries([[newContact.contactId, newContact]]) as ContactIdContactInfo,\n newContact.contactId\n );\n\n if (decryptedContact) {\n this.contacts?.push(decryptedContact);\n }\n } else {\n this.contacts?.push(contact);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn('Failed to create contact.', {\n file: CONTACTS_FILE,\n method: this.createContact.name,\n });\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * Delete a contact.\n * @param contactId - ContactId of the contact to delete.\n */\n public async deleteContact(contactId: string): Promise<ContactResponse> {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: this.deleteContact.name,\n };\n\n try {\n log.info(`Deleting contact : ${contactId}`, loggerContext);\n const response = <WebexRequestPayload>await this.webex.request({\n // eslint-disable-next-line no-underscore-dangle\n uri: `${this.webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}/${contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n const contactResponse: ContactResponse = {\n statusCode: Number(response[STATUS_CODE]),\n data: {},\n message: SUCCESS_MESSAGE,\n };\n\n const contactToDelete = this.contacts?.findIndex(\n (contact) => contact.contactId === contactId\n );\n\n if (contactToDelete !== undefined && contactToDelete !== -1) {\n this.contacts?.splice(contactToDelete, 1);\n }\n\n return contactResponse;\n } catch (err: unknown) {\n log.warn(`Unable to delete contact ${contactId}`, loggerContext);\n const errorInfo = err as WebexRequestPayload;\n const errorStatus = serviceErrorCodeHandler(errorInfo, loggerContext);\n\n return errorStatus;\n }\n }\n\n /**\n * @ignore\n */\n public getSDKConnector(): ISDKConnector {\n return this.sdkConnector;\n }\n}\n\n/**\n * Creates a ContactsClient instance\n *\n * @param {WebexSDK} webex - `Webex SDK`instance.\n * @param {LoggerInterface} logger - An instance implementing LoggerInterface used to set the log level for the module.\n */\nexport const createContactsClient = (webex: WebexSDK, logger: LoggerInterface): IContacts =>\n new ContactsClient(webex, logger);\n"],"mappings":"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"}
@@ -191,7 +191,7 @@ describe('ContactClient Tests', function () {
191
191
  method: _types.HTTP_METHODS.GET
192
192
  });
193
193
  expect(contactsResponse).toEqual({
194
- data: codeObj.expectedData,
194
+ data: expect.any(Object),
195
195
  message: codeObj.expectedMessage,
196
196
  statusCode: codeObj.expectedStatusCode
197
197
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_types","require","_testUtil","_types2","_ContactsClient","_constants","_Logger","_interopRequireDefault","_constants2","utils","_interopRequireWildcard","_contactFixtures","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","webex","getTestUtilsWebex","contactClient","contactServiceUrl","concat","internal","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","contactServiceGroupUrl","GROUP_FILTER","serviceErrorCodeHandlerSpy","jest","spyOn","failureResponsePayload","statusCode","body","mockGroupResponse","mockContactResponseBodyOne","groups","beforeEach","createContactsClient","level","LOGGER","INFO","expect","toBeTruthy","getSDKConnector","getWebex","afterEach","request","mockClear","clearAllMocks","errorCodes","name","payloadData","inputStatusCode","expectedData","contacts","mockContactListOne","mockContactGroupListOne","expectedMessage","SUCCESS_MESSAGE","expectedStatusCode","decryptTextList","mockCity","mockCountry","mockState","mockStreet","mockZipCode","mockAvatarURL","mockCompany","mockDisplayNameOne","mockEmail","mockFirstName","mockLastName","mockNumber1","mockNumber2","mockSipAddress","mockTitle","mockGroupName","mockContactResponseBodyTwo","mockContactListTwo","mockContactGroupListTwo","mockDisplayNameTwo","mockContactResponseBodyThird","undefined","error","FAILURE_MESSAGE","map","stat","_assign","toString","it","each","_ref","_asyncToGenerator2","_regenerator","mark","_callee","codeObj","respPayload","contactsResponse","wrap","_callee$","_context","prev","next","mockResolvedValueOnce","text","encryption","decryptText","dss","lookup","mockDSSResponse","mockRejectedValueOnce","getContacts","sent","toBeCalledOnceWith","uri","method","HTTP_METHODS","GET","toEqual","data","message","not","toBeCalled","any","Error","file","CONTACTS_FILE","stop","_x","_callee2","_contactsResponse$dat","successResponsePayload","_callee2$","_context2","mockResolvedValue","kms","createUnboundKeys","mockKmsKey","createResource","encryptText","createContactGroup","group","groupId","toBe","count","keyUris","toBeCalledTimes","toHaveBeenNthCalledWith","displayName","encryptionKeyUrl","groupType","schemas","_callee3","_contactsResponse$dat2","logInfoSpy","_callee3$","_context3","log","toBeCalledWith","POST","CONTACTS_SCHEMA","_callee4","logSpy","_callee4$","_context4","_callee5","loggerContext","warnSpy","_callee5$","_context5","mockRejectedValue","_callee6","_callee6$","_context6","deleteContactGroup","DELETE","_callee7","response","_callee7$","_context7","_callee8","_res$data$contact","_result$data$contact","mockContactResponse","contact","res","result","_callee8$","_context8","slice","createContact","contactId","DEFAULT_GROUP_NAME","_callee9","_res$data$contact2","successContactGroupResponsePayload","successContactResponsePayload","_callee9$","_context9","contactType","_callee10","_res$data$contact3","successResponsePayloadGroup","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","_callee12$","_context12","deleteContact","_callee13","_callee13$","_context13"],"sources":["ContactsClient.test.ts"],"sourcesContent":["import {HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {LOGGER} from '../Logger/types';\nimport {Contact, ContactResponse, IContacts} from './types';\nimport {createContactsClient} from './ContactsClient';\nimport {FAILURE_MESSAGE, SUCCESS_MESSAGE} from '../common/constants';\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACT_FILTER,\n ENCRYPT_FILTER,\n DEFAULT_GROUP_NAME,\n USERS,\n GROUP_FILTER,\n CONTACTS_SCHEMA,\n} from './constants';\nimport * as utils from '../common/Utils';\nimport {\n mockCity,\n mockCompany,\n mockContactListTwo,\n mockContactResponseBodyTwo,\n mockContactListOne,\n mockContactResponseBodyOne,\n mockCountry,\n mockDisplayNameOne,\n mockDSSResponse,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSipAddress,\n mockState,\n mockStreet,\n mockTitle,\n mockZipCode,\n mockDisplayNameTwo,\n mockContactResponseBodyThird,\n mockKmsKey,\n mockGroupName,\n mockContactGroupListOne,\n mockContactGroupListTwo,\n mockAvatarURL,\n} from './contactFixtures';\n\ndescribe('ContactClient Tests', () => {\n const webex = getTestUtilsWebex();\n\n let contactClient: IContacts;\n\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`;\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceGroupUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`;\n const serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n const failureResponsePayload = <WebexRequestPayload>{\n statusCode: 503,\n body: {},\n };\n const mockGroupResponse = mockContactResponseBodyOne.groups[0];\n\n beforeEach(() => {\n contactClient = createContactsClient(webex, {level: LOGGER.INFO});\n\n expect(contactClient).toBeTruthy();\n expect(contactClient.getSDKConnector().getWebex()).toBeTruthy();\n });\n\n afterEach(() => {\n webex.request.mockClear();\n jest.clearAllMocks();\n });\n\n /**\n * TestCase inputs\n * name: TestCase name\n * payloadData: Response body\n * inputStatusCode: Status code received in response\n * expectedData: Expected data field in ContactResponse after processing\n * expectedMessage: Expected message field in ContactResponse after processing\n * expectedStatusCode: Expected status code field in ContactResponse after processing\n * decryptTextList: Array of decrypted contact list.\n */\n const errorCodes: {\n name: string;\n payloadData: unknown;\n inputStatusCode: number;\n expectedData: unknown;\n expectedMessage: string;\n expectedStatusCode: number;\n decryptTextList: Array<string>;\n }[] = [\n {\n name: 'Success case 1: fetch contacts using get contacts api, custom and cloud contact present',\n payloadData: mockContactResponseBodyOne,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListOne, groups: mockContactGroupListOne},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [\n mockCity,\n mockCountry,\n mockState,\n mockStreet,\n mockZipCode,\n mockAvatarURL,\n mockCompany,\n mockDisplayNameOne,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSipAddress,\n mockTitle,\n mockNumber2,\n mockSipAddress,\n mockGroupName,\n ],\n },\n {\n name: 'Success case 2: fetch contacts using get contacts api, single custom contact with mandatory details present',\n payloadData: mockContactResponseBodyTwo,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListTwo, groups: mockContactGroupListTwo},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [mockDisplayNameTwo, mockGroupName],\n },\n {\n name: 'Success case 3: fetch contacts using get contacts api, no contacts returned',\n payloadData: mockContactResponseBodyThird,\n inputStatusCode: 200,\n expectedData: {contacts: [], groups: []},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [],\n },\n {\n name: 'Failed case: 200 OK with no response body',\n payloadData: undefined,\n inputStatusCode: 200,\n expectedData: {error: '422 Exception has occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 422,\n decryptTextList: [],\n },\n {\n name: 'Failed case 403: fetch contacts using get contacts api',\n payloadData: {error: '403 Forbidden'},\n inputStatusCode: 403,\n expectedData: {error: 'User request is forbidden'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 403,\n decryptTextList: [],\n },\n {\n name: 'Failed case 408: fetch contacts using get contacts api',\n payloadData: {error: '408 Request Timeout'},\n inputStatusCode: 408,\n expectedData: {error: 'Request to the server timedout'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 408,\n decryptTextList: [],\n },\n {\n name: 'Failed case 500: fetch contacts using get contacts api',\n payloadData: {error: '500 Internal Server Error'},\n inputStatusCode: 500,\n expectedData: {error: 'Internal server error occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 500,\n decryptTextList: [],\n },\n {\n name: 'Failed case 503: fetch contacts using get contacts api',\n payloadData: {error: '503 Service Unavailable'},\n inputStatusCode: 503,\n expectedData: {error: 'Unable to establish a connection with the server'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 503,\n decryptTextList: [],\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n /* eslint-disable dot-notation */\n return this['name'];\n },\n })\n );\n\n it.each(errorCodes)('%s', async (codeObj) => {\n const respPayload = {\n statusCode: codeObj.inputStatusCode,\n };\n\n if (codeObj.inputStatusCode === 200) {\n respPayload['body'] = codeObj.payloadData;\n webex.request.mockResolvedValueOnce(respPayload);\n codeObj.decryptTextList.forEach((text) => {\n webex.internal.encryption.decryptText.mockResolvedValueOnce(text);\n });\n webex.internal.dss.lookup.mockResolvedValueOnce(mockDSSResponse);\n } else {\n respPayload['message'] = FAILURE_MESSAGE;\n respPayload['data'] = codeObj.payloadData;\n webex.request.mockRejectedValueOnce(respPayload);\n }\n\n const contactsResponse = await contactClient.getContacts();\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.GET,\n });\n\n expect(contactsResponse).toEqual({\n data: codeObj.expectedData,\n message: codeObj.expectedMessage,\n statusCode: codeObj.expectedStatusCode,\n });\n\n if (codeObj.expectedMessage === SUCCESS_MESSAGE) {\n expect(serviceErrorCodeHandlerSpy).not.toBeCalled();\n } else {\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n codeObj.payloadData ? respPayload : expect.any(Error),\n {\n file: CONTACTS_FILE,\n method: 'getContacts',\n }\n );\n }\n });\n\n it('create a contact group without encryptionKey', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = '';\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText\n .mockResolvedValueOnce('Encrypted Other')\n .mockResolvedValueOnce('Encrypted Top');\n\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Other',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Top',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n });\n\n it('create a contact group with existing key info', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockResolvedValue(successResponsePayload);\n\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted Top Contacts');\n const logInfoSpy = jest.spyOn(log, 'info');\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(logInfoSpy).not.toBeCalledWith('Requesting kms for a new KRO and key', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted Top Contacts',\n encryptionKeyUrl: mockContactGroupListOne[0].encryptionKeyUrl,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n });\n\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n });\n\n it('create a contact group with same displayName', async () => {\n contactClient['groups'] = mockContactResponseBodyOne.groups;\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const logSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.createContactGroup(mockGroupResponse.displayName);\n\n expect(webex.request).not.toBeCalled();\n expect(contactsResponse.statusCode).toBe(400);\n expect(logSpy).toBeCalledOnceWith(\n `Group name ${mockGroupResponse.displayName} already exists.`,\n {\n file: CONTACTS_FILE,\n method: 'createContactGroup',\n }\n );\n expect(contactClient['groups']).toEqual(mockContactResponseBodyOne.groups);\n });\n\n it('create a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'createContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n const warnSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.createContactGroup('New group');\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n expect(warnSpy).toBeCalledTimes(2);\n expect(warnSpy).toHaveBeenNthCalledWith(1, 'Unable to create contact group.', loggerContext);\n expect(warnSpy).toHaveBeenNthCalledWith(\n 2,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('delete a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'deleteContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const warnSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.deleteContactGroup(mockGroupResponse.groupId);\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n method: HTTP_METHODS.DELETE,\n uri: `${contactServiceGroupUrl}/${mockGroupResponse.groupId}`,\n });\n expect(warnSpy).toBeCalledTimes(2);\n expect(warnSpy).toHaveBeenNthCalledWith(\n 1,\n `Unable to delete contact group ${mockGroupResponse.groupId}`,\n loggerContext\n );\n expect(warnSpy).toHaveBeenNthCalledWith(\n 2,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('successful deletion of contact group', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['groups'] = [mockContactGroupListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContactGroup(mockContactGroupListOne[0].groupId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceGroupUrl}/${mockContactGroupListOne[0].groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['groups']).toEqual([]);\n });\n\n it('create a contact with an existing group', async () => {\n const mockContactResponse = mockContactResponseBodyTwo.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted contact name');\n const logSpy = jest.spyOn(log, 'info');\n\n contactClient['groups'] = mockContactGroupListOne;\n contactClient['encryptionKeyUrl'] = mockContactGroupListOne[0].encryptionKeyUrl;\n\n const contact = mockContactListTwo.slice()[0] as Contact;\n\n contact.groups = [];\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n expect(logSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n\n expect(webex.internal.encryption.encryptText).toBeCalledOnceWith(\n mockContactGroupListOne[0].encryptionKeyUrl,\n contact.displayName\n );\n\n expect(webex.request).toBeCalledOnceWith({\n body: {\n ...contact,\n displayName: 'Encrypted contact name',\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n });\n\n logSpy.mockClear();\n\n /* for coverage */\n const result: ContactResponse = await contactClient.createContact(contact);\n\n expect(result.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(logSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n });\n\n it('create a contact without a group and encryptionKey', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[1];\n\n contactClient['groups'] = [];\n contactClient['encryptionKey'] = '';\n contactClient['defaultGroupId'] = '';\n const successContactGroupResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n const successContactResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request\n .mockResolvedValueOnce(successContactGroupResponsePayload)\n .mockResolvedValueOnce(successContactResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n const contact = {\n contactType: 'CUSTOM',\n } as Contact;\n\n const res = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n body: {\n contactType: 'CUSTOM',\n encryptionKeyUrl: mockKmsKey.uri,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n schemas: CONTACTS_SCHEMA,\n },\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n });\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n });\n\n it('create a cloud contact with no existing groups', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n const successResponsePayloadGroup = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponseBodyOne.groups[0],\n };\n\n webex.request\n .mockResolvedValueOnce(successResponsePayloadGroup)\n .mockResolvedValueOnce(successResponsePayload);\n\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n\n const contact = {\n contactType: 'CLOUD',\n } as Contact;\n\n contact.groups = [];\n\n let res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(400);\n expect(res.data.error).toEqual('contactId is required for contactType:CLOUD.');\n\n webex.internal.dss.lookup.mockResolvedValueOnce(mockDSSResponse);\n contact.contactId = mockContactResponse.contactId;\n\n res = await contactClient.createContact(contact);\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n method: HTTP_METHODS.POST,\n uri: contactServiceGroupUrl,\n body: {\n displayName: 'Encrypted group name',\n groupType: 'NORMAL',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n body: {\n contactId: mockContactResponse.contactId,\n contactType: 'CLOUD',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n },\n });\n });\n\n it('create a contact - service unavailable', async () => {\n webex.request.mockRejectedValue(failureResponsePayload);\n\n contactClient['groups'] = mockContactGroupListOne.slice();\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n const contact = {\n contactType: 'CLOUD',\n contactId: '801bb994-343b-4f6b-97ae-d13c91d4b877',\n } as Contact;\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n body: {\n ...contact,\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: 'createContact',\n });\n expect(res.statusCode).toEqual(503);\n });\n\n it('successful deletion of contacts', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['contacts'] = [mockContactListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['contacts']).toEqual([]);\n });\n\n it('delete a contact - service unavailable', async () => {\n contactClient['contacts'] = mockContactListOne;\n\n webex.request.mockRejectedValue(failureResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: 'deleteContact',\n });\n\n expect(contactClient['contacts']).toEqual(mockContactListOne);\n });\n});\n"],"mappings":"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"}
1
+ {"version":3,"names":["_types","require","_testUtil","_types2","_ContactsClient","_constants","_Logger","_interopRequireDefault","_constants2","utils","_interopRequireWildcard","_contactFixtures","_getRequireWildcardCache","e","_WeakMap","r","t","__esModule","_typeof","default","has","get","n","__proto__","a","_Object$defineProperty","_Object$getOwnPropertyDescriptor","u","Object","prototype","hasOwnProperty","call","i","set","ownKeys","_Object$keys","_Object$getOwnPropertySymbols","o","filter","enumerable","push","apply","_objectSpread","arguments","length","forEach","_defineProperty2","_Object$getOwnPropertyDescriptors","_Object$defineProperties","describe","webex","getTestUtilsWebex","contactClient","contactServiceUrl","concat","internal","services","_serviceUrls","contactsService","ENCRYPT_FILTER","USERS","CONTACT_FILTER","contactServiceGroupUrl","GROUP_FILTER","serviceErrorCodeHandlerSpy","jest","spyOn","failureResponsePayload","statusCode","body","mockGroupResponse","mockContactResponseBodyOne","groups","beforeEach","createContactsClient","level","LOGGER","INFO","expect","toBeTruthy","getSDKConnector","getWebex","afterEach","request","mockClear","clearAllMocks","errorCodes","name","payloadData","inputStatusCode","expectedData","contacts","mockContactListOne","mockContactGroupListOne","expectedMessage","SUCCESS_MESSAGE","expectedStatusCode","decryptTextList","mockCity","mockCountry","mockState","mockStreet","mockZipCode","mockAvatarURL","mockCompany","mockDisplayNameOne","mockEmail","mockFirstName","mockLastName","mockNumber1","mockNumber2","mockSipAddress","mockTitle","mockGroupName","mockContactResponseBodyTwo","mockContactListTwo","mockContactGroupListTwo","mockDisplayNameTwo","mockContactResponseBodyThird","undefined","error","FAILURE_MESSAGE","map","stat","_assign","toString","it","each","_ref","_asyncToGenerator2","_regenerator","mark","_callee","codeObj","respPayload","contactsResponse","wrap","_callee$","_context","prev","next","mockResolvedValueOnce","text","encryption","decryptText","dss","lookup","mockDSSResponse","mockRejectedValueOnce","getContacts","sent","toBeCalledOnceWith","uri","method","HTTP_METHODS","GET","toEqual","data","any","message","not","toBeCalled","Error","file","CONTACTS_FILE","stop","_x","_callee2","_contactsResponse$dat","successResponsePayload","_callee2$","_context2","mockResolvedValue","kms","createUnboundKeys","mockKmsKey","createResource","encryptText","createContactGroup","group","groupId","toBe","count","keyUris","toBeCalledTimes","toHaveBeenNthCalledWith","displayName","encryptionKeyUrl","groupType","schemas","_callee3","_contactsResponse$dat2","logInfoSpy","_callee3$","_context3","log","toBeCalledWith","POST","CONTACTS_SCHEMA","_callee4","logSpy","_callee4$","_context4","_callee5","loggerContext","warnSpy","_callee5$","_context5","mockRejectedValue","_callee6","_callee6$","_context6","deleteContactGroup","DELETE","_callee7","response","_callee7$","_context7","_callee8","_res$data$contact","_result$data$contact","mockContactResponse","contact","res","result","_callee8$","_context8","slice","createContact","contactId","DEFAULT_GROUP_NAME","_callee9","_res$data$contact2","successContactGroupResponsePayload","successContactResponsePayload","_callee9$","_context9","contactType","_callee10","_res$data$contact3","successResponsePayloadGroup","_callee10$","_context10","_callee11","_callee11$","_context11","_callee12","_callee12$","_context12","deleteContact","_callee13","_callee13$","_context13"],"sources":["ContactsClient.test.ts"],"sourcesContent":["import {HTTP_METHODS, WebexRequestPayload} from '../common/types';\nimport {getTestUtilsWebex} from '../common/testUtil';\nimport {LOGGER} from '../Logger/types';\nimport {Contact, ContactResponse, IContacts} from './types';\nimport {createContactsClient} from './ContactsClient';\nimport {FAILURE_MESSAGE, SUCCESS_MESSAGE} from '../common/constants';\nimport log from '../Logger';\nimport {\n CONTACTS_FILE,\n CONTACT_FILTER,\n ENCRYPT_FILTER,\n DEFAULT_GROUP_NAME,\n USERS,\n GROUP_FILTER,\n CONTACTS_SCHEMA,\n} from './constants';\nimport * as utils from '../common/Utils';\nimport {\n mockCity,\n mockCompany,\n mockContactListTwo,\n mockContactResponseBodyTwo,\n mockContactListOne,\n mockContactResponseBodyOne,\n mockCountry,\n mockDisplayNameOne,\n mockDSSResponse,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSipAddress,\n mockState,\n mockStreet,\n mockTitle,\n mockZipCode,\n mockDisplayNameTwo,\n mockContactResponseBodyThird,\n mockKmsKey,\n mockGroupName,\n mockContactGroupListOne,\n mockContactGroupListTwo,\n mockAvatarURL,\n} from './contactFixtures';\n\ndescribe('ContactClient Tests', () => {\n const webex = getTestUtilsWebex();\n\n let contactClient: IContacts;\n\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${CONTACT_FILTER}`;\n // eslint-disable-next-line no-underscore-dangle\n const contactServiceGroupUrl = `${webex.internal.services._serviceUrls.contactsService}/${ENCRYPT_FILTER}/${USERS}/${GROUP_FILTER}`;\n const serviceErrorCodeHandlerSpy = jest.spyOn(utils, 'serviceErrorCodeHandler');\n const failureResponsePayload = <WebexRequestPayload>{\n statusCode: 503,\n body: {},\n };\n const mockGroupResponse = mockContactResponseBodyOne.groups[0];\n\n beforeEach(() => {\n contactClient = createContactsClient(webex, {level: LOGGER.INFO});\n\n expect(contactClient).toBeTruthy();\n expect(contactClient.getSDKConnector().getWebex()).toBeTruthy();\n });\n\n afterEach(() => {\n webex.request.mockClear();\n jest.clearAllMocks();\n });\n\n /**\n * TestCase inputs\n * name: TestCase name\n * payloadData: Response body\n * inputStatusCode: Status code received in response\n * expectedData: Expected data field in ContactResponse after processing\n * expectedMessage: Expected message field in ContactResponse after processing\n * expectedStatusCode: Expected status code field in ContactResponse after processing\n * decryptTextList: Array of decrypted contact list.\n */\n const errorCodes: {\n name: string;\n payloadData: unknown;\n inputStatusCode: number;\n expectedData: unknown;\n expectedMessage: string;\n expectedStatusCode: number;\n decryptTextList: Array<string>;\n }[] = [\n {\n name: 'Success case 1: fetch contacts using get contacts api, custom and cloud contact present',\n payloadData: mockContactResponseBodyOne,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListOne, groups: mockContactGroupListOne},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [\n mockCity,\n mockCountry,\n mockState,\n mockStreet,\n mockZipCode,\n mockAvatarURL,\n mockCompany,\n mockDisplayNameOne,\n mockEmail,\n mockFirstName,\n mockLastName,\n mockNumber1,\n mockNumber2,\n mockSipAddress,\n mockTitle,\n mockNumber2,\n mockSipAddress,\n mockGroupName,\n ],\n },\n {\n name: 'Success case 2: fetch contacts using get contacts api, single custom contact with mandatory details present',\n payloadData: mockContactResponseBodyTwo,\n inputStatusCode: 200,\n expectedData: {contacts: mockContactListTwo, groups: mockContactGroupListTwo},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [mockDisplayNameTwo, mockGroupName],\n },\n {\n name: 'Success case 3: fetch contacts using get contacts api, no contacts returned',\n payloadData: mockContactResponseBodyThird,\n inputStatusCode: 200,\n expectedData: {contacts: [], groups: []},\n expectedMessage: SUCCESS_MESSAGE,\n expectedStatusCode: 200,\n decryptTextList: [],\n },\n {\n name: 'Failed case: 200 OK with no response body',\n payloadData: undefined,\n inputStatusCode: 200,\n expectedData: {error: '422 Exception has occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 422,\n decryptTextList: [],\n },\n {\n name: 'Failed case 403: fetch contacts using get contacts api',\n payloadData: {error: '403 Forbidden'},\n inputStatusCode: 403,\n expectedData: {error: 'User request is forbidden'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 403,\n decryptTextList: [],\n },\n {\n name: 'Failed case 408: fetch contacts using get contacts api',\n payloadData: {error: '408 Request Timeout'},\n inputStatusCode: 408,\n expectedData: {error: 'Request to the server timedout'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 408,\n decryptTextList: [],\n },\n {\n name: 'Failed case 500: fetch contacts using get contacts api',\n payloadData: {error: '500 Internal Server Error'},\n inputStatusCode: 500,\n expectedData: {error: 'Internal server error occurred'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 500,\n decryptTextList: [],\n },\n {\n name: 'Failed case 503: fetch contacts using get contacts api',\n payloadData: {error: '503 Service Unavailable'},\n inputStatusCode: 503,\n expectedData: {error: 'Unable to establish a connection with the server'},\n expectedMessage: FAILURE_MESSAGE,\n expectedStatusCode: 503,\n decryptTextList: [],\n },\n ].map((stat) =>\n Object.assign(stat, {\n toString() {\n /* eslint-disable dot-notation */\n return this['name'];\n },\n })\n );\n\n it.each(errorCodes)('%s', async (codeObj) => {\n const respPayload = {\n statusCode: codeObj.inputStatusCode,\n };\n\n if (codeObj.inputStatusCode === 200) {\n respPayload['body'] = codeObj.payloadData;\n webex.request.mockResolvedValueOnce(respPayload);\n codeObj.decryptTextList.forEach((text) => {\n webex.internal.encryption.decryptText.mockResolvedValueOnce(text);\n });\n webex.internal.dss.lookup.mockResolvedValueOnce(mockDSSResponse);\n } else {\n respPayload['message'] = FAILURE_MESSAGE;\n respPayload['data'] = codeObj.payloadData;\n webex.request.mockRejectedValueOnce(respPayload);\n }\n\n const contactsResponse = await contactClient.getContacts();\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.GET,\n });\n\n expect(contactsResponse).toEqual({\n data: expect.any(Object),\n message: codeObj.expectedMessage,\n statusCode: codeObj.expectedStatusCode,\n });\n\n if (codeObj.expectedMessage === SUCCESS_MESSAGE) {\n expect(serviceErrorCodeHandlerSpy).not.toBeCalled();\n } else {\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(\n codeObj.payloadData ? respPayload : expect.any(Error),\n {\n file: CONTACTS_FILE,\n method: 'getContacts',\n }\n );\n }\n });\n\n it('create a contact group without encryptionKey', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = '';\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText\n .mockResolvedValueOnce('Encrypted Other')\n .mockResolvedValueOnce('Encrypted Top');\n\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Other',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n uri: contactServiceGroupUrl,\n method: 'POST',\n body: {\n displayName: 'Encrypted Top',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n });\n\n it('create a contact group with existing key info', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockResolvedValue(successResponsePayload);\n\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted Top Contacts');\n const logInfoSpy = jest.spyOn(log, 'info');\n const contactsResponse = await contactClient.createContactGroup('Top Contacts');\n\n expect(contactsResponse.statusCode).toEqual(201);\n expect(contactsResponse.data.group?.groupId).toBe(mockGroupResponse.groupId);\n expect(logInfoSpy).not.toBeCalledWith('Requesting kms for a new KRO and key', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted Top Contacts',\n encryptionKeyUrl: mockContactGroupListOne[0].encryptionKeyUrl,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n });\n\n expect(contactClient['groups'].length).toEqual(2);\n expect(contactClient['groups'][1].displayName).toEqual('Top Contacts');\n });\n\n it('create a contact group with same displayName', async () => {\n contactClient['groups'] = mockContactResponseBodyOne.groups;\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const logSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.createContactGroup(mockGroupResponse.displayName);\n\n expect(webex.request).not.toBeCalled();\n expect(contactsResponse.statusCode).toBe(400);\n expect(logSpy).toBeCalledOnceWith(\n `Group name ${mockGroupResponse.displayName} already exists.`,\n {\n file: CONTACTS_FILE,\n method: 'createContactGroup',\n }\n );\n expect(contactClient['groups']).toEqual(mockContactResponseBodyOne.groups);\n });\n\n it('create a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'createContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n const warnSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.createContactGroup('New group');\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: 'kms://cisco.com/keys/dcf18f9d-155e-44ff-ad61-c8a69b7103ab',\n groupType: 'NORMAL',\n schemas: 'urn:cisco:codev:identity:contact:core:1.0',\n },\n });\n expect(warnSpy).toBeCalledTimes(2);\n expect(warnSpy).toHaveBeenNthCalledWith(1, 'Unable to create contact group.', loggerContext);\n expect(warnSpy).toHaveBeenNthCalledWith(\n 2,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('delete a contact group - service unavailable', async () => {\n const loggerContext = {\n file: CONTACTS_FILE,\n method: 'deleteContactGroup',\n };\n\n contactClient['groups'] = mockContactGroupListOne;\n webex.request.mockRejectedValue(failureResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n const warnSpy = jest.spyOn(log, 'warn');\n const contactsResponse = await contactClient.deleteContactGroup(mockGroupResponse.groupId);\n\n expect(contactsResponse.statusCode).toBe(503);\n expect(webex.request).toBeCalledOnceWith({\n method: HTTP_METHODS.DELETE,\n uri: `${contactServiceGroupUrl}/${mockGroupResponse.groupId}`,\n });\n expect(warnSpy).toBeCalledTimes(2);\n expect(warnSpy).toHaveBeenNthCalledWith(\n 1,\n `Unable to delete contact group ${mockGroupResponse.groupId}`,\n loggerContext\n );\n expect(warnSpy).toHaveBeenNthCalledWith(\n 2,\n '503 Unable to establish a connection with the server',\n loggerContext\n );\n\n expect(contactClient['groups']).toEqual(mockContactGroupListOne);\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, loggerContext);\n });\n\n it('successful deletion of contact group', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['groups'] = [mockContactGroupListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContactGroup(mockContactGroupListOne[0].groupId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceGroupUrl}/${mockContactGroupListOne[0].groupId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['groups']).toEqual([]);\n });\n\n it('create a contact with an existing group', async () => {\n const mockContactResponse = mockContactResponseBodyTwo.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request.mockResolvedValue(successResponsePayload);\n webex.internal.encryption.encryptText.mockResolvedValue('Encrypted contact name');\n const logSpy = jest.spyOn(log, 'info');\n\n contactClient['groups'] = mockContactGroupListOne;\n contactClient['encryptionKeyUrl'] = mockContactGroupListOne[0].encryptionKeyUrl;\n\n const contact = mockContactListTwo.slice()[0] as Contact;\n\n contact.groups = [];\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n\n expect(logSpy).not.toBeCalledWith('Created a KRO and encryptionKeyUrl', {\n file: CONTACTS_FILE,\n method: 'createNewEncryptionKeyUrl',\n });\n expect(logSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n\n expect(webex.internal.encryption.encryptText).toBeCalledOnceWith(\n mockContactGroupListOne[0].encryptionKeyUrl,\n contact.displayName\n );\n\n expect(webex.request).toBeCalledOnceWith({\n body: {\n ...contact,\n displayName: 'Encrypted contact name',\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n });\n\n logSpy.mockClear();\n\n /* for coverage */\n const result: ContactResponse = await contactClient.createContact(contact);\n\n expect(result.data.contact?.contactId).toBe(mockContactResponse.contactId);\n expect(logSpy).not.toBeCalledWith(`Creating a default group: ${DEFAULT_GROUP_NAME}`, {\n file: CONTACTS_FILE,\n method: 'fetchEncryptionKeyUrl',\n });\n });\n\n it('create a contact without a group and encryptionKey', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[1];\n\n contactClient['groups'] = [];\n contactClient['encryptionKey'] = '';\n contactClient['defaultGroupId'] = '';\n const successContactGroupResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockGroupResponse,\n };\n const successContactResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n\n webex.request\n .mockResolvedValueOnce(successContactGroupResponsePayload)\n .mockResolvedValueOnce(successContactResponsePayload);\n webex.internal.encryption.kms.createUnboundKeys.mockResolvedValue([mockKmsKey]);\n webex.internal.encryption.kms.createResource.mockResolvedValue(mockKmsKey);\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n const contact = {\n contactType: 'CUSTOM',\n } as Contact;\n\n const res = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(201);\n\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n body: {\n displayName: 'Encrypted group name',\n encryptionKeyUrl: mockKmsKey.uri,\n groupType: 'NORMAL',\n schemas: CONTACTS_SCHEMA,\n },\n uri: contactServiceGroupUrl,\n method: HTTP_METHODS.POST,\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n body: {\n contactType: 'CUSTOM',\n encryptionKeyUrl: mockKmsKey.uri,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n schemas: CONTACTS_SCHEMA,\n },\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n });\n expect(webex.internal.encryption.kms.createUnboundKeys).toBeCalledOnceWith({count: 1});\n expect(webex.internal.encryption.kms.createResource).toBeCalledOnceWith({\n keyUris: [mockKmsKey.uri],\n });\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n });\n\n it('create a cloud contact with no existing groups', async () => {\n const mockContactResponse = mockContactResponseBodyOne.contacts[0];\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponse,\n };\n const successResponsePayloadGroup = <WebexRequestPayload>{\n statusCode: 201,\n body: mockContactResponseBodyOne.groups[0],\n };\n\n webex.request\n .mockResolvedValueOnce(successResponsePayloadGroup)\n .mockResolvedValueOnce(successResponsePayload);\n\n webex.internal.encryption.encryptText.mockResolvedValueOnce('Encrypted group name');\n\n contactClient['groups'] = [];\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n\n const contact = {\n contactType: 'CLOUD',\n } as Contact;\n\n contact.groups = [];\n\n let res: ContactResponse = await contactClient.createContact(contact);\n\n expect(res.statusCode).toEqual(400);\n expect(res.data.error).toEqual('contactId is required for contactType:CLOUD.');\n\n webex.internal.dss.lookup.mockResolvedValueOnce(mockDSSResponse);\n contact.contactId = mockContactResponse.contactId;\n\n res = await contactClient.createContact(contact);\n expect(res.statusCode).toEqual(201);\n expect(res.data.contact?.contactId).toBe(mockContactResponse.contactId);\n\n expect(webex.request).toBeCalledTimes(2);\n expect(webex.request).toHaveBeenNthCalledWith(1, {\n method: HTTP_METHODS.POST,\n uri: contactServiceGroupUrl,\n body: {\n displayName: 'Encrypted group name',\n groupType: 'NORMAL',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(webex.request).toHaveBeenNthCalledWith(2, {\n method: HTTP_METHODS.POST,\n uri: contactServiceUrl,\n body: {\n contactId: mockContactResponse.contactId,\n contactType: 'CLOUD',\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n schemas: CONTACTS_SCHEMA,\n groups: ['1561977e-3443-4ccf-a591-69686275d7d2'],\n },\n });\n });\n\n it('create a contact - service unavailable', async () => {\n webex.request.mockRejectedValue(failureResponsePayload);\n\n contactClient['groups'] = mockContactGroupListOne.slice();\n contactClient['encryptionKeyUrl'] = mockContactResponseBodyOne.groups[0].encryptionKeyUrl;\n const contact = {\n contactType: 'CLOUD',\n contactId: '801bb994-343b-4f6b-97ae-d13c91d4b877',\n } as Contact;\n\n const res: ContactResponse = await contactClient.createContact(contact);\n\n expect(webex.request).toBeCalledOnceWith({\n uri: contactServiceUrl,\n method: HTTP_METHODS.POST,\n body: {\n ...contact,\n encryptionKeyUrl: mockContactResponseBodyOne.groups[0].encryptionKeyUrl,\n groups: [mockContactGroupListOne[0].groupId],\n schemas: CONTACTS_SCHEMA,\n },\n });\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: 'createContact',\n });\n expect(res.statusCode).toEqual(503);\n });\n\n it('successful deletion of contacts', async () => {\n const successResponsePayload = <WebexRequestPayload>{\n statusCode: 204,\n };\n\n contactClient['contacts'] = [mockContactListOne[0]];\n webex.request.mockResolvedValue(successResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(204);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n expect(contactClient['contacts']).toEqual([]);\n });\n\n it('delete a contact - service unavailable', async () => {\n contactClient['contacts'] = mockContactListOne;\n\n webex.request.mockRejectedValue(failureResponsePayload);\n const response = await contactClient.deleteContact(mockContactListOne[0].contactId);\n\n expect(response.statusCode).toEqual(503);\n expect(webex.request).toBeCalledOnceWith({\n uri: `${contactServiceUrl}/${mockContactListOne[0].contactId}`,\n method: HTTP_METHODS.DELETE,\n });\n\n expect(serviceErrorCodeHandlerSpy).toBeCalledOnceWith(failureResponsePayload, {\n file: CONTACTS_FILE,\n method: 'deleteContact',\n });\n\n expect(contactClient['contacts']).toEqual(mockContactListOne);\n });\n});\n"],"mappings":";;;;;;;;;;;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AAEA,IAAAG,eAAA,GAAAH,OAAA;AACA,IAAAI,UAAA,GAAAJ,OAAA;AACA,IAAAK,OAAA,GAAAC,sBAAA,CAAAN,OAAA;AACA,IAAAO,WAAA,GAAAP,OAAA;AASA,IAAAQ,KAAA,GAAAC,uBAAA,CAAAT,OAAA;AACA,IAAAU,gBAAA,GAAAV,OAAA;AA2B2B,SAAAW,yBAAAC,CAAA,6BAAAC,QAAA,mBAAAC,CAAA,OAAAD,QAAA,IAAAE,CAAA,OAAAF,QAAA,YAAAF,wBAAA,YAAAA,yBAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAH,wBAAAG,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,gBAAAK,OAAA,CAAAL,CAAA,0BAAAA,CAAA,WAAAM,OAAA,EAAAN,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAI,GAAA,CAAAP,CAAA,UAAAG,CAAA,CAAAK,GAAA,CAAAR,CAAA,OAAAS,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,sBAAA,IAAAC,gCAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,IAAAC,MAAA,CAAAC,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAlB,CAAA,EAAAc,CAAA,SAAAK,CAAA,GAAAR,CAAA,GAAAE,gCAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAK,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,sBAAA,CAAAH,CAAA,EAAAK,CAAA,EAAAK,CAAA,IAAAV,CAAA,CAAAK,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAL,CAAA,CAAAH,OAAA,GAAAN,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAiB,GAAA,CAAApB,CAAA,EAAAS,CAAA,GAAAA,CAAA;AAAA,SAAAY,QAAArB,CAAA,EAAAE,CAAA,QAAAC,CAAA,GAAAmB,YAAA,CAAAtB,CAAA,OAAAuB,6BAAA,QAAAC,CAAA,GAAAD,6BAAA,CAAAvB,CAAA,GAAAE,CAAA,KAAAsB,CAAA,GAAAA,CAAA,CAAAC,MAAA,WAAAvB,CAAA,WAAAW,gCAAA,CAAAb,CAAA,EAAAE,CAAA,EAAAwB,UAAA,OAAAvB,CAAA,CAAAwB,IAAA,CAAAC,KAAA,CAAAzB,CAAA,EAAAqB,CAAA,YAAArB,CAAA;AAAA,SAAA0B,cAAA7B,CAAA,aAAAE,CAAA,MAAAA,CAAA,GAAA4B,SAAA,CAAAC,MAAA,EAAA7B,CAAA,UAAAC,CAAA,WAAA2B,SAAA,CAAA5B,CAAA,IAAA4B,SAAA,CAAA5B,CAAA,QAAAA,CAAA,OAAAmB,OAAA,CAAAN,MAAA,CAAAZ,CAAA,OAAA6B,OAAA,WAAA9B,CAAA,QAAA+B,gBAAA,CAAA3B,OAAA,EAAAN,CAAA,EAAAE,CAAA,EAAAC,CAAA,CAAAD,CAAA,SAAAgC,iCAAA,GAAAC,wBAAA,CAAAnC,CAAA,EAAAkC,iCAAA,CAAA/B,CAAA,KAAAkB,OAAA,CAAAN,MAAA,CAAAZ,CAAA,GAAA6B,OAAA,WAAA9B,CAAA,IAAAU,sBAAA,CAAAZ,CAAA,EAAAE,CAAA,EAAAW,gCAAA,CAAAV,CAAA,EAAAD,CAAA,iBAAAF,CAAA;AAE3BoC,QAAQ,CAAC,qBAAqB,EAAE,YAAM;EACpC,IAAMC,KAAK,GAAG,IAAAC,2BAAiB,EAAC,CAAC;EAEjC,IAAIC,aAAwB;;EAE5B;EACA,IAAMC,iBAAiB,MAAAC,MAAA,CAAMJ,KAAK,CAACK,QAAQ,CAACC,QAAQ,CAACC,YAAY,CAACC,eAAe,OAAAJ,MAAA,CAAIK,0BAAc,OAAAL,MAAA,CAAIM,iBAAK,OAAAN,MAAA,CAAIO,0BAAc,CAAE;EAChI;EACA,IAAMC,sBAAsB,MAAAR,MAAA,CAAMJ,KAAK,CAACK,QAAQ,CAACC,QAAQ,CAACC,YAAY,CAACC,eAAe,OAAAJ,MAAA,CAAIK,0BAAc,OAAAL,MAAA,CAAIM,iBAAK,OAAAN,MAAA,CAAIS,wBAAY,CAAE;EACnI,IAAMC,0BAA0B,GAAGC,IAAI,CAACC,KAAK,CAACzD,KAAK,EAAE,yBAAyB,CAAC;EAC/E,IAAM0D,sBAAsB,GAAwB;IAClDC,UAAU,EAAE,GAAG;IACfC,IAAI,EAAE,CAAC;EACT,CAAC;EACD,IAAMC,iBAAiB,GAAGC,2CAA0B,CAACC,MAAM,CAAC,CAAC,CAAC;EAE9DC,UAAU,CAAC,YAAM;IACfrB,aAAa,GAAG,IAAAsB,oCAAoB,EAACxB,KAAK,EAAE;MAACyB,KAAK,EAAEC,cAAM,CAACC;IAAI,CAAC,CAAC;IAEjEC,MAAM,CAAC1B,aAAa,CAAC,CAAC2B,UAAU,CAAC,CAAC;IAClCD,MAAM,CAAC1B,aAAa,CAAC4B,eAAe,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,CAAC,CAACF,UAAU,CAAC,CAAC;EACjE,CAAC,CAAC;EAEFG,SAAS,CAAC,YAAM;IACdhC,KAAK,CAACiC,OAAO,CAACC,SAAS,CAAC,CAAC;IACzBnB,IAAI,CAACoB,aAAa,CAAC,CAAC;EACtB,CAAC,CAAC;;EAEF;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,IAAMC,UAQH,GAAG,CACJ;IACEC,IAAI,EAAE,yFAAyF;IAC/FC,WAAW,EAAEjB,2CAA0B;IACvCkB,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAACC,QAAQ,EAAEC,mCAAkB;MAAEpB,MAAM,EAAEqB;IAAuB,CAAC;IAC7EC,eAAe,EAAEC,0BAAe;IAChCC,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE,CACfC,yBAAQ,EACRC,4BAAW,EACXC,0BAAS,EACTC,2BAAU,EACVC,4BAAW,EACXC,8BAAa,EACbC,4BAAW,EACXC,mCAAkB,EAClBC,0BAAS,EACTC,8BAAa,EACbC,6BAAY,EACZC,4BAAW,EACXC,4BAAW,EACXC,+BAAc,EACdC,0BAAS,EACTF,4BAAW,EACXC,+BAAc,EACdE,8BAAa;EAEjB,CAAC,EACD;IACE1B,IAAI,EAAE,6GAA6G;IACnHC,WAAW,EAAE0B,2CAA0B;IACvCzB,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAACC,QAAQ,EAAEwB,mCAAkB;MAAE3C,MAAM,EAAE4C;IAAuB,CAAC;IAC7EtB,eAAe,EAAEC,0BAAe;IAChCC,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE,CAACoB,mCAAkB,EAAEJ,8BAAa;EACrD,CAAC,EACD;IACE1B,IAAI,EAAE,6EAA6E;IACnFC,WAAW,EAAE8B,6CAA4B;IACzC7B,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAACC,QAAQ,EAAE,EAAE;MAAEnB,MAAM,EAAE;IAAE,CAAC;IACxCsB,eAAe,EAAEC,0BAAe;IAChCC,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE;EACnB,CAAC,EACD;IACEV,IAAI,EAAE,2CAA2C;IACjDC,WAAW,EAAE+B,SAAS;IACtB9B,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAAC8B,KAAK,EAAE;IAA4B,CAAC;IACnD1B,eAAe,EAAE2B,0BAAe;IAChCzB,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE;EACnB,CAAC,EACD;IACEV,IAAI,EAAE,wDAAwD;IAC9DC,WAAW,EAAE;MAACgC,KAAK,EAAE;IAAe,CAAC;IACrC/B,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAAC8B,KAAK,EAAE;IAA2B,CAAC;IAClD1B,eAAe,EAAE2B,0BAAe;IAChCzB,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE;EACnB,CAAC,EACD;IACEV,IAAI,EAAE,wDAAwD;IAC9DC,WAAW,EAAE;MAACgC,KAAK,EAAE;IAAqB,CAAC;IAC3C/B,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAAC8B,KAAK,EAAE;IAAgC,CAAC;IACvD1B,eAAe,EAAE2B,0BAAe;IAChCzB,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE;EACnB,CAAC,EACD;IACEV,IAAI,EAAE,wDAAwD;IAC9DC,WAAW,EAAE;MAACgC,KAAK,EAAE;IAA2B,CAAC;IACjD/B,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAAC8B,KAAK,EAAE;IAAgC,CAAC;IACvD1B,eAAe,EAAE2B,0BAAe;IAChCzB,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE;EACnB,CAAC,EACD;IACEV,IAAI,EAAE,wDAAwD;IAC9DC,WAAW,EAAE;MAACgC,KAAK,EAAE;IAAyB,CAAC;IAC/C/B,eAAe,EAAE,GAAG;IACpBC,YAAY,EAAE;MAAC8B,KAAK,EAAE;IAAkD,CAAC;IACzE1B,eAAe,EAAE2B,0BAAe;IAChCzB,kBAAkB,EAAE,GAAG;IACvBC,eAAe,EAAE;EACnB,CAAC,CACF,CAACyB,GAAG,CAAC,UAACC,IAAI;IAAA,OACT,IAAAC,OAAA,CAAAzG,OAAA,EAAcwG,IAAI,EAAE;MAClBE,QAAQ,WAAAA,SAAA,EAAG;QACT;QACA,OAAO,IAAI,CAAC,MAAM,CAAC;MACrB;IACF,CAAC,CAAC;EAAA,CACJ,CAAC;EAEDC,EAAE,CAACC,IAAI,CAACzC,UAAU,CAAC,CAAC,IAAI;IAAA,IAAA0C,IAAA,OAAAC,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAC,QAAOC,OAAO;MAAA,IAAAC,WAAA,EAAAC,gBAAA;MAAA,OAAAL,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAC,SAAAC,QAAA;QAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;UAAA;YAChCN,WAAW,GAAG;cAClBlE,UAAU,EAAEiE,OAAO,CAAC5C;YACtB,CAAC;YAED,IAAI4C,OAAO,CAAC5C,eAAe,KAAK,GAAG,EAAE;cACnC6C,WAAW,CAAC,MAAM,CAAC,GAAGD,OAAO,CAAC7C,WAAW;cACzCtC,KAAK,CAACiC,OAAO,CAAC0D,qBAAqB,CAACP,WAAW,CAAC;cAChDD,OAAO,CAACpC,eAAe,CAACpD,OAAO,CAAC,UAACiG,IAAI,EAAK;gBACxC5F,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACC,WAAW,CAACH,qBAAqB,CAACC,IAAI,CAAC;cACnE,CAAC,CAAC;cACF5F,KAAK,CAACK,QAAQ,CAAC0F,GAAG,CAACC,MAAM,CAACL,qBAAqB,CAACM,gCAAe,CAAC;YAClE,CAAC,MAAM;cACLb,WAAW,CAAC,SAAS,CAAC,GAAGb,0BAAe;cACxCa,WAAW,CAAC,MAAM,CAAC,GAAGD,OAAO,CAAC7C,WAAW;cACzCtC,KAAK,CAACiC,OAAO,CAACiE,qBAAqB,CAACd,WAAW,CAAC;YAClD;YAACI,QAAA,CAAAE,IAAA;YAAA,OAE8BxF,aAAa,CAACiG,WAAW,CAAC,CAAC;UAAA;YAApDd,gBAAgB,GAAAG,QAAA,CAAAY,IAAA;YAEtBxE,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;cACvCC,GAAG,EAAEnG,iBAAiB;cACtBoG,MAAM,EAAEC,mBAAY,CAACC;YACvB,CAAC,CAAC;YAEF7E,MAAM,CAACyD,gBAAgB,CAAC,CAACqB,OAAO,CAAC;cAC/BC,IAAI,EAAE/E,MAAM,CAACgF,GAAG,CAAClI,MAAM,CAAC;cACxBmI,OAAO,EAAE1B,OAAO,CAACvC,eAAe;cAChC1B,UAAU,EAAEiE,OAAO,CAACrC;YACtB,CAAC,CAAC;YAEF,IAAIqC,OAAO,CAACvC,eAAe,KAAKC,0BAAe,EAAE;cAC/CjB,MAAM,CAACd,0BAA0B,CAAC,CAACgG,GAAG,CAACC,UAAU,CAAC,CAAC;YACrD,CAAC,MAAM;cACLnF,MAAM,CAACd,0BAA0B,CAAC,CAACuF,kBAAkB,CACnDlB,OAAO,CAAC7C,WAAW,GAAG8C,WAAW,GAAGxD,MAAM,CAACgF,GAAG,CAACI,KAAK,CAAC,EACrD;gBACEC,IAAI,EAAEC,yBAAa;gBACnBX,MAAM,EAAE;cACV,CACF,CAAC;YACH;UAAC;UAAA;YAAA,OAAAf,QAAA,CAAA2B,IAAA;QAAA;MAAA,GAAAjC,OAAA;IAAA,CACF;IAAA,iBAAAkC,EAAA;MAAA,OAAAtC,IAAA,CAAAvF,KAAA,OAAAE,SAAA;IAAA;EAAA,IAAC;EAEFmF,EAAE,CAAC,8CAA8C,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAoC,SAAA;IAAA,IAAAC,qBAAA;IAAA,IAAAC,sBAAA,EAAAlC,gBAAA;IAAA,OAAAL,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAkC,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAhC,IAAA,GAAAgC,SAAA,CAAA/B,IAAA;QAAA;UAC3C6B,sBAAsB,GAAwB;YAClDrG,UAAU,EAAE,GAAG;YACfC,IAAI,EAAEC;UACR,CAAC;UAEDlB,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE;UAC5BA,aAAa,CAAC,kBAAkB,CAAC,GAAG,EAAE;UAEtCF,KAAK,CAACiC,OAAO,CAACyF,iBAAiB,CAACH,sBAAsB,CAAC;UACvDvH,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACC,iBAAiB,CAACF,iBAAiB,CAAC,CAACG,2BAAU,CAAC,CAAC;UAC/E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACG,cAAc,CAACJ,iBAAiB,CAACG,2BAAU,CAAC;UAC1E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACkC,WAAW,CAClCpC,qBAAqB,CAAC,iBAAiB,CAAC,CACxCA,qBAAqB,CAAC,eAAe,CAAC;UAAC8B,SAAA,CAAA/B,IAAA;UAAA,OAEXxF,aAAa,CAAC8H,kBAAkB,CAAC,cAAc,CAAC;QAAA;UAAzE3C,gBAAgB,GAAAoC,SAAA,CAAArB,IAAA;UAEtBxE,MAAM,CAACyD,gBAAgB,CAACnE,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UAChD9E,MAAM,EAAA0F,qBAAA,GAACjC,gBAAgB,CAACsB,IAAI,CAACsB,KAAK,cAAAX,qBAAA,uBAA3BA,qBAAA,CAA6BY,OAAO,CAAC,CAACC,IAAI,CAAC/G,iBAAiB,CAAC8G,OAAO,CAAC;UAC5EtG,MAAM,CAAC5B,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACC,iBAAiB,CAAC,CAACvB,kBAAkB,CAAC;YAAC+B,KAAK,EAAE;UAAC,CAAC,CAAC;UACtFxG,MAAM,CAAC5B,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACG,cAAc,CAAC,CAACzB,kBAAkB,CAAC;YACtEgC,OAAO,EAAE,CAACR,2BAAU,CAACvB,GAAG;UAC1B,CAAC,CAAC;UACF1E,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACqG,eAAe,CAAC,CAAC,CAAC;UACxC1G,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACsG,uBAAuB,CAAC,CAAC,EAAE;YAC/CjC,GAAG,EAAE1F,sBAAsB;YAC3B2F,MAAM,EAAE,MAAM;YACdpF,IAAI,EAAE;cACJqH,WAAW,EAAE,iBAAiB;cAC9BC,gBAAgB,EAAEZ,2BAAU,CAACvB,GAAG;cAChCoC,SAAS,EAAE,QAAQ;cACnBC,OAAO,EAAE;YACX;UACF,CAAC,CAAC;UAEF/G,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACsG,uBAAuB,CAAC,CAAC,EAAE;YAC/CjC,GAAG,EAAE1F,sBAAsB;YAC3B2F,MAAM,EAAE,MAAM;YACdpF,IAAI,EAAE;cACJqH,WAAW,EAAE,eAAe;cAC5BC,gBAAgB,EAAEZ,2BAAU,CAACvB,GAAG;cAChCoC,SAAS,EAAE,QAAQ;cACnBC,OAAO,EAAE;YACX;UACF,CAAC,CAAC;UAEF/G,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAACR,MAAM,CAAC,CAACgH,OAAO,CAAC,CAAC,CAAC;UACjD9E,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACsI,WAAW,CAAC,CAAC9B,OAAO,CAAC,cAAc,CAAC;QAAC;QAAA;UAAA,OAAAe,SAAA,CAAAN,IAAA;MAAA;IAAA,GAAAE,QAAA;EAAA,CACxE,GAAC;EAEFzC,EAAE,CAAC,+CAA+C,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAA2D,SAAA;IAAA,IAAAC,sBAAA;IAAA,IAAAtB,sBAAA,EAAAuB,UAAA,EAAAzD,gBAAA;IAAA,OAAAL,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAyD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAvD,IAAA,GAAAuD,SAAA,CAAAtD,IAAA;QAAA;UAC5C6B,sBAAsB,GAAwB;YAClDrG,UAAU,EAAE,GAAG;YACfC,IAAI,EAAEC;UACR,CAAC;UAEDlB,aAAa,CAAC,QAAQ,CAAC,GAAGyC,wCAAuB;UACjD3C,KAAK,CAACiC,OAAO,CAACyF,iBAAiB,CAACH,sBAAsB,CAAC;UAEvDvH,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACkC,WAAW,CAACL,iBAAiB,CAAC,wBAAwB,CAAC;UAC3EoB,UAAU,GAAG/H,IAAI,CAACC,KAAK,CAACiI,eAAG,EAAE,MAAM,CAAC;UAAAD,SAAA,CAAAtD,IAAA;UAAA,OACXxF,aAAa,CAAC8H,kBAAkB,CAAC,cAAc,CAAC;QAAA;UAAzE3C,gBAAgB,GAAA2D,SAAA,CAAA5C,IAAA;UAEtBxE,MAAM,CAACyD,gBAAgB,CAACnE,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UAChD9E,MAAM,EAAAiH,sBAAA,GAACxD,gBAAgB,CAACsB,IAAI,CAACsB,KAAK,cAAAY,sBAAA,uBAA3BA,sBAAA,CAA6BX,OAAO,CAAC,CAACC,IAAI,CAAC/G,iBAAiB,CAAC8G,OAAO,CAAC;UAC5EtG,MAAM,CAACkH,UAAU,CAAC,CAAChC,GAAG,CAACoC,cAAc,CAAC,sCAAsC,EAAE;YAC5EjC,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC,CAAC;UAEF3E,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvCC,GAAG,EAAE1F,sBAAsB;YAC3B2F,MAAM,EAAEC,mBAAY,CAAC2C,IAAI;YACzBhI,IAAI,EAAE;cACJqH,WAAW,EAAE,wBAAwB;cACrCC,gBAAgB,EAAE9F,wCAAuB,CAAC,CAAC,CAAC,CAAC8F,gBAAgB;cAC7DC,SAAS,EAAE,QAAQ;cACnBC,OAAO,EAAES;YACX;UACF,CAAC,CAAC;UAEFxH,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAACR,MAAM,CAAC,CAACgH,OAAO,CAAC,CAAC,CAAC;UACjD9E,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAACsI,WAAW,CAAC,CAAC9B,OAAO,CAAC,cAAc,CAAC;QAAC;QAAA;UAAA,OAAAsC,SAAA,CAAA7B,IAAA;MAAA;IAAA,GAAAyB,QAAA;EAAA,CACxE,GAAC;EAEFhE,EAAE,CAAC,8CAA8C,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAoE,SAAA;IAAA,IAAAC,MAAA,EAAAjE,gBAAA;IAAA,OAAAL,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAiE,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA/D,IAAA,GAAA+D,SAAA,CAAA9D,IAAA;QAAA;UACjDxF,aAAa,CAAC,QAAQ,CAAC,GAAGmB,2CAA0B,CAACC,MAAM;UAC3DtB,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACC,iBAAiB,CAACF,iBAAiB,CAAC,CAACG,2BAAU,CAAC,CAAC;UAC/E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACG,cAAc,CAACJ,iBAAiB,CAACG,2BAAU,CAAC;UACpEyB,MAAM,GAAGvI,IAAI,CAACC,KAAK,CAACiI,eAAG,EAAE,MAAM,CAAC;UAAAO,SAAA,CAAA9D,IAAA;UAAA,OACPxF,aAAa,CAAC8H,kBAAkB,CAAC5G,iBAAiB,CAACoH,WAAW,CAAC;QAAA;UAAxFnD,gBAAgB,GAAAmE,SAAA,CAAApD,IAAA;UAEtBxE,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAAC6E,GAAG,CAACC,UAAU,CAAC,CAAC;UACtCnF,MAAM,CAACyD,gBAAgB,CAACnE,UAAU,CAAC,CAACiH,IAAI,CAAC,GAAG,CAAC;UAC7CvG,MAAM,CAAC0H,MAAM,CAAC,CAACjD,kBAAkB,eAAAjG,MAAA,CACjBgB,iBAAiB,CAACoH,WAAW,uBAC3C;YACEvB,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CACF,CAAC;UACD3E,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAAC,CAACwG,OAAO,CAACrF,2CAA0B,CAACC,MAAM,CAAC;QAAC;QAAA;UAAA,OAAAkI,SAAA,CAAArC,IAAA;MAAA;IAAA,GAAAkC,QAAA;EAAA,CAC5E,GAAC;EAEFzE,EAAE,CAAC,8CAA8C,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAwE,SAAA;IAAA,IAAAC,aAAA,EAAAC,OAAA,EAAAtE,gBAAA;IAAA,OAAAL,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAsE,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAApE,IAAA,GAAAoE,SAAA,CAAAnE,IAAA;QAAA;UAC3CgE,aAAa,GAAG;YACpBzC,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC;UAEDrG,aAAa,CAAC,QAAQ,CAAC,GAAGyC,wCAAuB;UACjD3C,KAAK,CAACiC,OAAO,CAAC6H,iBAAiB,CAAC7I,sBAAsB,CAAC;UACvDjB,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACC,iBAAiB,CAACF,iBAAiB,CAAC,CAACG,2BAAU,CAAC,CAAC;UAC/E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACG,cAAc,CAACJ,iBAAiB,CAACG,2BAAU,CAAC;UAC1E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACkC,WAAW,CAACpC,qBAAqB,CAAC,sBAAsB,CAAC;UAC7EgE,OAAO,GAAG5I,IAAI,CAACC,KAAK,CAACiI,eAAG,EAAE,MAAM,CAAC;UAAAY,SAAA,CAAAnE,IAAA;UAAA,OACRxF,aAAa,CAAC8H,kBAAkB,CAAC,WAAW,CAAC;QAAA;UAAtE3C,gBAAgB,GAAAwE,SAAA,CAAAzD,IAAA;UAEtBxE,MAAM,CAACyD,gBAAgB,CAACnE,UAAU,CAAC,CAACiH,IAAI,CAAC,GAAG,CAAC;UAC7CvG,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvCC,GAAG,EAAE1F,sBAAsB;YAC3B2F,MAAM,EAAEC,mBAAY,CAAC2C,IAAI;YACzBhI,IAAI,EAAE;cACJqH,WAAW,EAAE,sBAAsB;cACnCC,gBAAgB,EAAE,2DAA2D;cAC7EC,SAAS,EAAE,QAAQ;cACnBC,OAAO,EAAE;YACX;UACF,CAAC,CAAC;UACF/G,MAAM,CAAC+H,OAAO,CAAC,CAACrB,eAAe,CAAC,CAAC,CAAC;UAClC1G,MAAM,CAAC+H,OAAO,CAAC,CAACpB,uBAAuB,CAAC,CAAC,EAAE,iCAAiC,EAAEmB,aAAa,CAAC;UAC5F9H,MAAM,CAAC+H,OAAO,CAAC,CAACpB,uBAAuB,CACrC,CAAC,EACD,sDAAsD,EACtDmB,aACF,CAAC;UAED9H,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAAC,CAACwG,OAAO,CAAC/D,wCAAuB,CAAC;UAChEf,MAAM,CAACd,0BAA0B,CAAC,CAACuF,kBAAkB,CAACpF,sBAAsB,EAAEyI,aAAa,CAAC;QAAC;QAAA;UAAA,OAAAG,SAAA,CAAA1C,IAAA;MAAA;IAAA,GAAAsC,QAAA;EAAA,CAC9F,GAAC;EAEF7E,EAAE,CAAC,8CAA8C,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAA8E,SAAA;IAAA,IAAAL,aAAA,EAAAC,OAAA,EAAAtE,gBAAA;IAAA,OAAAL,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAA0E,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAxE,IAAA,GAAAwE,SAAA,CAAAvE,IAAA;QAAA;UAC3CgE,aAAa,GAAG;YACpBzC,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC;UAEDrG,aAAa,CAAC,QAAQ,CAAC,GAAGyC,wCAAuB;UACjD3C,KAAK,CAACiC,OAAO,CAAC6H,iBAAiB,CAAC7I,sBAAsB,CAAC;UACvDjB,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACC,iBAAiB,CAACF,iBAAiB,CAAC,CAACG,2BAAU,CAAC,CAAC;UAC/E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACG,cAAc,CAACJ,iBAAiB,CAACG,2BAAU,CAAC;UACpE8B,OAAO,GAAG5I,IAAI,CAACC,KAAK,CAACiI,eAAG,EAAE,MAAM,CAAC;UAAAgB,SAAA,CAAAvE,IAAA;UAAA,OACRxF,aAAa,CAACgK,kBAAkB,CAAC9I,iBAAiB,CAAC8G,OAAO,CAAC;QAAA;UAApF7C,gBAAgB,GAAA4E,SAAA,CAAA7D,IAAA;UAEtBxE,MAAM,CAACyD,gBAAgB,CAACnE,UAAU,CAAC,CAACiH,IAAI,CAAC,GAAG,CAAC;UAC7CvG,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvCE,MAAM,EAAEC,mBAAY,CAAC2D,MAAM;YAC3B7D,GAAG,KAAAlG,MAAA,CAAKQ,sBAAsB,OAAAR,MAAA,CAAIgB,iBAAiB,CAAC8G,OAAO;UAC7D,CAAC,CAAC;UACFtG,MAAM,CAAC+H,OAAO,CAAC,CAACrB,eAAe,CAAC,CAAC,CAAC;UAClC1G,MAAM,CAAC+H,OAAO,CAAC,CAACpB,uBAAuB,CACrC,CAAC,oCAAAnI,MAAA,CACiCgB,iBAAiB,CAAC8G,OAAO,GAC3DwB,aACF,CAAC;UACD9H,MAAM,CAAC+H,OAAO,CAAC,CAACpB,uBAAuB,CACrC,CAAC,EACD,sDAAsD,EACtDmB,aACF,CAAC;UAED9H,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAAC,CAACwG,OAAO,CAAC/D,wCAAuB,CAAC;UAChEf,MAAM,CAACd,0BAA0B,CAAC,CAACuF,kBAAkB,CAACpF,sBAAsB,EAAEyI,aAAa,CAAC;QAAC;QAAA;UAAA,OAAAO,SAAA,CAAA9C,IAAA;MAAA;IAAA,GAAA4C,QAAA;EAAA,CAC9F,GAAC;EAEFnF,EAAE,CAAC,sCAAsC,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAmF,SAAA;IAAA,IAAA7C,sBAAA,EAAA8C,QAAA;IAAA,OAAArF,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAgF,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA9E,IAAA,GAAA8E,SAAA,CAAA7E,IAAA;QAAA;UACnC6B,sBAAsB,GAAwB;YAClDrG,UAAU,EAAE;UACd,CAAC;UAEDhB,aAAa,CAAC,QAAQ,CAAC,GAAG,CAACyC,wCAAuB,CAAC,CAAC,CAAC,CAAC;UACtD3C,KAAK,CAACiC,OAAO,CAACyF,iBAAiB,CAACH,sBAAsB,CAAC;UAACgD,SAAA,CAAA7E,IAAA;UAAA,OACjCxF,aAAa,CAACgK,kBAAkB,CAACvH,wCAAuB,CAAC,CAAC,CAAC,CAACuF,OAAO,CAAC;QAAA;UAArFmC,QAAQ,GAAAE,SAAA,CAAAnE,IAAA;UAEdxE,MAAM,CAACyI,QAAQ,CAACnJ,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UACxC9E,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvCC,GAAG,KAAAlG,MAAA,CAAKQ,sBAAsB,OAAAR,MAAA,CAAIuC,wCAAuB,CAAC,CAAC,CAAC,CAACuF,OAAO,CAAE;YACtE3B,MAAM,EAAEC,mBAAY,CAAC2D;UACvB,CAAC,CAAC;UACFvI,MAAM,CAAC1B,aAAa,CAAC,QAAQ,CAAC,CAAC,CAACwG,OAAO,CAAC,EAAE,CAAC;QAAC;QAAA;UAAA,OAAA6D,SAAA,CAAApD,IAAA;MAAA;IAAA,GAAAiD,QAAA;EAAA,CAC7C,GAAC;EAEFxF,EAAE,CAAC,yCAAyC,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAuF,SAAA;IAAA,IAAAC,iBAAA,EAAAC,oBAAA;IAAA,IAAAC,mBAAA,EAAApD,sBAAA,EAAA+B,MAAA,EAAAsB,OAAA,EAAAC,GAAA,EAAAC,MAAA;IAAA,OAAA9F,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAyF,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAvF,IAAA,GAAAuF,SAAA,CAAAtF,IAAA;QAAA;UACtCiF,mBAAmB,GAAG3G,2CAA0B,CAACvB,QAAQ,CAAC,CAAC,CAAC;UAC5D8E,sBAAsB,GAAwB;YAClDrG,UAAU,EAAE,GAAG;YACfC,IAAI,EAAEwJ;UACR,CAAC;UAED3K,KAAK,CAACiC,OAAO,CAACyF,iBAAiB,CAACH,sBAAsB,CAAC;UACvDvH,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACkC,WAAW,CAACL,iBAAiB,CAAC,wBAAwB,CAAC;UAC3E4B,MAAM,GAAGvI,IAAI,CAACC,KAAK,CAACiI,eAAG,EAAE,MAAM,CAAC;UAEtC/I,aAAa,CAAC,QAAQ,CAAC,GAAGyC,wCAAuB;UACjDzC,aAAa,CAAC,kBAAkB,CAAC,GAAGyC,wCAAuB,CAAC,CAAC,CAAC,CAAC8F,gBAAgB;UAEzEmC,OAAO,GAAG3G,mCAAkB,CAACgH,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;UAE7CL,OAAO,CAACtJ,MAAM,GAAG,EAAE;UAAC0J,SAAA,CAAAtF,IAAA;UAAA,OAEexF,aAAa,CAACgL,aAAa,CAACN,OAAO,CAAC;QAAA;UAAjEC,GAAoB,GAAAG,SAAA,CAAA5E,IAAA;UAE1BxE,MAAM,CAACiJ,GAAG,CAAC3J,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UACnC9E,MAAM,EAAA6I,iBAAA,GAACI,GAAG,CAAClE,IAAI,CAACiE,OAAO,cAAAH,iBAAA,uBAAhBA,iBAAA,CAAkBU,SAAS,CAAC,CAAChD,IAAI,CAACwC,mBAAmB,CAACQ,SAAS,CAAC;UACvEvJ,MAAM,CAAC0H,MAAM,CAAC,CAACxC,GAAG,CAACoC,cAAc,CAAC,oCAAoC,EAAE;YACtEjC,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC,CAAC;UAEF3E,MAAM,CAAC0H,MAAM,CAAC,CAACxC,GAAG,CAACoC,cAAc,CAAC,oCAAoC,EAAE;YACtEjC,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC,CAAC;UACF3E,MAAM,CAAC0H,MAAM,CAAC,CAACxC,GAAG,CAACoC,cAAc,8BAAA9I,MAAA,CAA8BgL,8BAAkB,GAAI;YACnFnE,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC,CAAC;UAEF3E,MAAM,CAAC5B,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACkC,WAAW,CAAC,CAAC1B,kBAAkB,CAC9D1D,wCAAuB,CAAC,CAAC,CAAC,CAAC8F,gBAAgB,EAC3CmC,OAAO,CAACpC,WACV,CAAC;UAED5G,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvClF,IAAI,EAAA3B,aAAA,CAAAA,aAAA,KACCoL,OAAO;cACVpC,WAAW,EAAE,wBAAwB;cACrClH,MAAM,EAAE,CAACqB,wCAAuB,CAAC,CAAC,CAAC,CAACuF,OAAO,CAAC;cAC5CS,OAAO,EAAES;YAAe,EACzB;YACD9C,GAAG,EAAEnG,iBAAiB;YACtBoG,MAAM,EAAEC,mBAAY,CAAC2C;UACvB,CAAC,CAAC;UAEFG,MAAM,CAACpH,SAAS,CAAC,CAAC;;UAElB;UAAA8I,SAAA,CAAAtF,IAAA;UAAA,OACsCxF,aAAa,CAACgL,aAAa,CAACN,OAAO,CAAC;QAAA;UAApEE,MAAuB,GAAAE,SAAA,CAAA5E,IAAA;UAE7BxE,MAAM,EAAA8I,oBAAA,GAACI,MAAM,CAACnE,IAAI,CAACiE,OAAO,cAAAF,oBAAA,uBAAnBA,oBAAA,CAAqBS,SAAS,CAAC,CAAChD,IAAI,CAACwC,mBAAmB,CAACQ,SAAS,CAAC;UAC1EvJ,MAAM,CAAC0H,MAAM,CAAC,CAACxC,GAAG,CAACoC,cAAc,8BAAA9I,MAAA,CAA8BgL,8BAAkB,GAAI;YACnFnE,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC,CAAC;QAAC;QAAA;UAAA,OAAAyE,SAAA,CAAA7D,IAAA;MAAA;IAAA,GAAAqD,QAAA;EAAA,CACJ,GAAC;EAEF5F,EAAE,CAAC,oDAAoD,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAoG,SAAA;IAAA,IAAAC,kBAAA;IAAA,IAAAX,mBAAA,EAAAY,kCAAA,EAAAC,6BAAA,EAAAZ,OAAA,EAAAC,GAAA;IAAA,OAAA7F,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAmG,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAjG,IAAA,GAAAiG,SAAA,CAAAhG,IAAA;QAAA;UACjDiF,mBAAmB,GAAGtJ,2CAA0B,CAACoB,QAAQ,CAAC,CAAC,CAAC;UAElEvC,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE;UAC5BA,aAAa,CAAC,eAAe,CAAC,GAAG,EAAE;UACnCA,aAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE;UAC9BqL,kCAAkC,GAAwB;YAC9DrK,UAAU,EAAE,GAAG;YACfC,IAAI,EAAEC;UACR,CAAC;UACKoK,6BAA6B,GAAwB;YACzDtK,UAAU,EAAE,GAAG;YACfC,IAAI,EAAEwJ;UACR,CAAC;UAED3K,KAAK,CAACiC,OAAO,CACV0D,qBAAqB,CAAC4F,kCAAkC,CAAC,CACzD5F,qBAAqB,CAAC6F,6BAA6B,CAAC;UACvDxL,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACC,iBAAiB,CAACF,iBAAiB,CAAC,CAACG,2BAAU,CAAC,CAAC;UAC/E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACG,cAAc,CAACJ,iBAAiB,CAACG,2BAAU,CAAC;UAC1E7H,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACkC,WAAW,CAACpC,qBAAqB,CAAC,sBAAsB,CAAC;UAE7EiF,OAAO,GAAG;YACde,WAAW,EAAE;UACf,CAAC;UAAAD,SAAA,CAAAhG,IAAA;UAAA,OAEiBxF,aAAa,CAACgL,aAAa,CAACN,OAAO,CAAC;QAAA;UAAhDC,GAAG,GAAAa,SAAA,CAAAtF,IAAA;UAETxE,MAAM,CAACiJ,GAAG,CAAC3J,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UAEnC9E,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACqG,eAAe,CAAC,CAAC,CAAC;UACxC1G,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACsG,uBAAuB,CAAC,CAAC,EAAE;YAC/CpH,IAAI,EAAE;cACJqH,WAAW,EAAE,sBAAsB;cACnCC,gBAAgB,EAAEZ,2BAAU,CAACvB,GAAG;cAChCoC,SAAS,EAAE,QAAQ;cACnBC,OAAO,EAAES;YACX,CAAC;YACD9C,GAAG,EAAE1F,sBAAsB;YAC3B2F,MAAM,EAAEC,mBAAY,CAAC2C;UACvB,CAAC,CAAC;UACFvH,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACsG,uBAAuB,CAAC,CAAC,EAAE;YAC/CpH,IAAI,EAAE;cACJwK,WAAW,EAAE,QAAQ;cACrBlD,gBAAgB,EAAEZ,2BAAU,CAACvB,GAAG;cAChChF,MAAM,EAAE,CAAC,sCAAsC,CAAC;cAChDqH,OAAO,EAAES;YACX,CAAC;YACD7C,MAAM,EAAEC,mBAAY,CAAC2C,IAAI;YACzB7C,GAAG,EAAEnG;UACP,CAAC,CAAC;UACFyB,MAAM,CAAC5B,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACC,iBAAiB,CAAC,CAACvB,kBAAkB,CAAC;YAAC+B,KAAK,EAAE;UAAC,CAAC,CAAC;UACtFxG,MAAM,CAAC5B,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAAC8B,GAAG,CAACG,cAAc,CAAC,CAACzB,kBAAkB,CAAC;YACtEgC,OAAO,EAAE,CAACR,2BAAU,CAACvB,GAAG;UAC1B,CAAC,CAAC;UACF1E,MAAM,EAAA0J,kBAAA,GAACT,GAAG,CAAClE,IAAI,CAACiE,OAAO,cAAAU,kBAAA,uBAAhBA,kBAAA,CAAkBH,SAAS,CAAC,CAAChD,IAAI,CAACwC,mBAAmB,CAACQ,SAAS,CAAC;QAAC;QAAA;UAAA,OAAAO,SAAA,CAAAvE,IAAA;MAAA;IAAA,GAAAkE,QAAA;EAAA,CACzE,GAAC;EAEFzG,EAAE,CAAC,gDAAgD,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAA2G,UAAA;IAAA,IAAAC,kBAAA;IAAA,IAAAlB,mBAAA,EAAApD,sBAAA,EAAAuE,2BAAA,EAAAlB,OAAA,EAAAC,GAAA;IAAA,OAAA7F,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAyG,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAvG,IAAA,GAAAuG,UAAA,CAAAtG,IAAA;QAAA;UAC7CiF,mBAAmB,GAAGtJ,2CAA0B,CAACoB,QAAQ,CAAC,CAAC,CAAC;UAC5D8E,sBAAsB,GAAwB;YAClDrG,UAAU,EAAE,GAAG;YACfC,IAAI,EAAEwJ;UACR,CAAC;UACKmB,2BAA2B,GAAwB;YACvD5K,UAAU,EAAE,GAAG;YACfC,IAAI,EAAEE,2CAA0B,CAACC,MAAM,CAAC,CAAC;UAC3C,CAAC;UAEDtB,KAAK,CAACiC,OAAO,CACV0D,qBAAqB,CAACmG,2BAA2B,CAAC,CAClDnG,qBAAqB,CAAC4B,sBAAsB,CAAC;UAEhDvH,KAAK,CAACK,QAAQ,CAACwF,UAAU,CAACkC,WAAW,CAACpC,qBAAqB,CAAC,sBAAsB,CAAC;UAEnFzF,aAAa,CAAC,QAAQ,CAAC,GAAG,EAAE;UAC5BA,aAAa,CAAC,kBAAkB,CAAC,GAAGmB,2CAA0B,CAACC,MAAM,CAAC,CAAC,CAAC,CAACmH,gBAAgB;UAEnFmC,OAAO,GAAG;YACde,WAAW,EAAE;UACf,CAAC;UAEDf,OAAO,CAACtJ,MAAM,GAAG,EAAE;UAAC0K,UAAA,CAAAtG,IAAA;UAAA,OAEaxF,aAAa,CAACgL,aAAa,CAACN,OAAO,CAAC;QAAA;UAAjEC,GAAoB,GAAAmB,UAAA,CAAA5F,IAAA;UAExBxE,MAAM,CAACiJ,GAAG,CAAC3J,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UACnC9E,MAAM,CAACiJ,GAAG,CAAClE,IAAI,CAACrC,KAAK,CAAC,CAACoC,OAAO,CAAC,8CAA8C,CAAC;UAE9E1G,KAAK,CAACK,QAAQ,CAAC0F,GAAG,CAACC,MAAM,CAACL,qBAAqB,CAACM,gCAAe,CAAC;UAChE2E,OAAO,CAACO,SAAS,GAAGR,mBAAmB,CAACQ,SAAS;UAACa,UAAA,CAAAtG,IAAA;UAAA,OAEtCxF,aAAa,CAACgL,aAAa,CAACN,OAAO,CAAC;QAAA;UAAhDC,GAAG,GAAAmB,UAAA,CAAA5F,IAAA;UACHxE,MAAM,CAACiJ,GAAG,CAAC3J,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UACnC9E,MAAM,EAAAiK,kBAAA,GAAChB,GAAG,CAAClE,IAAI,CAACiE,OAAO,cAAAiB,kBAAA,uBAAhBA,kBAAA,CAAkBV,SAAS,CAAC,CAAChD,IAAI,CAACwC,mBAAmB,CAACQ,SAAS,CAAC;UAEvEvJ,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACqG,eAAe,CAAC,CAAC,CAAC;UACxC1G,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACsG,uBAAuB,CAAC,CAAC,EAAE;YAC/ChC,MAAM,EAAEC,mBAAY,CAAC2C,IAAI;YACzB7C,GAAG,EAAE1F,sBAAsB;YAC3BO,IAAI,EAAE;cACJqH,WAAW,EAAE,sBAAsB;cACnCE,SAAS,EAAE,QAAQ;cACnBD,gBAAgB,EAAEpH,2CAA0B,CAACC,MAAM,CAAC,CAAC,CAAC,CAACmH,gBAAgB;cACvEE,OAAO,EAAES;YACX;UACF,CAAC,CAAC;UACFxH,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACsG,uBAAuB,CAAC,CAAC,EAAE;YAC/ChC,MAAM,EAAEC,mBAAY,CAAC2C,IAAI;YACzB7C,GAAG,EAAEnG,iBAAiB;YACtBgB,IAAI,EAAE;cACJgK,SAAS,EAAER,mBAAmB,CAACQ,SAAS;cACxCQ,WAAW,EAAE,OAAO;cACpBlD,gBAAgB,EAAEpH,2CAA0B,CAACC,MAAM,CAAC,CAAC,CAAC,CAACmH,gBAAgB;cACvEE,OAAO,EAAES,2BAAe;cACxB9H,MAAM,EAAE,CAAC,sCAAsC;YACjD;UACF,CAAC,CAAC;QAAC;QAAA;UAAA,OAAA0K,UAAA,CAAA7E,IAAA;MAAA;IAAA,GAAAyE,SAAA;EAAA,CACJ,GAAC;EAEFhH,EAAE,CAAC,wCAAwC,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAgH,UAAA;IAAA,IAAArB,OAAA,EAAAC,GAAA;IAAA,OAAA7F,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAA4G,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAA1G,IAAA,GAAA0G,UAAA,CAAAzG,IAAA;QAAA;UAC3C1F,KAAK,CAACiC,OAAO,CAAC6H,iBAAiB,CAAC7I,sBAAsB,CAAC;UAEvDf,aAAa,CAAC,QAAQ,CAAC,GAAGyC,wCAAuB,CAACsI,KAAK,CAAC,CAAC;UACzD/K,aAAa,CAAC,kBAAkB,CAAC,GAAGmB,2CAA0B,CAACC,MAAM,CAAC,CAAC,CAAC,CAACmH,gBAAgB;UACnFmC,OAAO,GAAG;YACde,WAAW,EAAE,OAAO;YACpBR,SAAS,EAAE;UACb,CAAC;UAAAgB,UAAA,CAAAzG,IAAA;UAAA,OAEkCxF,aAAa,CAACgL,aAAa,CAACN,OAAO,CAAC;QAAA;UAAjEC,GAAoB,GAAAsB,UAAA,CAAA/F,IAAA;UAE1BxE,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvCC,GAAG,EAAEnG,iBAAiB;YACtBoG,MAAM,EAAEC,mBAAY,CAAC2C,IAAI;YACzBhI,IAAI,EAAA3B,aAAA,CAAAA,aAAA,KACCoL,OAAO;cACVnC,gBAAgB,EAAEpH,2CAA0B,CAACC,MAAM,CAAC,CAAC,CAAC,CAACmH,gBAAgB;cACvEnH,MAAM,EAAE,CAACqB,wCAAuB,CAAC,CAAC,CAAC,CAACuF,OAAO,CAAC;cAC5CS,OAAO,EAAES;YAAe;UAE5B,CAAC,CAAC;UACFxH,MAAM,CAACd,0BAA0B,CAAC,CAACuF,kBAAkB,CAACpF,sBAAsB,EAAE;YAC5EgG,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC,CAAC;UACF3E,MAAM,CAACiJ,GAAG,CAAC3J,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;QAAC;QAAA;UAAA,OAAAyF,UAAA,CAAAhF,IAAA;MAAA;IAAA,GAAA8E,SAAA;EAAA,CACrC,GAAC;EAEFrH,EAAE,CAAC,iCAAiC,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAmH,UAAA;IAAA,IAAA7E,sBAAA,EAAA8C,QAAA;IAAA,OAAArF,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAA+G,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAA7G,IAAA,GAAA6G,UAAA,CAAA5G,IAAA;QAAA;UAC9B6B,sBAAsB,GAAwB;YAClDrG,UAAU,EAAE;UACd,CAAC;UAEDhB,aAAa,CAAC,UAAU,CAAC,GAAG,CAACwC,mCAAkB,CAAC,CAAC,CAAC,CAAC;UACnD1C,KAAK,CAACiC,OAAO,CAACyF,iBAAiB,CAACH,sBAAsB,CAAC;UAAC+E,UAAA,CAAA5G,IAAA;UAAA,OACjCxF,aAAa,CAACqM,aAAa,CAAC7J,mCAAkB,CAAC,CAAC,CAAC,CAACyI,SAAS,CAAC;QAAA;UAA7Ed,QAAQ,GAAAiC,UAAA,CAAAlG,IAAA;UAEdxE,MAAM,CAACyI,QAAQ,CAACnJ,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UACxC9E,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvCC,GAAG,KAAAlG,MAAA,CAAKD,iBAAiB,OAAAC,MAAA,CAAIsC,mCAAkB,CAAC,CAAC,CAAC,CAACyI,SAAS,CAAE;YAC9D5E,MAAM,EAAEC,mBAAY,CAAC2D;UACvB,CAAC,CAAC;UACFvI,MAAM,CAAC1B,aAAa,CAAC,UAAU,CAAC,CAAC,CAACwG,OAAO,CAAC,EAAE,CAAC;QAAC;QAAA;UAAA,OAAA4F,UAAA,CAAAnF,IAAA;MAAA;IAAA,GAAAiF,SAAA;EAAA,CAC/C,GAAC;EAEFxH,EAAE,CAAC,wCAAwC,mBAAAG,kBAAA,CAAA9G,OAAA,gBAAA+G,YAAA,CAAA/G,OAAA,CAAAgH,IAAA,CAAE,SAAAuH,UAAA;IAAA,IAAAnC,QAAA;IAAA,OAAArF,YAAA,CAAA/G,OAAA,CAAAqH,IAAA,UAAAmH,WAAAC,UAAA;MAAA,kBAAAA,UAAA,CAAAjH,IAAA,GAAAiH,UAAA,CAAAhH,IAAA;QAAA;UAC3CxF,aAAa,CAAC,UAAU,CAAC,GAAGwC,mCAAkB;UAE9C1C,KAAK,CAACiC,OAAO,CAAC6H,iBAAiB,CAAC7I,sBAAsB,CAAC;UAACyL,UAAA,CAAAhH,IAAA;UAAA,OACjCxF,aAAa,CAACqM,aAAa,CAAC7J,mCAAkB,CAAC,CAAC,CAAC,CAACyI,SAAS,CAAC;QAAA;UAA7Ed,QAAQ,GAAAqC,UAAA,CAAAtG,IAAA;UAEdxE,MAAM,CAACyI,QAAQ,CAACnJ,UAAU,CAAC,CAACwF,OAAO,CAAC,GAAG,CAAC;UACxC9E,MAAM,CAAC5B,KAAK,CAACiC,OAAO,CAAC,CAACoE,kBAAkB,CAAC;YACvCC,GAAG,KAAAlG,MAAA,CAAKD,iBAAiB,OAAAC,MAAA,CAAIsC,mCAAkB,CAAC,CAAC,CAAC,CAACyI,SAAS,CAAE;YAC9D5E,MAAM,EAAEC,mBAAY,CAAC2D;UACvB,CAAC,CAAC;UAEFvI,MAAM,CAACd,0BAA0B,CAAC,CAACuF,kBAAkB,CAACpF,sBAAsB,EAAE;YAC5EgG,IAAI,EAAEC,yBAAa;YACnBX,MAAM,EAAE;UACV,CAAC,CAAC;UAEF3E,MAAM,CAAC1B,aAAa,CAAC,UAAU,CAAC,CAAC,CAACwG,OAAO,CAAChE,mCAAkB,CAAC;QAAC;QAAA;UAAA,OAAAgK,UAAA,CAAAvF,IAAA;MAAA;IAAA,GAAAqF,SAAA;EAAA,CAC/D,GAAC;AACJ,CAAC,CAAC"}